CSAP_MAT_BOM_MAINTAIN导入BOM

感谢依风提供


REPORT  ZPPPR_BOM_INPUT.
*------>TAB1ES
TABLES :STKO,
        STPO.
*------>inner-table
DATA : BEGIN OF GT_ITAB OCCURS 0,
*----->head
        MATNR      LIKE  CSAP_MBOM-MATNR,
        WERKS      LIKE  CSAP_MBOM-WERKS,"PLANT
        BASE_QUAN  LIKE  STKO_API01-BASE_QUAN,"matnr_QUAN

*----->item
        ITEM_NO    LIKE  STPO_API03-ITEM_NO,    "item_no
        ITEM_CATEG LIKE  STPO_API03-ITEM_CATEG, "item_CATEG
        COMPONENT  LIKE  STPO_API03-COMPONENT,  "item_COMPONENT
        COMP_QTY   LIKE  STPO_API03-COMP_QTY,   "item_QTY
        COMP_SCRAP LIKE  STPO_API03-COMP_SCRAP, "waster
        ISSUE_LOC  LIKE  STPO_API03-ISSUE_LOC,  "product-stors
        BOM_USAGE  LIKE  CSAP_MBOM-STLAN,       "BOM_USAGE
        DATE       LIKE  CSAP_MBOM-DATUV,       "VALID_FROM
       END OF GT_ITAB.
      
DATA : GT_ITA1 LIKE GT_ITAB    OCCURS 0 WITH HEADER  LINE.
DATA : GT_STPO LIKE STPO_API03 OCCURS 0 WITH HEADER  LINE.
DATA : GT_STKO LIKE STKO_API01 OCCURS 0 WITH HEADER  LINE.
DATA : LV_CANCEL(1) TYPE C.
*---->upload
CALL FUNCTION 'UPLOAD'
  EXPORTING
    FILENAME                = 'C:\BOM.txt'
    FILETYPE                = 'DAT'
  IMPORTING
    CANCEL                  = LV_CANCEL
  TABLES
    DATA_TAB                = GT_ITAB
  EXCEPTIONS
    CONVERSION_ERROR        = 1
    INVALID_TABLE_WIDTH     = 2
    INVALID_TYPE            = 3
    NO_BATCH                = 4
    UNKNOWN_ERROR           = 5
    GUI_REFUSE_FILETRANSFER = 6
    OTHERS                  = 7.

IF LV_CANCEL EQ 'X'.
  LEAVE PROGRAM.
ENDIF.
   
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSEIF SY-SUBRC = 0.
  DATA:   MATNR      LIKE  CSAP_MBOM-MATNR,
          WERKS      LIKE  CSAP_MBOM-WERKS,     "PLANT
          BASE_QUAN  LIKE  STKO_API01-BASE_QUAN,"matnr_QUAN
          BOM_USAGE  LIKE  CSAP_MBOM-STLAN.     "BOM_USAGE

  SORT GT_ITAB BY MATNR ITEM_NO COMPONENT.

  LOOP AT GT_ITAB.
    MOVE GT_ITAB TO GT_ITA1.
    GT_ITA1-BOM_USAGE = '1'.
    GT_ITA1-DATE = SY-DATUM.
    APPEND GT_ITA1.
*---->item
    GT_STPO-ITEM_NO    = GT_ITAB-ITEM_NO.
    GT_STPO-ITEM_CATEG = GT_ITAB-ITEM_CATEG.
    GT_STPO-COMPONENT  = GT_ITAB-COMPONENT.
    GT_STPO-COMP_QTY   = GT_ITAB-COMP_QTY.
    GT_STPO-COMP_SCRAP = GT_ITAB-COMP_SCRAP.
    GT_STPO-ISSUE_LOC  = GT_ITAB-ISSUE_LOC.
    APPEND GT_STPO.

    AT END OF MATNR.
*---->head
      GT_STKO-BOM_STATUS = '01'.
      GT_STKO-BASE_QUAN  = GT_ITA1-BASE_QUAN.
*      gt_stko-base_unit  = 'EA'.
      APPEND GT_STKO.
*------>creat-bom
      CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
        EXPORTING
          MATERIAL      = GT_ITA1-MATNR
          PLANT         = GT_ITA1-WERKS
          BOM_USAGE     = GT_ITA1-BOM_USAGE
          VALID_FROM    = GT_ITA1-DATE
          I_STKO        = GT_STKO
          FL_BOM_CREATE = 'X'
        TABLES
          T_STPO        = GT_STPO
        EXCEPTIONS
          ERROR         = 1
          OTHERS        = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSEIF SY-SUBRC = 0.
        REFRESH GT_STKO.
        REFRESH GT_STPO.
      ENDIF.
    ENDAT.
  ENDLOOP.
ENDIF.

 

模板

物料编码 工厂 基本数量 BOM项目号 项目类别 BOM 组件 组件数量 部件废品(%) 生产订单发货仓储地点
A1-PHANTOM01 2110 10 10 L A1-RAW01 1   2702
A1-PHANTOM01 2110 10 20 L A1-RAW02 2 6 2802
A1-PHANTOM01 2110 10 30 L A1-RAW 3    
A1-FIN01 2110 1 10 L A1-RAW02 10 3  
A1-FIN01 2110 1 20 L A1-RAW 20 4  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/166523/viewspace-331094/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/166523/viewspace-331094/

你可能感兴趣的:(CSAP_MAT_BOM_MAINTAIN导入BOM)