以下是利用BDC功能創(chuàng)建物料的源代碼
*&---------------------------------------------------------------------* *& 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 = '選擇數(shù)據(jù)文件' 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 分隔符,如果不去掉剛會出現(xiàn)#,并且會擠掉后面字段的二位 TABLES DATA_TAB = IT_DATA. "內(nèi)表 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' "行業(yè)類型 '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 是帶表頭的內(nèi)表 BEGIN OF BDCDATA OCCURS 0. ENDLOOP. LOOP AT MSGTAB. "輸出BDC的執(zhí)行消息 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.