马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
刚开始的时间ECN总是加不上,
参考kimi给出的案例
点击链接查察和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg

结果 加上了
- FUNCTION ZPBOM_PLM2SAP.
- *"----------------------------------------------------------------------
- *"*"本地接口:
- *" EXPORTING
- *" VALUE(OUTPUT) TYPE ZSM8_SALESORDER_CREATE_OUTPUT
- *" TABLES
- *" INPUT_PBOM STRUCTURE ZPBOM
- *" OUTPUT_MESSAGE STRUCTURE ZMAT_MESSAGE
- *"----------------------------------------------------------------------
- * 新增 input_bom
- * 修改 input_bom
- * 删除 ECN 日期
- TABLES: MAST,STPO,STKO,STPU.
- DATA: TEMP_MAT TYPE MATNR,
- TEMP_WERKS TYPE WERKS_D,
- TEMP_STLNR LIKE MAST-STLNR, "物料单号(bom号)
- RETURN(220) TYPE C,
- ISFIND(1) TYPE C,
- FROMDATE(10) TYPE C.
- DATA:TEMP_MATNR TYPE MATNR.
- DATA: BEGIN OF ZLOG,
- MATNR TYPE MATNR,
- WERKS TYPE WERKS_D,
- INTERFACENAME(60) TYPE C,
- LOGDATE TYPE DATUM,
- LOGTIME TYPE UZEIT,
- MAKTX TYPE MAKTX,
- MEINS TYPE MEINS,
- MBRSH TYPE MBRSH,
- LVORM TYPE LVORM,
- MTART TYPE MTART,
- SPART TYPE SPART,
- MATKL TYPE MATKL,
- BISMT TYPE BISMT,
- LGFSB TYPE LGFSB,
- EORIGINNO(40) TYPE C,
- CREATER(20) TYPE C,
- MESSAGETYPE(1) TYPE C,
- MESSAGE(220) TYPE C,
- END OF ZLOG.
- DATA: BEGIN OF SUBMATNR_COUNT,"用于记录在同一层级下相同子物料,相同数量,出现的次数。
- SUBMATNR TYPE MATNR,
- MENGE TYPE KMPMG,
- COUNT TYPE I,
- END OF SUBMATNR_COUNT.
- DATA:SAP_SUBMATNR_COUNT LIKE SUBMATNR_COUNT,
- PLM_SUBMATNR_COUNT LIKE SUBMATNR_COUNT.
- DATA: NO1 TYPE I,
- NO2 TYPE I.
- DATA:I_STKO LIKE STKO_API01.
- DATA:BEGIN OF GS_INPUTPBOM,
- MATNR TYPE MATNR,
- WERKS TYPE WERKS_D,
- IDNRK TYPE IDNRK,
- KMPMG TYPE KMPMG,
- XUHAO TYPE I,
- MEINS TYPE MEINS,
- SORTP TYPE SORTP,
- LOGDATE TYPE DATUM,
- LOGTIME TYPE UZEIT,
- END OF GS_INPUTPBOM.
- DATA:GT_STPO_INPUT LIKE TABLE OF STPO_API03 WITH HEADER LINE.
- DATA: SAP_STPO LIKE TABLE OF STPO WITH HEADER LINE.
- DATA: PDATAV LIKE CSAP_MBOM-DATUV.
- *1. 根据父物料字段,对输入BOM表排序:
- SORT INPUT_PBOM BY STLAN WERKS MATNR IDNRK KMPMG.
- *2.将plm的bom格式转化为SAP能处理的单层bom,并处理(行项目新建或修改和删除的处理)
- CLEAR TEMP_MAT.
- CLEAR TEMP_WERKS.
- I_STKO-BASE_QUAN = 1.
- I_STKO-BOM_STATUS = '01'.
- LOOP AT INPUT_PBOM.
- CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
- EXPORTING
- INPUT = INPUT_PBOM-MATNR
- IMPORTING
- OUTPUT = INPUT_PBOM-MATNR.
- TRANSLATE INPUT_PBOM-MATNR TO UPPER CASE.
- * CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
- EXPORTING
- INPUT = INPUT_PBOM-IDNRK
- IMPORTING
- OUTPUT = INPUT_PBOM-IDNRK.
- TRANSLATE INPUT_PBOM-IDNRK TO UPPER CASE.
- CLEAR GS_INPUTPBOM.
- *2.1 当从一个小bom切换到另一个小bom时的处理;
- *2.1.1 可以是第一个bom的第一条记录,
- *2.1.2 或者是另开始一个小bom数据
- IF ( TEMP_MAT <> INPUT_PBOM-MATNR OR TEMP_WERKS <> INPUT_PBOM-WERKS ).
- "2.1.1当是第一个bom的第一条数据时
- IF ( TEMP_MAT IS INITIAL ) AND ( TEMP_WERKS IS INITIAL ).
- TEMP_MAT = INPUT_PBOM-MATNR.
- TEMP_WERKS = INPUT_PBOM-WERKS.
- CLEAR PLM_SUBMATNR_COUNT.
- PLM_SUBMATNR_COUNT-SUBMATNR = INPUT_PBOM-IDNRK.
- PLM_SUBMATNR_COUNT-MENGE = INPUT_PBOM-KMPMG.
- PLM_SUBMATNR_COUNT-COUNT = PLM_SUBMATNR_COUNT-COUNT + 1.
- "保存传入的数据到zinputpbom透视表中,作为记录。
- GS_INPUTPBOM-MATNR = INPUT_PBOM-MATNR.
- GS_INPUTPBOM-WERKS = INPUT_PBOM-WERKS.
- GS_INPUTPBOM-IDNRK = INPUT_PBOM-IDNRK.
- GS_INPUTPBOM-KMPMG = INPUT_PBOM-KMPMG.
- GS_INPUTPBOM-XUHAO = PLM_SUBMATNR_COUNT-COUNT.
- GS_INPUTPBOM-MEINS = INPUT_PBOM-MEINS.
- GS_INPUTPBOM-SORTP = INPUT_PBOM-SORTP.
- GS_INPUTPBOM-LOGDATE = SY-DATUM.
- GS_INPUTPBOM-LOGTIME = SY-UZEIT.
- CLEAR TEMP_MATNR.
- SELECT SINGLE MATNR INTO TEMP_MATNR FROM ZINPUTPBOM
- WHERE MATNR = INPUT_PBOM-MATNR
- AND WERKS = INPUT_PBOM-WERKS
- AND IDNRK = INPUT_PBOM-IDNRK
- AND KMPMG = INPUT_PBOM-KMPMG
- AND XUHAO = PLM_SUBMATNR_COUNT-COUNT.
- IF TEMP_MATNR IS INITIAL.
- INSERT INTO ZINPUTPBOM VALUES GS_INPUTPBOM.
- ELSE.
- UPDATE ZINPUTPBOM SET SORTP = GS_INPUTPBOM-SORTP LOGDATE = SY-DATUM LOGTIME = SY-UZEIT
- WHERE MATNR = INPUT_PBOM-MATNR
- AND WERKS = INPUT_PBOM-WERKS
- AND IDNRK = INPUT_PBOM-IDNRK
- AND KMPMG = INPUT_PBOM-KMPMG
- AND XUHAO = PLM_SUBMATNR_COUNT-COUNT.
- ENDIF.
- COMMIT WORK AND WAIT.
- "准备行项目数据
- CLEAR TEMP_STLNR.
- SELECT SINGLE STLNR INTO TEMP_STLNR FROM MAST WHERE MATNR = TEMP_MAT AND WERKS = TEMP_WERKS AND STLAN = '1'.
- IF TEMP_STLNR IS INITIAL. "sap原数据没有bom时的处理
-
复制代码 |