SAP PO-将文件中的多个记录映射/整理到单个IDoc

2020-08-13 17:01发布

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

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


嗨,SAP社区

我正在寻找有关SAP PO中消息映射的帮助。

我们有一个接口,该接口从一个系统中获取文本文件,并使用消息类型CONF_ACT10和Idoc类型CONF_ACT1001创建IDoc。 当前,它为文件中的每个记录创建1个IDoc。

源数据文件包含6个字段,当前映射如下:

  • EmployeeID-输入E1BP_CORU_ACTIV-PERS_NO;
  • WorkStartDate-移至E1BP_CORU_ACTIV-EX_CREATED_DATE,但我们将日期重新设置为yyyyMMdd;
  • ActivityNumber-放入EDI_DC40-MESCOD;
  • NetworkNumber-我们将值的一部分放入E1BP_CORU_ACTIV-ORDERID,另一部分放入E1BP_CORU_ACTIV-OPERATION;
  • ActualWork-进入字段E1BP_CORU_ACTIV-LABOR_VAL; 和
  • 来源-放入E1BP_CORU_ACTIV-CONF_TEXT。

因此,如果源文件包含以下数据,它将发布3个IDoc:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    
       
          
             <记录>
                 0902160 
                 2020/7/29 
                 PM 
                 PM0000090790450150 
                 92 
                 SAP-MES 
             
             <记录>
                 0902162 
                 30/07/2020 
                 PM 
                 PM0000090790450152 
                 92 
                 SAP-MES 
             
             <记录>
                 0902160 
                 2020/7/29 
                 PP 
                 PM0000090790450150 
                 92 
                 SAP-MES 
             
          
       
    
 
 

我现在正在考虑更改映射,以使其不再将每个记录作为单独的IDoc发布,而是为每个员工发布一个IDoc。 然后应根据每个雇员的记录数, n 次填充段E1BP_CORU_ACTIV。 例如,如果我们收到上面的示例消息:

  • IDoc 1-这将具有员工0902160的数据,但段E1BP_CORU_ACTIV填充了两次; 和
  • IDoc 2-这将具有雇员0902162的数据,并且段E1BP_CORU_ACTIV仅出现一次。

我尝试按照在另一个问题中发现的类似情况进行尝试(示例),但我无法完全正常运行。 我尝试了几种不同的方法,但是我得到了1个IDoc并填充了3次E1BP_CORU_ACTIV,或者我得到了2个IDoc,但是所有的E1BP_CORU_ACTIV数据仅填充了IDoc 1,IDoc 2实际上是空的。

我没有将每个记录映射到IDoc,而是将其更改为:

我猜这不太正确,但是我以前从未使用过节点函数,因此不能完全确定它们的工作原理! 如果有人可以提供帮助,将不胜感激。 谢谢。

mapping.jpg (34.3 kB)

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

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


嗨,SAP社区

我正在寻找有关SAP PO中消息映射的帮助。

我们有一个接口,该接口从一个系统中获取文本文件,并使用消息类型CONF_ACT10和Idoc类型CONF_ACT1001创建IDoc。 当前,它为文件中的每个记录创建1个IDoc。

源数据文件包含6个字段,当前映射如下:

  • EmployeeID-输入E1BP_CORU_ACTIV-PERS_NO;
  • WorkStartDate-移至E1BP_CORU_ACTIV-EX_CREATED_DATE,但我们将日期重新设置为yyyyMMdd;
  • ActivityNumber-放入EDI_DC40-MESCOD;
  • NetworkNumber-我们将值的一部分放入E1BP_CORU_ACTIV-ORDERID,另一部分放入E1BP_CORU_ACTIV-OPERATION;
  • ActualWork-进入字段E1BP_CORU_ACTIV-LABOR_VAL; 和
  • 来源-放入E1BP_CORU_ACTIV-CONF_TEXT。

因此,如果源文件包含以下数据,它将发布3个IDoc:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
    
       
          
             <记录>
                 0902160 
                 2020/7/29 
                 PM 
                 PM0000090790450150 
                 92 
                 SAP-MES 
             
             <记录>
                 0902162 
                 30/07/2020 
                 PM 
                 PM0000090790450152 
                 92 
                 SAP-MES 
             
             <记录>
                 0902160 
                 2020/7/29 
                 PP 
                 PM0000090790450150 
                 92 
                 SAP-MES 
             
          
       
    
 
 

我现在正在考虑更改映射,以使其不再将每个记录作为单独的IDoc发布,而是为每个员工发布一个IDoc。 然后应根据每个雇员的记录数, n 次填充段E1BP_CORU_ACTIV。 例如,如果我们收到上面的示例消息:

  • IDoc 1-这将具有员工0902160的数据,但段E1BP_CORU_ACTIV填充了两次; 和
  • IDoc 2-这将具有雇员0902162的数据,并且段E1BP_CORU_ACTIV仅出现一次。

我尝试按照在另一个问题中发现的类似情况进行尝试(示例),但我无法完全正常运行。 我尝试了几种不同的方法,但是我得到了1个IDoc并填充了3次E1BP_CORU_ACTIV,或者我得到了2个IDoc,但是所有的E1BP_CORU_ACTIV数据仅填充了IDoc 1,IDoc 2实际上是空的。

我没有将每个记录映射到IDoc,而是将其更改为:

我猜这不太正确,但是我以前从未使用过节点函数,因此不能完全确定它们的工作原理! 如果有人可以提供帮助,将不胜感激。 谢谢。

mapping.jpg (34.3 kB)
付费偷看设置
发送
2条回答
Nir深蓝
1楼-- · 2020-08-13 17:47

这可能是因为idoc在结构中出现了一个。

我建议尝试将idoc的xsd从1更改为无界或使用多重映射。

callcenter油条
2楼-- · 2020-08-13 17:43

您好,Khusal

感谢您的消息,我已经将IDoc从1更新为无界。

我上周进行了一些更改,现在设法使它生效,但前提是源数据按EmployeeID排序。 如果源数据不正确,则某些数据会被添加到错误的IDoc中。

这是CONF_ACT1001 IDOC标头级别的映射,现在它为每个EmployeeID创建1个IDoc:

这是每次有员工记录时我们要填充的细分中的映射:

我将尝试使其今天开始工作,我想我只需要一些其他种类,但上周却无法解决! 谢谢。

一周热门 更多>