使用Java映射编辑文件内容

2020-08-27 17:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我们正在研究从文件...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我们正在研究从文件到SFTP的方案,该方案处理的是带有随机数据的平面文件。 我们不使用FCC,这是一个传递方案。 在文件发送到目标之前,我们正在使用Java映射来更改文件名。

但是,我们还有另一个要求,我们需要用另一个字符替换文件中特定位置(例如,文件开头的第13个位置)处的字符。 文件的其余内容将保持相同。是否有可能在Java映射中进行处理? 如果是这样,您能帮我提供代码吗? 我们正在使用SAP PO 7.4 SP17。

我不太熟悉Java代码并在论坛上进行了搜索,但是找不到任何合适的帖子。 下面给出的是我当前正在使用的代码:

公共类fileName扩展AbstractTransformation {public void transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)引发StreamTransformationException {

尝试{

InputStream inputstream = TransformationInput.getInputPayload()。getInputStream();

OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream();

Map mapParameters =(Map)TransformationInput.getInputHeader()。getAll();

String NewFileName ="";

mapParameters.put(DynamicConfigurationKey.create(" http://sap.com/ xi/XI/Dynamic ",StreamTransformationConstants.DYNAMIC_CONFIGURATION),"");

DynamicConfiguration conf =(DynamicConfiguration)mapParameters.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

DynamicConfigurationKey键= DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File "," FileName"); NewFileName = conf.get(key)+" .txt";

conf.put(key,NewFileName);

byte [] b =新的byte [inputstream.available()];

inputstream.read(b);

outputstream.write(b);

} catch(异常异常)

{getTrace()。addDebugMessage(exception.getMessage());

抛出新的StreamTransformationException(exception.toString());

}

}}

提前谢谢!

4条回答
葫芦娃快救爷爷
2020-08-27 18:33 .采纳回答

Hello Faisal,
在读取输入流之后,可以将以下代码片段添加到Java映射中。 您需要将输入流转换为String,然后在特定位置读取该字符的String内容-

在Java类中添加以下方法-

 public String convertStreamToString(  InputStream in)
       {
         StringBuffer sb = new StringBuffer();
         尝试
         {
         InputStreamReader isr =新的InputStreamReader(in);
         读者读者=
         新的BufferedReader(isr);
         诠释
         while(((ch = in.read())> -1){
             sb.append((char)ch);}
             reader.close();
         }
         catch(Exception异常)
         {
             exception.toString();
         }
         返回sb.toString();
         }


 

在您的transform方法中调用上述方法-如下所示

 String content = convertStreamToString(inputstream);
        //获取索引
         int index = 13;//您可以将此作为参数传递给Java映射
        //获取将替换现有角色的角色
         char replcch ='Y'; //特别注意带有备用字符的字符
                            //或带有转义序列
        //获取要检查的字符
          char existch ='P';
//您也可以将字符作为参数传递
 如果(string.charAt(index)== existch)//检查您的字符
    {
       内容= content.substring(0,索引)
               + replcch + str.substring(索引+1);
     }
  

在此之后将此字符串作为输出流传递-

尝试
         {
         TransformationOutput.getOutputPayload()。getOutputStream()。write(content.getBytes(" UTF-8"));
         }
         catch(异常e)
          {
             e.toString();
          } 

谢谢

Sugata

一周热门 更多>