当前位置: 首页 > news >正文

SAP PP ECN CSAP_MAT_BOM_MAINTAIN

刚开始的时候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'EXPORTINGINPUT  = INPUT_PBOM-MATNRIMPORTINGOUTPUT = INPUT_PBOM-MATNR.TRANSLATE INPUT_PBOM-MATNR TO UPPER CASE.*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGINPUT  = INPUT_PBOM-IDNRKIMPORTINGOUTPUT = 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 ZINPUTPBOMWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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-UZEITWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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时的处理CLEAR GT_STPO_INPUT.IF INPUT_PBOM-STVKN IS NOT INITIAL.GT_STPO_INPUT-ITEM_NODE = INPUT_PBOM-STVKN.ENDIF.GT_STPO_INPUT-CHG_NO_TO = INPUT_PBOM-AENRA.GT_STPO_INPUT-VALID_TO = INPUT_PBOM-DATUB+0(4) && '-' && INPUT_PBOM-DATUB+4(2) && '-' && INPUT_PBOM-DATUB+6(2).GT_STPO_INPUT-REL_PROD = 'X'."标识 与生产相关项目GT_STPO_INPUT-AI_GROUP = 'A'."替代组GT_STPO_INPUT-AI_PRIO = '1'."优先级GT_STPO_INPUT-AI_STRATEG = '01'."策略GT_STPO_INPUT-USAGE_PROB = '100'."使用比例GT_STPO_INPUT-IDENTIFIER = '1'."标识GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串GT_STPO_INPUT-CHANGE_NO = INPUT_PBOM-AENNR.PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.*        gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*        gt_stpo_input-issue_loc = ."生产订单的发货地点APPEND GT_STPO_INPUT.ELSE.                     "sap原数据有bom时的处理,指定bom中要更改的具体条目CLEAR GT_STPO_INPUT.IF INPUT_PBOM-STVKN IS NOT INITIAL.GT_STPO_INPUT-ITEM_NODE = INPUT_PBOM-STVKN.ENDIF.GT_STPO_INPUT-CHG_NO_TO = INPUT_PBOM-AENRA.GT_STPO_INPUT-VALID_TO = INPUT_PBOM-DATUB+0(4) && '-' && INPUT_PBOM-DATUB+4(2) && '-' && INPUT_PBOM-DATUB+6(2).GT_STPO_INPUT-REL_PROD = 'X'."标识 与生产相关项目GT_STPO_INPUT-AI_GROUP = 'A'."替代组GT_STPO_INPUT-AI_PRIO = '1'."优先级GT_STPO_INPUT-AI_STRATEG = '01'."策略GT_STPO_INPUT-USAGE_PROB = '100'."使用比例GT_STPO_INPUT-IDENTIFIER = '1'."标识GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串GT_STPO_INPUT-CHANGE_NO = INPUT_PBOM-AENNR.PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.
*         gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*         gt_stpo_input-issue_loc = ."生产订单的发货地点CLEAR SAP_STPO.CLEAR SAP_STPO[].SELECT * INTO CORRESPONDING FIELDS OF TABLE  SAP_STPO FROM STPOWHERE STLNR = TEMP_STLNR AND STLTY = 'M' AND IDNRK = INPUT_PBOM-IDNRK AND MENGE = INPUT_PBOM-KMPMG ORDER BY STLKN STPOZ.IF LINES( SAP_STPO[] ) >= PLM_SUBMATNR_COUNT-COUNT.CLEAR NO1.LOOP AT SAP_STPO.NO1 = NO1 + 1.IF NO1 = PLM_SUBMATNR_COUNT-COUNT.GT_STPO_INPUT-BOM_NO = SAP_STPO-STLNR.GT_STPO_INPUT-ITEM_NODE = SAP_STPO-STLKN.GT_STPO_INPUT-ITEM_COUNT = SAP_STPO-STPOZ.IF ( SAP_STPO-SORTF IS NOT INITIAL ) AND ( INPUT_PBOM-SORTP IS INITIAL ).GT_STPO_INPUT-SORTSTRING = SAP_STPO-SORTF.  "排序字符串ENDIF.EXIT.ENDIF.ENDLOOP.ENDIF.APPEND GT_STPO_INPUT.ENDIF.ELSE."2.1.2 当完成一个小bom,处理该层小bom的数据同步。进入下一个小bom数据的准备CLEAR SAP_STPO.CLEAR SAP_STPO[].CLEAR SAP_SUBMATNR_COUNT.*        SELECT * INTO CORRESPONDING FIELDS OF TABLE sap_stpo FROM stpo WHERE stlnr = temp_stlnr AND stlty = 'M' ORDER BY idnrk MENGE STLKN STPOZ.
*
*        LOOP AT sap_stpo."比较输入bom数据和SAPbom数据,判断需要删除的行项目(即输入无,而SAP有的行项目):这里是用物料号做的比较,是否ok?
*          IF sap_stpo-IDNRK = sap_submatnr_count-submatnr AND sap_stpo-MENGE = sap_submatnr_count-MENGE.
*            sap_submatnr_count-COUNT = sap_submatnr_count-COUNT + 1.
*          ELSE.
*            CLEAR sap_submatnr_count.
*            sap_submatnr_count-submatnr = sap_stpo-idnrk.
*            sap_submatnr_count-MENGE = sap_stpo-MENGE.
*            sap_submatnr_count-COUNT = sap_submatnr_count-COUNT + 1.
*          ENDIF.
* 删除用ECN处理
*          isfind = '0'.
*          CLEAR NO2.
*          LOOP AT gt_stpo_input.
*            IF sap_stpo-IDNRK = gt_stpo_input-COMPONENT AND sap_stpo-MENGE = gt_stpo_input-comp_qty.
*              NO2 = NO2 + 1.
*              IF NO2 = sap_submatnr_count-COUNT.
*                isfind = '1'.
*                EXIT.
*              ENDIF.
*            ENDIF.
*          ENDLOOP.
*          IF isfind = '0'."对要删除的行项目做标记,待处理
*            gt_stpo_input-bom_no = sap_stpo-STLNR.
*            gt_stpo_input-ITEM_NODE = sap_stpo-STLKN.
*            gt_stpo_input-ITEM_COUNT = sap_stpo-STPOZ.
*            gt_stpo_input-fldelete = 'X'.
*            APPEND gt_stpo_input.
*          ENDIF.
*        ENDLOOP."下面执行小bom的数据同步CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL      = TEMP_MATPLANT         = TEMP_WERKSBOM_USAGE     = '1'   "物料清单用途 默认1CHANGE_NO     = INPUT_PBOM-AENNRVALID_FROM    = PDATAVI_STKO        = I_STKOFL_BOM_CREATE = 'X'FL_NEW_ITEM   = 'X'FL_COMPLETE   = 'x'TABLEST_STPO        = GT_STPO_INPUTEXCEPTIONSERROR         = 1OTHERS        = 2.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'."BOM同步成功与否的记录CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.IF SY-SUBRC <> 0.CLEAR OUTPUT_MESSAGE.RETURN = RETURN+12(10).OUTPUT_MESSAGE-MESSAGETYPE = 'E'.ELSE.CLEAR OUTPUT_MESSAGE.OUTPUT_MESSAGE-MESSAGETYPE = 'S'.ENDIF.OUTPUT_MESSAGE-MESSAGE = RETURN.OUTPUT_MESSAGE-MATNR = TEMP_MAT.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGINPUT  = OUTPUT_MESSAGE-MATNRIMPORTINGOUTPUT = OUTPUT_MESSAGE-MATNR.OUTPUT_MESSAGE-WERKS = TEMP_WERKS.APPEND OUTPUT_MESSAGE.ZLOG-MATNR = OUTPUT_MESSAGE-MATNR.ZLOG-WERKS = OUTPUT_MESSAGE-WERKS.ZLOG-MESSAGETYPE = OUTPUT_MESSAGE-MESSAGETYPE.ZLOG-MESSAGE = OUTPUT_MESSAGE-MESSAGE.ZLOG-LOGDATE = SY-DATUM.ZLOG-LOGTIME = SY-UZEIT.ZLOG-INTERFACENAME = 'ZPBOM_PLM2SAP'.INSERT INTO ZLOGOFMATNRORBOM  VALUES ZLOG.COMMIT WORK AND WAIT.CLEAR ZLOG.CLEAR GT_STPO_INPUT[]."进入下一个小bom数据的准备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 ZINPUTPBOMWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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-UZEITWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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.CLEAR GT_STPO_INPUT.IF INPUT_PBOM-STVKN IS NOT INITIAL.GT_STPO_INPUT-ITEM_NODE = INPUT_PBOM-STVKN.ENDIF.GT_STPO_INPUT-CHG_NO_TO = INPUT_PBOM-AENRA.GT_STPO_INPUT-VALID_TO = INPUT_PBOM-DATUB+0(4) && '-' && INPUT_PBOM-DATUB+4(2) && '-' && INPUT_PBOM-DATUB+6(2).GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串GT_STPO_INPUT-CHANGE_NO = INPUT_PBOM-AENNR.PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.
*        gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*        gt_stpo_input-issue_loc = ."生产订单的发货地点APPEND GT_STPO_INPUT.ELSE.CLEAR GT_STPO_INPUT.IF INPUT_PBOM-STVKN IS NOT INITIAL.GT_STPO_INPUT-ITEM_NODE = INPUT_PBOM-STVKN.ENDIF.GT_STPO_INPUT-CHG_NO_TO = INPUT_PBOM-AENRA.GT_STPO_INPUT-VALID_TO = INPUT_PBOM-DATUB+0(4) && '-' && INPUT_PBOM-DATUB+4(2) && '-' && INPUT_PBOM-DATUB+6(2).GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串GT_STPO_INPUT-CHANGE_NO = INPUT_PBOM-AENNR.PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.
*        gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*        gt_stpo_input-issue_loc = ."生产订单的发货地点CLEAR SAP_STPO.CLEAR SAP_STPO[].SELECT * INTO CORRESPONDING FIELDS OF TABLE  SAP_STPO FROM STPOWHERE STLNR = TEMP_STLNR AND STLTY = 'M' AND IDNRK = INPUT_PBOM-IDNRK AND MENGE = INPUT_PBOM-KMPMG ORDER BY STLKN STPOZ.IF LINES( SAP_STPO[] ) >= PLM_SUBMATNR_COUNT-COUNT.CLEAR NO1.LOOP AT SAP_STPO.NO1 = NO1 + 1.IF NO1 = PLM_SUBMATNR_COUNT-COUNT.GT_STPO_INPUT-BOM_NO = SAP_STPO-STLNR.GT_STPO_INPUT-ITEM_NODE = SAP_STPO-STLKN.GT_STPO_INPUT-ITEM_COUNT = SAP_STPO-STPOZ.IF ( SAP_STPO-SORTF IS NOT INITIAL ) AND ( INPUT_PBOM-SORTP IS INITIAL ).GT_STPO_INPUT-SORTSTRING = SAP_STPO-SORTF.  "排序字符串ENDIF.EXIT.ENDIF.ENDLOOP.ENDIF.APPEND GT_STPO_INPUT.ENDIF.ENDIF.*2.2  某一小bom内行项目数据的处理:添加该行行项目。ELSE.IF INPUT_PBOM-IDNRK = PLM_SUBMATNR_COUNT-SUBMATNR AND INPUT_PBOM-KMPMG = PLM_SUBMATNR_COUNT-MENGE.PLM_SUBMATNR_COUNT-COUNT = PLM_SUBMATNR_COUNT-COUNT + 1.ELSE.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.ENDIF."保存传入的数据到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 ZINPUTPBOMWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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-UZEITWHERE MATNR = INPUT_PBOM-MATNRAND WERKS = INPUT_PBOM-WERKSAND IDNRK = INPUT_PBOM-IDNRKAND KMPMG = INPUT_PBOM-KMPMGAND 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.CLEAR GT_STPO_INPUT.GT_STPO_INPUT-REL_PROD = 'X'."标识 与生产相关项目GT_STPO_INPUT-AI_GROUP = 'A'."替代组GT_STPO_INPUT-AI_PRIO = '1'."优先级GT_STPO_INPUT-AI_STRATEG = '01'."策略GT_STPO_INPUT-USAGE_PROB = '100'."使用比例GT_STPO_INPUT-IDENTIFIER = '1'."标识GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.
*        gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*        gt_stpo_input-issue_loc = ."生产订单的发货地点APPEND GT_STPO_INPUT.ELSE.CLEAR GT_STPO_INPUT.IF INPUT_PBOM-STVKN IS NOT INITIAL.GT_STPO_INPUT-ITEM_NODE = INPUT_PBOM-STVKN.ENDIF.GT_STPO_INPUT-CHG_NO_TO = INPUT_PBOM-AENRA.GT_STPO_INPUT-VALID_TO = INPUT_PBOM-DATUB+0(4) && '-' && INPUT_PBOM-DATUB+4(2) && '-' && INPUT_PBOM-DATUB+6(2).GT_STPO_INPUT-REL_PROD = 'X'."标识 与生产相关项目GT_STPO_INPUT-AI_GROUP = 'A'."替代组GT_STPO_INPUT-AI_PRIO = '1'."优先级GT_STPO_INPUT-AI_STRATEG = '01'."策略GT_STPO_INPUT-USAGE_PROB = '100'."使用比例GT_STPO_INPUT-IDENTIFIER = '1'."标识GT_STPO_INPUT-ITEM_NO = INPUT_PBOM-POSNR.     "项目号 默认9000GT_STPO_INPUT-ITEM_CATEG = INPUT_PBOM-POSTP.  "项目类别ICT 默认LGT_STPO_INPUT-COMPONENT = INPUT_PBOM-IDNRK.   "组件:即子物料GT_STPO_INPUT-COMP_QTY = INPUT_PBOM-KMPMG.    "数量GT_STPO_INPUT-COMP_UNIT = INPUT_PBOM-MEINS.   "单位GT_STPO_INPUT-REL_COST = 'X'.                 "成本核算标准相关GT_STPO_INPUT-SORTSTRING = INPUT_PBOM-SORTP.  "排序字符串PDATAV = INPUT_PBOM-DATUV+0(4) && '-' && INPUT_PBOM-DATUV+4(2) && '-' && INPUT_PBOM-DATUV+6(2) .GT_STPO_INPUT-VALID_FROM = PDATAV.
*        gt_stpo_input-comp_scrap = ."部件废品用百分比表示(BTCI)
*        gt_stpo_input-issue_loc = ."生产订单的发货地点CLEAR SAP_STPO.CLEAR SAP_STPO[].SELECT * INTO CORRESPONDING FIELDS OF TABLE  SAP_STPO FROM STPOWHERE STLNR = TEMP_STLNR AND STLTY = 'M' AND IDNRK = INPUT_PBOM-IDNRK AND MENGE = INPUT_PBOM-KMPMG ORDER BY STLKN STPOZ.IF LINES( SAP_STPO[] ) >= PLM_SUBMATNR_COUNT-COUNT.CLEAR NO1.LOOP AT SAP_STPO.NO1 = NO1 + 1.IF NO1 = PLM_SUBMATNR_COUNT-COUNT.GT_STPO_INPUT-BOM_NO = SAP_STPO-STLNR.GT_STPO_INPUT-ITEM_NODE = SAP_STPO-STLKN.GT_STPO_INPUT-ITEM_COUNT = SAP_STPO-STPOZ.IF ( SAP_STPO-SORTF IS NOT INITIAL ) AND ( INPUT_PBOM-SORTP IS INITIAL ).GT_STPO_INPUT-SORTSTRING = SAP_STPO-SORTF.  "排序字符串ENDIF.EXIT.ENDIF.ENDLOOP.ENDIF.APPEND GT_STPO_INPUT.ENDIF.ENDIF.ENDLOOP.*3.  所有bom项跑完了,对最后一个小bom的处理CLEAR SAP_STPO.CLEAR SAP_STPO[].CLEAR SAP_SUBMATNR_COUNT.*  SELECT * INTO CORRESPONDING FIELDS OF TABLE sap_stpo FROM stpo WHERE stlnr = temp_stlnr AND stlty = 'M' ORDER BY idnrk MENGE STLKN STPOZ.
*
*  LOOP AT sap_stpo."比较输入bom数据和SAPbom数据,判断需要删除的行项目(即输入无,而SAP有的行项目):这里是用物料号做的比较,是否ok?
*    IF sap_stpo-IDNRK = sap_submatnr_count-submatnr AND sap_stpo-MENGE = sap_submatnr_count-MENGE.
*      sap_submatnr_count-COUNT = sap_submatnr_count-COUNT + 1.
*    ELSE.
*      CLEAR sap_submatnr_count.
*      sap_submatnr_count-submatnr = sap_stpo-idnrk.
*      sap_submatnr_count-MENGE = sap_stpo-MENGE.
*      sap_submatnr_count-COUNT = sap_submatnr_count-COUNT + 1.
*    ENDIF.
*
*    isfind = '0'.
*    CLEAR NO2.
*    LOOP AT gt_stpo_input.
*      IF sap_stpo-IDNRK = gt_stpo_input-COMPONENT AND sap_stpo-MENGE = gt_stpo_input-comp_qty.
*        NO2 = NO2 + 1.
*        IF NO2 = sap_submatnr_count-COUNT.
*          isfind = '1'.
*          EXIT.
*        ENDIF.
*      ENDIF.
*    ENDLOOP.
*    IF isfind = '0'.
*      gt_stpo_input-bom_no = sap_stpo-STLNR.
*      gt_stpo_input-ITEM_NODE = sap_stpo-STLKN.
*      gt_stpo_input-ITEM_COUNT = sap_stpo-STPOZ.
*      gt_stpo_input-fldelete = 'X'.
*      APPEND gt_stpo_input.
*    ENDIF.
*  ENDLOOP.CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL      = TEMP_MATPLANT         = TEMP_WERKSBOM_USAGE     = '1'   "物料清单用途 默认1CHANGE_NO     = INPUT_PBOM-AENNRVALID_FROM    = PDATAVI_STKO        = I_STKOFL_BOM_CREATE = 'X'FL_NEW_ITEM   = 'X'FL_COMPLETE   = 'x'TABLEST_STPO        = GT_STPO_INPUTEXCEPTIONSERROR         = 1OTHERS        = 2.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'."BOM同步成功与否的记录CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.IF SY-MSGTY = 'S'.CLEAR OUTPUT_MESSAGE.OUTPUT_MESSAGE-MESSAGETYPE = 'S'.ELSE.CLEAR OUTPUT_MESSAGE.
*    RETURN = RETURN+12(10).OUTPUT_MESSAGE-MESSAGETYPE = 'E'.ENDIF.OUTPUT_MESSAGE-MESSAGE = RETURN.OUTPUT-RETURN-MSGTY = OUTPUT_MESSAGE-MESSAGETYPE.OUTPUT-RETURN-MSGTX = OUTPUT_MESSAGE-MESSAGE.OUTPUT_MESSAGE-MATNR = TEMP_MAT.CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'EXPORTINGINPUT  = OUTPUT_MESSAGE-MATNRIMPORTINGOUTPUT = OUTPUT_MESSAGE-MATNR.OUTPUT_MESSAGE-WERKS = TEMP_WERKS.APPEND OUTPUT_MESSAGE.ZLOG-MATNR = OUTPUT_MESSAGE-MATNR.ZLOG-WERKS = OUTPUT_MESSAGE-WERKS.ZLOG-MESSAGETYPE = OUTPUT_MESSAGE-MESSAGETYPE.ZLOG-MESSAGE = OUTPUT_MESSAGE-MESSAGE.ZLOG-LOGDATE = SY-DATUM.ZLOG-LOGTIME = SY-UZEIT.ZLOG-INTERFACENAME = 'ZPBOM_PLM2SAP'.INSERT INTO ZLOGOFMATNRORBOM  VALUES ZLOG.COMMIT WORK AND WAIT.CLEAR GT_STPO_INPUT[].ENDFUNCTION.

