首页 > 其他分享 >控制ERP物料主数据通过Middleware传往CRM

控制ERP物料主数据通过Middleware传往CRM

时间:2024-02-23 10:37:16浏览次数:20  
标签:GW DO 传往 ERP Middleware SEND 006 ENDIF ASSIGN

先说一下优化过滤的必要性。

CRM物料主数据一百多万。

感谢MDM或者相关的系统,每天通过接口更新的不知道什么东西,每天数百万的物料更新队列进入CRM。

CRM系统被搞死了好几次。

然后各种优化报表,程序。。。

最后有几个链接缓慢的自开发接口,背锅了。。。

好吧,先不管那些了。现在在ERP做一个过滤设置,只有某些修改的物料主数据才允许传到CRM。

1,查看SM30(TBE24找对增强ID,TPS34找到增强函数或自己写)

2,做配置表,表+字段,控制哪些表检查哪些字段

 

 

3,增强

  "物料数据库同步过滤MARA,MAKT,MARM,MVKE
  IF I_OBJ_NAME = C_MATERIAL."物料bdoc
    DATA:GW_MARA TYPE MARA,
         GW_MAKT TYPE MAKT,
         GW_MARM TYPE MARM,
         GW_MVKE TYPE MVKE,
         GT_006 TYPE TABLE OF ZCRMT0006,
         GW_006 LIKE LINE OF GT_006.
    FIELD-SYMBOLS:<OLD> TYPE ANY,
                  <NEW> TYPE ANY,
                  <MAKT> TYPE MAKT,
                  <MVKE> TYPE MVKE,
                  <MARM> TYPE MARM.
    E_DO_NOT_SEND = 'X'."清除发送标记
    SELECT * INTO TABLE GT_006 FROM ZCRMT0006.
    LOOP AT T_INT_TABLES INTO LS_INT_TABLES.
      CHECK E_DO_NOT_SEND IS NOT INITIAL.
      CASE LS_INT_TABLES-TABNAME.
        WHEN 'MARA'.
          ASSIGN LS_INT_TABLES-DATA TO <FS_MARA> CASTING.
          SELECT SINGLE * INTO GW_MARA FROM MARA WHERE MATNR = <FS_MARA>-MATNR.
          IF SY-SUBRC = 0.
            LOOP AT GT_006 INTO GW_006 WHERE TABNAME = LS_INT_TABLES-TABNAME.
              IF E_DO_NOT_SEND IS NOT INITIAL.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE <FS_MARA> TO <NEW>.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE GW_MARA TO <OLD>.
                IF <NEW> <> <OLD>.
                  E_DO_NOT_SEND = ''.
                ENDIF.
              ENDIF.
            ENDLOOP.
          ELSE.
            E_DO_NOT_SEND = ''.
          ENDIF.
          CLEAR:GW_MARA.
        WHEN 'MARC'.
        WHEN 'MAKT'.
          ASSIGN LS_INT_TABLES-DATA TO <MAKT> CASTING.
          SELECT SINGLE * INTO GW_MAKT FROM MAKT WHERE MATNR = <MAKT>-MATNR AND SPRAS = <MAKT>-SPRAS.
          IF SY-SUBRC = 0.
            LOOP AT GT_006 INTO GW_006 WHERE TABNAME = LS_INT_TABLES-TABNAME.
              IF E_DO_NOT_SEND IS NOT INITIAL.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE <MAKT> TO <NEW>.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE GW_MAKT TO <OLD>.
                IF <NEW> <> <OLD>.
                  E_DO_NOT_SEND = ''.
                ENDIF.
              ENDIF.
            ENDLOOP.
          ELSE.
            E_DO_NOT_SEND = ''.
          ENDIF.
          CLEAR:GW_MAKT.
        WHEN 'MARM'.
          ASSIGN LS_INT_TABLES-DATA TO <MARM> CASTING.
          SELECT SINGLE * INTO GW_MARM FROM MARM WHERE MATNR = <MARM>-MATNR AND MEINH = <MARM>-MEINH.
          IF SY-SUBRC = 0.
            LOOP AT GT_006 INTO GW_006 WHERE TABNAME = LS_INT_TABLES-TABNAME.
              IF E_DO_NOT_SEND IS NOT INITIAL.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE <MARM> TO <NEW>.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE GW_MARM TO <OLD>.
                IF <NEW> <> <OLD>.
                  E_DO_NOT_SEND = ''.
                ENDIF.
              ENDIF.
            ENDLOOP.
          ELSE.
            E_DO_NOT_SEND = ''.
          ENDIF.
          CLEAR:GW_MARM.
        WHEN 'MVKE'.
          ASSIGN LS_INT_TABLES-DATA TO <MVKE> CASTING.
          SELECT SINGLE * INTO GW_MVKE FROM MVKE WHERE MATNR = <MVKE>-MATNR AND VKORG = <MVKE>-VKORG AND VTWEG = <MVKE>-VTWEG.
          IF SY-SUBRC = 0.
            LOOP AT GT_006 INTO GW_006 WHERE TABNAME = LS_INT_TABLES-TABNAME.
              IF E_DO_NOT_SEND IS NOT INITIAL.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE <MVKE> TO <NEW>.
                ASSIGN COMPONENT GW_006-FIELDNAME OF STRUCTURE GW_MVKE TO <OLD>.
                IF <NEW> <> <OLD>.
                  E_DO_NOT_SEND = ''.
                ENDIF.
              ENDIF.
            ENDLOOP.
          ELSE.
            E_DO_NOT_SEND = ''.
          ENDIF.
          CLEAR:GW_MVKE.
        WHEN OTHERS.
      ENDCASE.
    ENDLOOP.
  ENDIF.

 

