SAP PP ECN CSAP_MAT_BOM_MAINTAIN

[复制链接]
发表于 2025-12-1 14:15:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
刚开始的时间ECN总是加不上,
参考kimi给出的案例
点击链接查察和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg

结果 加上了
  1. FUNCTION ZPBOM_PLM2SAP.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口:
  4. *"  EXPORTING
  5. *"     VALUE(OUTPUT) TYPE  ZSM8_SALESORDER_CREATE_OUTPUT
  6. *"  TABLES
  7. *"      INPUT_PBOM STRUCTURE  ZPBOM
  8. *"      OUTPUT_MESSAGE STRUCTURE  ZMAT_MESSAGE
  9. *"----------------------------------------------------------------------
  10. *  新增 input_bom
  11. *  修改 input_bom
  12. *  删除 ECN  日期
  13.   TABLES: MAST,STPO,STKO,STPU.
  14.   DATA: TEMP_MAT     TYPE MATNR,
  15.         TEMP_WERKS   TYPE WERKS_D,
  16.         TEMP_STLNR   LIKE MAST-STLNR, "物料单号(bom号)
  17.         RETURN(220)  TYPE C,
  18.         ISFIND(1)    TYPE C,
  19.         FROMDATE(10) TYPE C.
  20.   DATA:TEMP_MATNR TYPE MATNR.
  21.   DATA: BEGIN OF ZLOG,
  22.           MATNR             TYPE MATNR,
  23.           WERKS             TYPE WERKS_D,
  24.           INTERFACENAME(60) TYPE C,
  25.           LOGDATE           TYPE DATUM,
  26.           LOGTIME           TYPE UZEIT,
  27.           MAKTX             TYPE MAKTX,
  28.           MEINS             TYPE MEINS,
  29.           MBRSH             TYPE MBRSH,
  30.           LVORM             TYPE LVORM,
  31.           MTART             TYPE MTART,
  32.           SPART             TYPE SPART,
  33.           MATKL             TYPE MATKL,
  34.           BISMT             TYPE BISMT,
  35.           LGFSB             TYPE LGFSB,
  36.           EORIGINNO(40)     TYPE C,
  37.           CREATER(20)       TYPE C,
  38.           MESSAGETYPE(1)    TYPE C,
  39.           MESSAGE(220)      TYPE C,
  40.         END OF ZLOG.
  41.   DATA: BEGIN OF SUBMATNR_COUNT,"用于记录在同一层级下相同子物料,相同数量,出现的次数。
  42.           SUBMATNR TYPE MATNR,
  43.           MENGE    TYPE KMPMG,
  44.           COUNT    TYPE I,
  45.         END OF SUBMATNR_COUNT.
  46.   DATA:SAP_SUBMATNR_COUNT LIKE SUBMATNR_COUNT,
  47.        PLM_SUBMATNR_COUNT LIKE SUBMATNR_COUNT.
  48.   DATA: NO1 TYPE I,
  49.         NO2 TYPE I.
  50.   DATA:I_STKO LIKE STKO_API01.
  51.   DATA:BEGIN OF GS_INPUTPBOM,
  52.          MATNR   TYPE MATNR,
  53.          WERKS   TYPE WERKS_D,
  54.          IDNRK   TYPE IDNRK,
  55.          KMPMG   TYPE KMPMG,
  56.          XUHAO   TYPE I,
  57.          MEINS   TYPE MEINS,
  58.          SORTP   TYPE SORTP,
  59.          LOGDATE TYPE DATUM,
  60.          LOGTIME TYPE UZEIT,
  61.        END OF GS_INPUTPBOM.
  62.   DATA:GT_STPO_INPUT LIKE TABLE OF STPO_API03 WITH HEADER LINE.
  63.   DATA: SAP_STPO LIKE TABLE OF STPO WITH HEADER LINE.
  64.   DATA: PDATAV LIKE  CSAP_MBOM-DATUV.
  65. *1. 根据父物料字段,对输入BOM表排序:
  66.   SORT INPUT_PBOM BY STLAN WERKS MATNR IDNRK KMPMG.
  67. *2.将plm的bom格式转化为SAP能处理的单层bom,并处理(行项目新建或修改和删除的处理)
  68.   CLEAR TEMP_MAT.
  69.   CLEAR TEMP_WERKS.
  70.   I_STKO-BASE_QUAN = 1.
  71.   I_STKO-BOM_STATUS = '01'.
  72.   LOOP AT INPUT_PBOM.
  73.     CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  74.       EXPORTING
  75.         INPUT  = INPUT_PBOM-MATNR
  76.       IMPORTING
  77.         OUTPUT = INPUT_PBOM-MATNR.
  78.     TRANSLATE INPUT_PBOM-MATNR TO UPPER CASE.
  79. *    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  80.     CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  81.       EXPORTING
  82.         INPUT  = INPUT_PBOM-IDNRK
  83.       IMPORTING
  84.         OUTPUT = INPUT_PBOM-IDNRK.
  85.     TRANSLATE INPUT_PBOM-IDNRK TO UPPER CASE.
  86.     CLEAR GS_INPUTPBOM.
  87. *2.1   当从一个小bom切换到另一个小bom时的处理;
  88. *2.1.1 可以是第一个bom的第一条记录,
  89. *2.1.2 或者是另开始一个小bom数据
  90.     IF ( TEMP_MAT <> INPUT_PBOM-MATNR OR TEMP_WERKS <> INPUT_PBOM-WERKS ).
  91.       "2.1.1当是第一个bom的第一条数据时
  92.       IF ( TEMP_MAT IS INITIAL ) AND ( TEMP_WERKS IS INITIAL ).
  93.         TEMP_MAT = INPUT_PBOM-MATNR.
  94.         TEMP_WERKS = INPUT_PBOM-WERKS.
  95.         CLEAR PLM_SUBMATNR_COUNT.
  96.         PLM_SUBMATNR_COUNT-SUBMATNR = INPUT_PBOM-IDNRK.
  97.         PLM_SUBMATNR_COUNT-MENGE = INPUT_PBOM-KMPMG.
  98.         PLM_SUBMATNR_COUNT-COUNT = PLM_SUBMATNR_COUNT-COUNT + 1.
  99.         "保存传入的数据到zinputpbom透视表中,作为记录。
  100.         GS_INPUTPBOM-MATNR = INPUT_PBOM-MATNR.
  101.         GS_INPUTPBOM-WERKS = INPUT_PBOM-WERKS.
  102.         GS_INPUTPBOM-IDNRK = INPUT_PBOM-IDNRK.
  103.         GS_INPUTPBOM-KMPMG = INPUT_PBOM-KMPMG.
  104.         GS_INPUTPBOM-XUHAO = PLM_SUBMATNR_COUNT-COUNT.
  105.         GS_INPUTPBOM-MEINS = INPUT_PBOM-MEINS.
  106.         GS_INPUTPBOM-SORTP = INPUT_PBOM-SORTP.
  107.         GS_INPUTPBOM-LOGDATE = SY-DATUM.
  108.         GS_INPUTPBOM-LOGTIME = SY-UZEIT.
  109.         CLEAR TEMP_MATNR.
  110.         SELECT SINGLE MATNR INTO TEMP_MATNR FROM ZINPUTPBOM
  111.         WHERE MATNR = INPUT_PBOM-MATNR
  112.         AND WERKS = INPUT_PBOM-WERKS
  113.         AND IDNRK = INPUT_PBOM-IDNRK
  114.         AND KMPMG = INPUT_PBOM-KMPMG
  115.         AND XUHAO = PLM_SUBMATNR_COUNT-COUNT.
  116.         IF TEMP_MATNR IS INITIAL.
  117.           INSERT INTO ZINPUTPBOM VALUES GS_INPUTPBOM.
  118.         ELSE.
  119.           UPDATE ZINPUTPBOM SET SORTP = GS_INPUTPBOM-SORTP LOGDATE = SY-DATUM  LOGTIME = SY-UZEIT
  120.           WHERE MATNR = INPUT_PBOM-MATNR
  121.           AND WERKS = INPUT_PBOM-WERKS
  122.           AND IDNRK = INPUT_PBOM-IDNRK
  123.           AND KMPMG = INPUT_PBOM-KMPMG
  124.           AND XUHAO = PLM_SUBMATNR_COUNT-COUNT.
  125.         ENDIF.
  126.         COMMIT WORK AND WAIT.
  127.         "准备行项目数据
  128.         CLEAR TEMP_STLNR.
  129.         SELECT SINGLE STLNR INTO TEMP_STLNR FROM MAST WHERE MATNR = TEMP_MAT AND WERKS = TEMP_WERKS AND STLAN = '1'.
  130.         IF TEMP_STLNR IS INITIAL.  "sap原数据没有bom时的处理
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表