相关文章:

SAP PP ECN CSAP_MAT_BOM_MAINTAIN

刚开始的时候ECN总是加不上&#xff0c; 参考kimi给出的案例 点击链接查看和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg 效果 加上了 FUNCTION ZPBOM_PLM2SAP. *"------------------------------------------------------------------…...

html中实用标签dl dt dd(有些小众的标签 但是很好用)

背景描述 html <dl> <dt> <dd>是一组合标签&#xff0c;他们与ol li、ul li标签很相似 但是他却是没有默认前缀并且有缩进的标签 使用方式与table表格的标签一致 使用方式 dt和dd是放于dl标签内&#xff0c;dt与dd处于dl下相同级。就是dt不能放入dd内&am…...

ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览

ONES Copilot 可基于工作项的标题、描述、属性信息&#xff0c;对工作项产生的动态和评论生成总结。 针对不同类型的工作项&#xff0c;总结输出的内容有对应的侧重点。 应用场景&#xff1a; 在一些流程步骤复杂、上下游参与成员角色丰富的场景中&#xff0c;工作项动态往往会…...

实现Python将csv数据导入到Neo4j

目录 一、获取数据集 1.1 获取数据集 1.2 以“记事本”方式打开文件 1.3 另存为“UTF-8”格式文件 1.4 选择“是” 二、 打开Neo4j并运行 2.1 创建新的Neo4j数据库 2.2 分别设置数据库名和密码 ​编辑 2.3 启动Neo4j数据库 2.4 打开Neo4j数据库 2.5 运行查看该数据库…...

