SAP BDC 创建物料-源代码

智慧灯盏SAP技术 2025-02-26 16:35:35 75阅读 举报

以下是利用BDC功能创建物料的源代码

*&---------------------------------------------------------------------*
*& Report  ZDZBDC_MM2
*&---------------------------------------------------------------------*

REPORT ZDZBDC_MM2  NO  STANDARD  PAGE HEADING.

DATA:  DATASET( 132)  TYPE  C  VALUE  'ZDZBDC_MM1',
      G_MESSAGE( 100)  TYPE  C,
      FILENAME  TYPE STRING,
      G_REPID  LIKE SY-REPID.

DATA:  BEGIN  OF BDCDATA  OCCURS  0.
         INCLUDE  STRUCTURE BDCDATA.
DATA:  END  OF BDCDATA.

DATA:  BEGIN  OF MSGTAB  OCCURS  0.
         INCLUDE  STRUCTURE BDCMSGCOLL.
DATA:  END  OF MSGTAB.

DATA:  BEGIN  OF MY_DATA,
        MATNR( 018),     "物料号
        MTART( 004),     "物料类型
        MAKTX( 040),     "物料描述
        MATKL( 009),     "物料组
       END  OF MY_DATA.

DATA: IT_DATA  LIKE MY_DATA  OCCURS  0.

SELECTION- SCREEN:  BEGIN  OF  BLOCK SCR1  WITH  FRAME  TITLE  TEXT- 001.

   PARAMETERS FN  LIKE RLGRAP-FILENAME  MEMORY  ID MO1.  "RLGRAP-FILENAME类型 为 CHAR 128

   PARAMETERS: P_UPDATE( 1)  TYPE  C  DEFAULT  'S',   " "A" Asynchronous update. "S" Synchronous processing. "L" Local update. Other As for "A".
              P_MODE( 1)  DEFAULT  'E'.            ""A" Processing with display of screens  "E" Display of screens only if an error occurs
                                                ""P" Processing without display of the screens.  "N" Processing without display of screens. Others Like "A".

SELECTION- SCREEN:  END  OF  BLOCK SCR1.

AT SELECTION- SCREEN  ON  VALUE-REQUEST  FOR FN.

   DATA: I_RC          TYPE  I,
        I_FILETABLE   TYPE FILETABLE.
   CALL  METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
     EXPORTING
      WINDOW_TITLE            =  '选择数据文件'
      FILE_FILTER             =  '文本文件 (*.txt)|*.TXT|全部文件 (*.*)|*.*|'
      MULTISELECTION          = SPACE
     CHANGING
      FILE_TABLE              = I_FILETABLE
      RC                      = I_RC
     EXCEPTIONS
      FILE_OPEN_DIALOG_FAILED =  1
      CNTL_ERROR              =  2
      ERROR_NO_GUI            =  3
      NOT_SUPPORTED_BY_GUI    =  4
     OTHERS                    =  5.

   IF SY-SUBRC =  0  AND I_RC =  1.
     READ  TABLE I_FILETABLE  INTO FN  INDEX  1.
    FILENAME = FN.
   ENDIF.

INITIALIZATION.
G_REPID = SY-REPID.
START- OF-SELECTION.

CALL  FUNCTION  'GUI_UPLOAD'
   EXPORTING
    FILENAME                          = FILENAME     "文件名 必须为 STRING 类型
    FILETYPE                          =  'ASC'
    HAS_FIELD_SEPARATOR               =  'X'          "可以去掉前面的加入TAB 分隔符,如果不去掉刚会出现#,并且会挤掉后面字段的二位
   TABLES
    DATA_TAB                          = IT_DATA.     "内表

