*BDC 相关定义 DATA: BEGIN OF BDCDATA OCCURS 0. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDCDATA. DATA: BEGIN OF T_LOG OCCURS 0. INCLUDE STRUCTURE BDCMSGCOLL. DATA: KEYTEXT(100) TYPE C. DATA: SEQNO TYPE I. DATA: END OF T_LOG. FORM SUB_IMPORT_ZC01_A811. DATA: L_COLCNT TYPE KCD_EX_COL_N. LOOP AT <DYN_TABLE> INTO <DYN_WA>. * 插入一条记录,表示以下日志信息为第n条数据的处理日志 T_LOG-SEQNO = SY-TABIX. APPEND T_LOG. CLEAR T_LOG. L_COLCNT = 1. PERFORM BDC_DYNPRO USING 'SAPMV13A' '0100'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ANTA'. PERFORM BDC_FIELD USING 'RV13A-KSCHL' 'ZC01'. * 选择关键字组合 PERFORM BDC_DYNPRO USING 'SAPLV14A' '0100'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_FIELD USING 'RV130-SELKZ(6)' 'X'. * Next scrren PERFORM BDC_DYNPRO USING 'SAPMV13A' '1811'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'. *工厂 ASSIGN COMPONENT 'COL0001' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM BDC_FIELD USING 'KOMG-WERKS' <DYN_FIELD>. *产品 ASSIGN COMPONENT 'COL0002' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM BDC_FIELD USING 'KOMG-MATNR(1)' <DYN_FIELD>. *有效从 ASSIGN COMPONENT 'COL0003' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM SUB_CONVERT_DATE USING <DYN_FIELD> <DYN_FIELD>. PERFORM BDC_FIELD USING 'RV13A-DATAB(1)' <DYN_FIELD>. *有效到 ASSIGN COMPONENT 'COL0004' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM SUB_CONVERT_DATE USING <DYN_FIELD> <DYN_FIELD>. PERFORM BDC_FIELD USING 'RV13A-DATBI(1)' <DYN_FIELD>. *单位 ASSIGN COMPONENT 'COL0005' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM BDC_FIELD USING 'KONP-KMEIN(1)' <DYN_FIELD>. *价格 ASSIGN COMPONENT 'COL0006' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. PERFORM BDC_FIELD USING 'KONP-KBETR(1)' <DYN_FIELD>. *价格单位 PERFORM BDC_FIELD USING 'KONP-KONWA(1)' 'CNY'. ** 光标放在第一行 * PERFORM bdc_field USING 'BDC_CURSOR' 'KONP-KBETR(01)'. * 调用BDC PERFORM SUB_CALL_TRANS USING 'MEK1'. ENDLOOP. DATA: L_CSEQNO TYPE I. "当前日志所属数据序号 LOOP AT T_LOG. IF T_LOG-SEQNO NE SPACE. L_CSEQNO = T_LOG-SEQNO. "获取当前日志信息所属数据序号 ENDIF. IF ( T_LOG-MSGID = 'VK' AND T_LOG-MSGNR = '023' ) OR ( T_LOG-MSGID = '06' AND T_LOG-MSGNR = '335' ). * 如果有MSGID = 'VK' 且 MSGNR = '023',则表示,该数据保存成功 READ TABLE <DYN_TABLE> INTO <DYN_WA> INDEX L_CSEQNO. IF SY-SUBRC = 0. ASSIGN COMPONENT 'ROWCOLOR' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. <DYN_FIELD> = 'C200'. MODIFY <DYN_TABLE> FROM <DYN_WA> INDEX L_CSEQNO. ENDIF. ENDIF. ENDLOOP. ENDFORM. "SUB_IMPORT_ZC01_A811 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. FORM SUB_CALL_TRANS USING P_TCODE. DATA: BEGIN OF LT_LOG OCCURS 0. INCLUDE STRUCTURE BDCMSGCOLL. DATA: END OF LT_LOG. CALL TRANSACTION P_TCODE USING BDCDATA MODE P_MODE UPDATE 'S' MESSAGES INTO LT_LOG . LOOP AT LT_LOG. MOVE-CORRESPONDING LT_LOG TO T_LOG. T_LOG-SEQNO = 0. APPEND T_LOG. CLEAR T_LOG. ENDLOOP. CLEAR LT_LOG. REFRESH LT_LOG. CLEAR BDCDATA. REFRESH BDCDATA. ENDFORM.