从SAP PO- File中的2个文件中获取数据到JDBC方案

2020-08-30 16:31发布

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

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


大家好,

我有一个要求SAP向PO发送2个文件,现在PO需要从这2个文件中获取字段,在某些条件下我们需要在DB中插入/更新

例如 EmpID字段在文件1
中可用,名称和配置文件在文件2中

条件:如果数据库中已存在EmpID,名称,配置文件,则不是UPDATE,否则插入

我如何达到此要求?

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

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


大家好,

我有一个要求SAP向PO发送2个文件,现在PO需要从这2个文件中获取字段,在某些条件下我们需要在DB中插入/更新

例如 EmpID字段在文件1
中可用,名称和配置文件在文件2中

条件:如果数据库中已存在EmpID,名称,配置文件,则不是UPDATE,否则插入

我如何达到此要求?

付费偷看设置
发送
2条回答
木偶小白
1楼 · 2020-08-30 16:57.采纳回答

嗨,我创建了一个示例以查看是否可以解决问题。

我主要利用发件人通道中的"其他文件"功能,操作映射中的"读取附件"以及消息映射中的用户定义功能来使整个事情正常工作。

首先,在集成生成器(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"?>
 
    <名称>杰伊
    <个人资料>个人资料示例
  
黑丝骑士
2楼-- · 2020-08-30 16:47

嗨,Akash,

如果向PI发送两个文件,源协议是什么?

如果是代理,则 您可以发送文件1作为主要负载,文件2作为附件。 然后读取映射和附件中的有效载荷。 在操作映射中,您必须选择"读取附件"选项。 有一个API可以读取pi映射中的附件。

Thsnks

Sugata

一周热门 更多>