LOOP  AT IT_DATA  INTO MY_DATA.

   PERFORM BDC_DYNPRO       USING  'SAPLMGMM'  '0060'.

   PERFORM BDC_FIELD        USING  'BDC_CURSOR'
                                 'RMMG1-MATNR'.

   PERFORM BDC_FIELD        USING  'BDC_OKCODE'
                                 '=ENTR'.

   PERFORM BDC_FIELD        USING  'RMMG1-MATNR'
                                MY_DATA-MATNR.  "物料号

   PERFORM BDC_FIELD        USING  'RMMG1-MBRSH'   "行业类型
                                 'M'.

   PERFORM BDC_FIELD        USING  'RMMG1-MTART'
                                MY_DATA-MTART.  "物料类型

   PERFORM BDC_DYNPRO       USING  'SAPLMGMM'  '0070'.

   PERFORM BDC_FIELD        USING  'BDC_CURSOR'
                                 'MSICHTAUSW-DYTXT(02)'.

   PERFORM BDC_FIELD        USING  'BDC_OKCODE'
                                 '=ENTR'.

   PERFORM BDC_FIELD        USING  'MSICHTAUSW-KZSEL(01)'  "此为选的基本视图一,选中的为X
                                 'X'.

   PERFORM BDC_FIELD        USING  'MSICHTAUSW-KZSEL(02)'  "此为选的基本视图二,选中的为X
                                 'X'.

   PERFORM BDC_DYNPRO       USING  'SAPLMGMM'  '4004'.

   PERFORM BDC_FIELD        USING  'BDC_OKCODE'
                                 '=BU'.

   PERFORM BDC_FIELD        USING  'MAKT-MAKTX'       "物料描述
                                MY_DATA-MAKTX.

   PERFORM BDC_FIELD        USING  'BDC_CURSOR'
                                 'MARA-MATKL'.

   PERFORM BDC_FIELD        USING  'MARA-MEINS'
                                 'PCS'.             "计量单位

   PERFORM BDC_FIELD        USING  'MARA-MATKL'
                                MY_DATA-MATKL.     "物料组

   PERFORM BDC_FIELD        USING  'MARA-MTPOS_MARA'  "普通项目类别组
                                 ''.
   CALL  TRANSACTION  'MM01'  USING BDCDATA  MODE P_MODE  UPDATE P_UPDATE MESSAGES  INTO MSGTAB.

   REFRESH: BDCDATA.        "此处不能用CLEAR: BDCDATA,但可以用 CLEAR: BDCDATA[].因为BDCDATA 是带表头的内表  BEGIN OF BDCDATA OCCURS 0.
ENDLOOP.

LOOP  AT MSGTAB.                             "输出BDC的执行消息

     CALL  FUNCTION  'MESSAGE_TEXT_BUILD'
       EXPORTING
        MSGID               = MSGTAB-MSGID  "Message ID
        MSGNR               = MSGTAB-MSGNR
        MSGV1               = MSGTAB-MSGV1  "此为物料号
        MSGV2               = MSGTAB-MSGV2
        MSGV3               = MSGTAB-MSGV3
        MSGV4               = MSGTAB-MSGV4
       IMPORTING
        MESSAGE_TEXT_OUTPUT = G_MESSAGE.

     WRITE :/ MSGTAB-MSGTYP, G_MESSAGE.

   ENDLOOP.

FORM BDC_DYNPRO  USING  PROGRAM  DYNPRO.
   CLEAR: BDCDATA.
  BDCDATA- PROGRAM  =  PROGRAM.
  BDCDATA- DYNPRO   =  DYNPRO.
  BDCDATA-DYNBEGIN =  'X'.
   APPEND BDCDATA.
ENDFORM.

FORM BDC_FIELD  USING FNAM FVAL.
   CLEAR: BDCDATA.
  BDCDATA-FNAM  = FNAM.
  BDCDATA-FVAL   = FVAL.
   APPEND BDCDATA.
ENDFORM.

版权声明:
作者:智慧灯盏
链接:https://www.erpcool.com/p/3cda613656359.html
来源:SAP技术
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”


登录 后发表评论
0条评论
还没有人评论过~