在IDOC中用段=" 1"替换段。

2020-09-21 04:46发布

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

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


专家们,

在PO中,对于IDOC映射,我们需要为Segment,begin和IDOC传递" 1"。 我只需要通过Java映射进行传递,仅需要进行更改,即segment和IDOC的值为1。我知道我们可以进行一对一的映射,但是我们混杂了多个具有映射的段。 因此尝试了如下所示的java映射,但无法正常工作。 在这里可以帮忙。


导入 java.io 。*;
导入com.sap.aii .mapping.api。*;
公共类WellformedXML_JavaMapping扩展AbstractTransformation {
@Override
public void transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)抛出StreamTransformationException {
试试{
InputStream inputstream = TransformationInput。 getInputPayload()。getInputStream();
OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream();

byte [] b =新的byte [inputstream.available()];
inputstream。 read(b);
字符串inputContent =新的String(b);

inputContent = inputContent.replaceAll(" SEGMENT"," SEGMENT ='1'");


> outputstream.write(inputContent.getBytes());
} catch(Exception exception){
getTrace()。addDebugMessage(exception.getMessage());
抛出新的StreamTransformationException(exception.toString() );
}
}
}

此致

Ram。

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

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


专家们,

在PO中,对于IDOC映射,我们需要为Segment,begin和IDOC传递" 1"。 我只需要通过Java映射进行传递,仅需要进行更改,即segment和IDOC的值为1。我知道我们可以进行一对一的映射,但是我们混杂了多个具有映射的段。 因此尝试了如下所示的java映射,但无法正常工作。 在这里可以帮忙。


导入 java.io 。*;
导入com.sap.aii .mapping.api。*;
公共类WellformedXML_JavaMapping扩展AbstractTransformation {
@Override
public void transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)抛出StreamTransformationException {
试试{
InputStream inputstream = TransformationInput。 getInputPayload()。getInputStream();
OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream();

byte [] b =新的byte [inputstream.available()];
inputstream。 read(b);
字符串inputContent =新的String(b);

inputContent = inputContent.replaceAll(" SEGMENT"," SEGMENT ='1'");


> outputstream.write(inputContent.getBytes());
} catch(Exception exception){
getTrace()。addDebugMessage(exception.getMessage());
抛出新的StreamTransformationException(exception.toString() );
}
}
}

此致

Ram。

付费偷看设置
发送
3条回答
Climb_Ma
1楼 · 2020-09-21 05:11.采纳回答

Evgeniy,

非常感谢您的工作。

此致

维杰。

樱桃小丸子0093
2楼-- · 2020-09-21 05:07

嗨,维杰!

乍一看很难说代码出了什么问题。 这是我的班级在做的事情:

公共类StringReplacer扩展AbstractTransformation {
 @Override
 公共无效的transform(TransformationInput in,TransformationOutput out)抛出StreamTransformationException {
 executeMapping(in.getInputPayload()。getInputStream(),out.getOutputPayload()。getOutputStream());
 }

 public void executeMapping(InputStream is,OutputStream os)引发StreamTransformationException {
 尝试{
 byte [] payloadBytes = getByteArrayFromInputStream(is);
 字符串有效负载字符串=新的字符串(payloadBytes," UTF-8");
 payloadString = payloadString.replaceAll(" SEGMENT"," SEGMENT =" \" 1"");
 os.write(payloadString.getBytes(" UTF-8"));
 }
 catch(例外e){
 抛出新的StreamTransformationException(e.getMessage());
 }
 }

 public byte [] getByteArrayFromInputStream(InputStream is)引发IOException {
 ByteArrayOutputStream缓冲区= new ByteArrayOutputStream();
 int nRead;
 字节[]数据=新字节[16384];
 而((nRead = is.read(data,0,data.length))!= -1)
   buffer.write(data,0,nRead);
 buffer.flush();
 is.close();
 返回buffer.toByteArray();
 }
 } 

它按预期工作。

关于,Evgeniy。

嗨,维杰!

到底什么不起作用?

致谢,叶夫基尼。

一周热门 更多>