QML Rectangle组件

文章目录 前言主体**简单的矩形****渐变的矩形****带边框的矩形****圆角矩形****圆形 & 圆环** 总结 前言 在 QML 中&#xff0c;Rectangle 是一个常见且非常实用的元素&#xff0c;它允许开发者轻松创建矩形形状的图形。通过调整 Rectangle 的多种属性&#xff0c;我们不…...

uniapp开发app,cover-view不能隐藏,使用v-if,v-show都不行的解决办法

先上解决方案 在最后多写一个v-else <cover-view class"point-info" v-if"selectedPoint"><cover-view class"info-content"><cover-view class"info-item">。。。</cover-view><cover-view class"i…...

用adb命令给APP做压力测试,有什么不同?

压力测试 app做压力测试目的是模拟用户在使用软件时随意向软件发出指令&#xff0c;例如操作app的点击&#xff0c;滑动&#xff0c;返回等一系列随机事件&#xff0c;来检测app的承受能力 第一步&#xff1a;手机安装包需要待测的app 第二步&#xff1a;输入adb start-ser…...

netcore 集成Prometheus

一、安装包 <ItemGroup><PackageReference Include"prometheus-net" Version"8.2.1" /><PackageReference Include"prometheus-net.AspNetCore" Version"8.2.1" /> </ItemGroup> 二、添加代码 #region Pro…...

