当前位置: 首页 > 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进行了细化,主要包含四…...

Altair: 轻松创建交互式数据可视化

Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库&#xff0c;它旨在简化数据可视化的创建过程&#xff0c;尤其适用于统计图表的生成。Altair 强调声明式编码方式&#xff0c;通过简单的语法&#xff0c;用户能够快速创建复杂的交互式图…...

APM32F411使用IIS外设驱动es8388实现自录自播

前言&#xff1a; 从零开始学习I2s外设&#xff0c;配置Es8288寄存器实现录音播放。本文章使用主控芯片是APM32F411系类。音频相关的概念比较多&#xff0c;就不再次做过多的介绍&#xff0c;本文章只是简单实现边录边播功能。APM系类兼容st的芯片&#xff0c;所以用st的hal库来…...

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…...

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津&#xff0c;难得的面试机会也难以把握&#xff0c;即便成功入职&#xff0c;也往往难以长久。于是&#xff0c;不少程序员感叹&#xff1a;互联网的寒冬似乎又一次卷土重来&#xff0c;环境如此恶劣&…...

【线性代数】理解矩阵乘法的意义(点乘)

刚接触线性代数时&#xff0c;很不理解矩阵乘法的计算规则&#xff0c;为什么规则定义的看起来那么有规律却又莫名其妙&#xff0c;现在参考了一些资料&#xff0c;回过头重新总结下个人对矩阵乘法的理解&#xff08;严格来说是点乘&#xff09;。 理解矩阵和矩阵的乘法&#x…...

游戏开发技能系统常用概念

一个角色同一时间可能存在多个Skill&#xff0c;一个当前播放的主动技能&#xff0c;还有好几个不在播放中&#xff0c;但是也没有结束的。 技能事件&#xff1a; 实现具体的技能功能&#xff0c;技能动作的执行都是通过触发事件来触发的&#xff0c;比如&#xff08;时间帧&am…...

【案例80】麒麟操作系统无法使用Uclient访问NC65

问题现象 麒麟操作系统&#xff0c;安装Uclient&#xff0c;添加应用后无法看到登录界面&#xff0c;一直在转圈。 问题分析 进入到Uclient的工作目录 发现在工作目录下&#xff0c;无相关app.log生成。 查看Uclient的main.log发现&#xff0c;有大量的报错与Uclient下的sha…...

【AIGC-ChatGPT进阶副业提示词】育儿锦囊:化解日常育儿难题的实用指南

引言 在育儿的道路上&#xff0c;每位父母都会遇到各种各样的挑战和困惑。从孩子的饮食习惯到沟通交流&#xff0c;从作息规律到行为管理&#xff0c;这些看似平常的问题往往会让父母感到焦虑和无助。本文将通过实际案例分析和解决方案&#xff0c;为父母们提供一个实用的育儿…...

使用Docker部署一个Node.js项目

本文档将介绍如何使用Docker来部署一个Node.js项目。Docker是一种开源平台&#xff0c;可以自动化应用程序的部署、扩展和管理。通过Docker&#xff0c;我们可以将应用程序及其依赖项打包到一个容器中&#xff0c;从而确保在不同环境中运行的一致性。接下来&#xff0c;我们将逐…...

数据科学与SQL:如何利用本福特法则识别财务数据造假?

目录 0 本福特法则介绍 1 数据准备 2 问题分析 步骤1:提取首位数: 步骤2:计算首位数字的实际频率分布 <...