SAP PO中图像文件的base64解码

2020-09-07 23:18发布

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

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


大家好,

我有一个来自Legacy-> PO-> ECC的场景。

旧版系统正在将编码格式的图像文件发送到PO,而PO必须对其进行解码,然后将原始图像文件发送到ECC。

您能帮助我如何实现这一目标。 基本上,我需要知道在这种情况下如何进行base64解码,并将解码后的原始文件发送到目标ECC。

致谢

马赫什语

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

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


大家好,

我有一个来自Legacy-> PO-> ECC的场景。

旧版系统正在将编码格式的图像文件发送到PO,而PO必须对其进行解码,然后将原始图像文件发送到ECC。

您能帮助我如何实现这一目标。 基本上,我需要知道在这种情况下如何进行base64解码,并将解码后的原始文件发送到目标ECC。

致谢

马赫什语

付费偷看设置
发送
4条回答
Haoba3210
1楼 · 2020-09-07 23:51.采纳回答

大家好,

我现在可以使用下面的代码将base64编码的图像字符串转换为图像转换。我最初尝试在没有父 node.So 我创建了一个父节点,然后在其中添加了子字段,如下所示:-

下面是有效的Java代码:-

import java.io.InputStream; 导入java.io.OutputStream; 导入java.util.Base64; 导入javax.xml.bind.DatatypeConverter; 导入javax.xml.parsers.DocumentBuilder; 导入javax.xml.parsers.DocumentBuilderFactory; 导入org.w3c.dom.Document; 导入org.w3c.dom.Element; 导入org.w3c.dom.Node; 导入org.w3c.dom.NodeList; 导入com.sap.aii.mapping.api.AbstractTransformation; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutput; 公共类Decoder_V2扩展AbstractTransformation {@Override public void transform(TransformationInput in,TransformationOutput out)抛出StreamTransformationException {字符串encodingString = null; try {//读取输入和输出有效载荷。 InputStream inputStream = in.getInputPayload()。getInputStream(); OutputStream outputStream = out.getOutputPayload()。getOutputStream(); //创建DOM树构建器工厂的新实例DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //创建新实例以从xml获取DOM文档。 DocumentBuilder builder = factory.newDocumentBuilder(); //从inputStream xml获取新的DOM文档。 文档doc = builder.parse(inputStream); NodeList子节点= doc.getElementsByTagName(" row"); for(int i = 0; i

txt文件中还有PFA代码。

decoder-v2.txt

bbpeas
2楼-- · 2020-09-07 23:29

嗨,Mahesh!

最直接的方法是使用Java映射(和Java功能)将base64字符串转换为二进制内容并将其发送到接收器系统。

另一种选择可能是使用由< a hraf=" https://people.sap.com/engswee.yeoh">英瑞Yeoh :

https://blogs.sap.com/2015/04/30/base64decodeconverter-base64-decoding-made-easy/

Evgeniy。

clever101
3楼-- · 2020-09-07 23:29

嗨,Mahesh,

您可以使用 Java映射 UDF 。 但是,如果需要将其发送到ECC,则在PO中对其进行解码的目的是什么?

您是否打算将其附加到SAP文档? 在这种情况下,最好的方法是通过代理将base64字符串发送到ECC并使用 ABAP 逻辑。

干杯!

Isuru

风早神人
4楼-- · 2020-09-07 23:39

大家好,

我正在使用以下代码,它将base64字符串转换为字节码,消息也已成功处理,带有接收器文件适配器的文件已发布到目标位置,但目标jpg文件为空。

我正在使用的

PFB代码:-

import java.io.InputStream; 导入java.io.OutputStream; 导入com.sap.aii.mapping.api.AbstractTransformation; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutput; 导入javax.xml.bind.DatatypeConverter; 导入javax.xml.parsers.DocumentBuilder; 导入javax.xml.parsers.DocumentBuilderFactory; 导入org.w3c.dom.Document; 导入org.w3c.dom.Node; 公共类Decoder扩展AbstractTransformation {@Override public void transform(TransformationInput in,TransformationOutput out)抛出StreamTransformationException {String encodingString = null; 节点encodingStringNode; try {//读取输入和输出有效载荷。 InputStream inputStream = in.getInputPayload()。getInputStream(); OutputStream outputStream = out.getOutputPayload()。getOutputStream(); //创建DOM树构建器工厂的新实例DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //创建新实例以从xml获取DOM文档。 DocumentBuilder builder = factory.newDocumentBuilder(); //从inputStream xml获取新的DOM文档。 文档doc = builder.parse(inputStream); //获取源消息的XML节点'Base64EncodedString'。 encodeStringNode = doc.getElementsByTagName(" Base64Str")。item(0); //从源消息中获取xml元素'Base64Str'的base64字符串值。 encodeString = encodeStringNode.getFirstChild()。getNodeValue(); //将base64字符串解码为文本。 //byte [] encodeBytes = Base64.getDecoder()。decode(encodedString); //String/decodedString = new String(decodedBytes); byte [] bytesDecoded = DatatypeConverter.parseBase64Binary(encodedString); System.out.println("解码后的值为" +新的String(bytesDecoded)); 字符串strDecoded =新字符串(bytesDecoded); //派生输出(目标)xml消息。 //outputStream.write(("" ?? xml version = \" 1.0 \" encoding = \" UTF-8 \"?> " + decodedString +" ")。getBytes()); outputStream.write(strDecoded.getBytes()); } catch(Exception exception){getTrace()。addDebugMessage(exception.getMessage()); 抛出新的StreamTransformationException(exception.toString()); }}}

附上的是我为RWB触发以测试此方案的薪水表。 testfile.txt bytecode-conversion-after-om-execution.jpg

所以基本上存在一些问题,因为哪个目标jpg文件显示为空白。

能否请您帮助我,是否需要在代码中添加任何内容以将该base64字符串转换为图像或我在这里遗漏的其他内容?

一周热门 更多>