同城外卖系统源码扩展指南:搭建海外外卖APP平台详解

本篇文章&#xff0c;笔者将探讨如何基于同城外卖系统源码&#xff0c;搭建适合不同国家的海外外卖APP平台&#xff0c;涵盖多语言支持、支付接口对接、本地化适配等方面的实践经验和技术要点。 一、确定目标市场与用户需求 在开发海外外卖APP平台之前&#xff0c;首先需要深…...

JavaScript 中常见内置对象的知识点及示例总结

一、String&#xff08;字符串&#xff09;对象 知识点&#xff1a; 用于处理文本数据&#xff0c;它有许多内置的属性和方法来操作字符串&#xff0c;比如获取字符串长度、提取子字符串、替换字符等。字符串在 JavaScript 中是不可变的&#xff0c;即一旦创建&#xff0c;就不…...

CSSmodule的作用是什么

CSS Modules的作用主要体现在以下几个方面&#xff1a; 1. 解决全局样式污染问题 在传统的CSS管理方式中&#xff0c;样式定义通常是全局的&#xff0c;这很容易导致全局样式污染。当多个组件或页面共享同一个样式时&#xff0c;可能会出现样式冲突和覆盖的情况&#xff0c;从…...

python\shell\c++语法对比

语法区别举例&#xff1a; itempythonshellc变量定义a 10a10int a 10数组定义arr[1, add, 3]arr(1 a hello) declare -A arr([a]1 [b]2)int arr[] {1, 2, 3}if条件判断 if xxx: xxx elif xxx: xxx else: xxx if [ expressions ];then xxx e…...

