BDC
BDC录制
T-CODE: SHDB
输入事务代码之后进行步骤录制,在录制完成之后点击保存。
将对应的BDC记录导出为程序。
程序调用
将BDC导出的程序的所有PERFORM复制到需要调用的程序中。
删去不是手动填入的PERFORM行,并将手动填入的字段用工作区替换。
DATA:LV_MODE.
LV_MODE = 'N'.
DATA: GT_MESSAGE TYPE STANDARD TABLE OF BDCMSGCOLL,
GS_MESSAGE TYPE BDCMSGCOLL.
DATA: GT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
GST_BDCDATA TYPE BDCDATA.
FORM FRM_BDC_CREATE.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO_TOPLINE-SUPERFIELD'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
GS_DATA-LLIEF. "供应商
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
GS_DATA-BEDAT. "凭证日期
"....
CLEAR GS_DATA.
CALL TRANSACTION 'ME21N' USING GT_BDCDATA "事务代码
MODE LV_MODE "MODE值有A、E、N A表示BDC所有步骤都展示,E表示出错才展示,N不展示
UPDATE 'S'
MESSAGES INTO GT_MESSAGE. "将返回的消息存入GT_MESSAGE
ENDFORM.
对于FRM_BDC_CREATE中的两种FORM :BDC_DYNPRO 和 BDC_FIELD,通常情况下使用的时候直接复制就可以了,不需要做更改。具体内容如下:
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR GST_BDCDATA.
GST_BDCDATA-PROGRAM = PROGRAM.
GST_BDCDATA-DYNPRO = DYNPRO.
GST_BDCDATA-DYNBEGIN = 'X'.
APPEND GST_BDCDATA TO GT_BDCDATA.
ENDFORM.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR GST_BDCDATA.
GST_BDCDATA-FNAM = FNAM.
GST_BDCDATA-FVAL = FVAL.
APPEND GST_BDCDATA TO GT_BDCDATA.
ENDFORM.
读取程序返回的消息的具体信息
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
IMT_BDCMSGCOLL = GT_MESSAGE
EXT_RETURN = LT_BAPIRETURN.