标签:GW,DO,传往,ERP,Middleware,SEND,006,ENDIF,ASSIGN
From: https://www.cnblogs.com/sapSB/p/18028925

相关文章

  • Invicti Enterprise v24.1.0 for Windows - 企业应用安全测试
    InvictiEnterprisev24.1.0forWindows-企业应用安全测试InvictiEnterpriseOn-Premises09Jan2024v24.1.0请访问原文链接:InvictiEnterprisev24.1.0forWindows-企业应用安全测试,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgInvicti是一种自动化但......
  • 外贸生产企业用什么ERP软件好?企业怎么选型比较好
         外贸生产行业大多存在业务类型多、货币种类多、业务流程复杂等情况,如何清晰掌握销售、采购、生产、物料、仓储、订单等业务进度,有助于企业合理制定生产计划、物料计划、委外计划等,从而提升订单交期和客户满意度。随着信息和数字化科技的发展,国内不少的外贸生产企......
  • SHGetSpecialFolderPath(NULL, path, CSIDL_PROGRAM_FILES_COMMONX86, 0)
    CStringstr;TCHARpath[MAX_PATH];BOOLb=SHGetSpecialFolderPath(NULL,path,CSIDL_PROGRAM_FILES_COMMONX86,0);//获取指定的系统路径/*参数1:HWNDhwndOwner窗口所有者的句柄。可以NULL参数2:LPTSTRlpszPath返回路径的缓冲区,该缓冲区的大......
  • CF1918F Caterpillar on a Tree
    题意简述你想要遍历一棵大小为\(n\)的树,初始在根节点\(1\),每次你可以花费\(1\)从一个点通过一条边到达另一个点,或者花费\(0\)传送到根节点。求完成遍历的最小代价。\(n\le2\times10^5,k\le10^9\)。分析首先,传送门肯定是在叶子节点使用。其次,遍历顺序是按照子树的深......
  • Oracle 19c enterprise manager express username password
    *[Oracle19centerprisemanagerexpressusernamepassword-Search](https://cn.bing.com/search?q=Oracle+19c+enterprise+manager+express+username+password&qs=n&form=QBRE&sp=-1&lq=0&pq=oracle+19c+enterprise+manager+express+username+passw......
  • pve在执行apt-get update 更新软件包时报错:E: Failed to fetch https://enterprise.pr
    问题原因如下......
  • Java 将PDF转为PowerPoint (2行代码)
    通过编程实现PDF转PPT的功能,可以自动化转换过程,减少手动操作的工作量,并根据需要进行批量转换。将PDF文件转换为PPT文档后,可以利用PPT的丰富功能和动画效果,达到更好的演示效果。在Java中,我们可以使用第三方库Spire.PDFforJava来将PDF转换为PowerPoint文档。以下示例包含将PDF转......
  • Splunk Enterprise 9.2.0 (macOS, Linux, Windows) - 机器数据管理和分析
    SplunkEnterprise9.2.0(macOS,Linux,Windows)-机器数据管理和分析SIEM、全面的日志管理和分析平台请访问原文链接:https://sysin.org/blog/splunk-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org混合世界的数据平台快速、大规模地从可见性转向行动,以实现安......
  • linux目录误删文件 /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file
    背景接同事求助一台生产主机误删了文件导致几乎所有命令都无法使用,应用无法访问。误删命令rm-f/*现象除了cd命令可用,几乎所有的命令都报如下错误:lsbash:/usr/bin/ls:/lib64/ld-linux-x86-64.so.2:badELFinterpreter:Nosuchfileordirectory问题分析这个命令......
  • static_cast, dynamic_cast与reinterpret_cast的区别
    在C++中,static_cast,dynamic_cast和reinterpret_cast都可用于类型转换,它们在具体使用时有什么区别?此外,更为重要的是,为什么不推荐使用强制类型转换?1.static_caststatic_cast是静态类型转换,“静态”一词是指在程序编译期间完成类型的转换,这应该是平时使用最多的类型转换。例如,将......