优先队列【东北大学oj数据结构9-3】C++

优先队列 优先级队列是一种数据结构&#xff0c;其中保存了一组数据 S&#xff0c;其中每个元素都有一个键&#xff0c;并执行以下操作&#xff1a; insert(S, k)&#xff1a;将元素k插入集合S extractMax(S)&#xff1a;从S中取出S中key最大的元素并返回其值 创建一个程序&am…...

圣诞快乐(h5 css js(圣诞树))

一&#xff0c;整体设计思路 圣诞树h5&#xff08;简易&#xff09; 1.页面布局与样式&#xff1a; 页面使用了全屏的黑色背景&#xff0c;中央显示圣诞树&#xff0c;树形由三层绿色的三角形组成&#xff0c;每一层的大小逐渐变小。树干是一个棕色的矩形&#xff0c;位于三角…...

基于MATLAB的图像增强

目录 一、背景及意义介绍背景图像采集过程中的局限性 意义 二、概述三、代码结构及说明&#xff08;一&#xff09;整体结构&#xff08;二&#xff09;亮度增强部分&#xff08;三&#xff09;对比度增强部分&#xff08;四&#xff09;锐度增强部分 四、复现步骤&#xff08;…...

大数据之Hbase环境安装

Hbase软件版本下载地址&#xff1a; http://mirror.bit.edu.cn/apache/hbase/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 Slave2 172.16.11.99 2. 下载软件包 #Master wget http://archive.apache.org/dist/hbase/0.98.24/hbase-0.98.24-hadoop1-bin.tar.gz…...

