2020-08-30 16:31发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有一个要求SAP向PO发送2个文件,现在PO需要从这2个文件中获取字段,在某些条件下我们需要在DB中插入/更新
例如 EmpID字段在文件1 中可用,名称和配置文件在文件2中
条件:如果数据库中已存在EmpID,名称,配置文件,则不是UPDATE,否则插入
我如何达到此要求?
嗨,我创建了一个示例以查看是否可以解决问题。
我主要利用发件人通道中的"其他文件"功能,操作映射中的"读取附件"以及消息映射中的用户定义功能来使整个事情正常工作。
首先,在集成生成器(DIR)上。 我建立了一个发件人,可以使用" 1.xml"作为主要负载,并使用" 2.xml"作为附件。
第二,关于Enterprise Service Builder(ESR)。 我建立了一个名为" getNameNProfile"的用户定义函数(UDF),以从附件" 2.xml"中检索值。 如果输入参数值是" NAME",那么该函数将为我检索" name"值。 如果输入参数值为" PROFILE",则该函数将为我检索"配置文件"值。
这是UDF
公共字符串getNameNProfile(String Name_Profile_option,Container container)引发StreamTransformationException { //getNameNProfile的开头e05088d5b036f38ff447595de37cc031 字符串输出=""; 字符串AttachmentID =""; 字符串o_Name ="",o_Profile =""; 尝试{ InputAttachments inputAttachments = container.getGlobalContainer()。getInputAttachments(); 如果(inputAttachments.areAttachmentsAvailable()){ Collection CollectionIDs = inputAttachments.getAllContentIds(true); Object [] arrayObj = CollectionIDs.toArray(); int attachmentCount = arrayObj.length; for(int i = 0; i 然后,我使用JDBC update_insert功能来实现"找到记录,更新;未找到记录,插入"。 您可以引用此SAP链接 https ://help.sap.com/doc/saphelp_nwpi71/7.1/zh-CN/44/7b6d32fde93673e10000000a114a6b/frameset.htm?no_cache = true 第三,我在操作映射中选中了"读取附件",以便消息映射对象可以使用UDF在运行时实际读取附件内容。 在此,我提供主要有效负载(1.xml)和附件(2.xml)中的示例数据供您参考 ,这肯定与您的不同。 请根据您的要求进行修改。 主要有效载荷(1.xml) <?xml version =" 1.0" encoding =" UTF-8"?> Employee1 附件(2.xml) <?xml version =" 1.0" encoding =" UTF-8"?> <名称>杰伊名称> <个人资料>个人资料示例个人资料>
然后,我使用JDBC update_insert功能来实现"找到记录,更新;未找到记录,插入"。 您可以引用此SAP链接 https ://help.sap.com/doc/saphelp_nwpi71/7.1/zh-CN/44/7b6d32fde93673e10000000a114a6b/frameset.htm?no_cache = true
第三,我在操作映射中选中了"读取附件",以便消息映射对象可以使用UDF在运行时实际读取附件内容。
在此,我提供主要有效负载(1.xml)和附件(2.xml)中的示例数据供您参考
,这肯定与您的不同。 请根据您的要求进行修改。
主要有效载荷(1.xml)
<?xml version =" 1.0" encoding =" UTF-8"?> Employee1
附件(2.xml)
<?xml version =" 1.0" encoding =" UTF-8"?> <名称>杰伊名称> <个人资料>个人资料示例个人资料>
嗨,Akash,
如果向PI发送两个文件,源协议是什么?
如果是代理,则 您可以发送文件1作为主要负载,文件2作为附件。 然后读取映射和附件中的有效载荷。 在操作映射中,您必须选择"读取附件"选项。 有一个API可以读取pi映射中的附件。
Thsnks
Sugata
最多设置5个标签!
嗨,我创建了一个示例以查看是否可以解决问题。
我主要利用发件人通道中的"其他文件"功能,操作映射中的"读取附件"以及消息映射中的用户定义功能来使整个事情正常工作。
首先,在集成生成器(DIR)上。 我建立了一个发件人,可以使用" 1.xml"作为主要负载,并使用" 2.xml"作为附件。
第二,关于Enterprise Service Builder(ESR)。 我建立了一个名为" getNameNProfile"的用户定义函数(UDF),以从附件" 2.xml"中检索值。 如果输入参数值是" NAME",那么该函数将为我检索" name"值。 如果输入参数值为" PROFILE",则该函数将为我检索"配置文件"值。
这是UDF
嗨,Akash,
如果向PI发送两个文件,源协议是什么?
如果是代理,则 您可以发送文件1作为主要负载,文件2作为附件。 然后读取映射和附件中的有效载荷。 在操作映射中,您必须选择"读取附件"选项。 有一个API可以读取pi映射中的附件。
Thsnks
Sugata
一周热门 更多>