javaEE--计算机是如何工作的-1

目录 一.计算机的组成: 各组件的功能: 衡量cpu好坏的标准: 二.指令(instruction) 三.操作系统Operating System 四.进程/任务process/tesk 五.进程在系统中如何管理 1.进程在系统中的管理,从两个角度来分类: 2.进程控制块PCB&#xff08;Process Control Block)) 3.P…...

vue.js 指令的修饰符

Vue.js 提供了一些指令修饰符&#xff0c;用于在指令的行为上添加额外的功能。下面详细解析一些常用的指令修饰符&#xff0c;并提供相应的代码实例。 .prevent&#xff1a;阻止默认事件 通过添加 .prevent 修饰符&#xff0c;可以阻止指令绑定的元素触发默认事件。 代码实例&a…...

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言&#xff1a;JAVA JDK版本&#xff1a;JDK8及以上 数据库&#xff1a;MySql5.6及以上 Maven版本&#xff1a;任意版本 操作系统&#xff1a;Windows、macOS 开发工具&#xff1a;Idea、Eclipse、MyEclipse 开发框架&#xff1a;SpringbootHTMLjQueryMysq…...

Autosar入门_架构(Architecture)

上一篇 | 返回主目录 | 下一篇 架构(Architecture) 1 Autosar架构分层概述2 MCAL3 ECU抽象层4 复杂设备驱动5 服务层6 RTE7 应用软件层1 Autosar架构分层概述 整体架构分为三层:应用软件(APP)、实时运行环境(RTE)、基础软件(BSW)以下架构对BSW进行了细化,主要包含四…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...