在SAP系统中,BDC(Batch Data Communication)是一种用于批量数据输入的技术。它是通过调用事务代码的方式, 通过参数BDC_TAB传递调用过程中所有屏幕的内容及操作。BDC技术的核心思想是将用户的输入转化为一系列的批量输入事务,然后通过编程方式将这些批量输入事务提交到SAP系统中进行处理。因为屏幕处理过程繁琐且复杂,所以SAP提供了一个工具SHDB,用于辅助用户在执行事务代码时记录处理过程.
BDC MODE(输入模式)
BDC MODE参数用于设置BDC的输入模式,常用的取值有'A'、'N'和'E'。
-'A' 表示添加,即将数据插入到系统中;
-"N' 表示更新,即修改系统中已有的数据:
-'E' 表示编辑,即根据用户输入的条件查询并编辑系统中的数据。
BDC OKCODE操作码
BDC OKCODE参数用于定义在事务处理过程中所执行的操作。
BDC_OKCODE 功能描述
=/00. Enter
=/04 保存并后续处理
= /8 F8,Continue or Execute
=/11 F11,Post 表示取消或退出事务处理
=ENTE 回车
=SCHL 组织层次
=BILD 数据
=SELA 全选
=RESA 取消全选
=DEF/DEF_SAVE 保存
=P-- First Page
=P- Previous Page
=P+ Next Page
=P++ Last Page
=AUSW Select view
=MARK Selection On/off
=ABBR/RW 删除
=BU 保存
=ENDE/%EX Exit
=BACK/RW Back
=PICK Pick
=DLT Delete
=UPDA SAVE
=%PRI Print
=%SC Search
=%SC+ Find next
=FCNP 新插入一行item(像BOM的item那种)
=GO Continue
=/AB Go to overview
=ZK Go to additional information
=PI select cursor location
=STER Go to taxes
BDC CURSOR(游标位置)
BDC CURSOR参数用于设置在进行BDC事务处理时,屏幕光标的
位置。通过设置BDC CURSOR参数,可以控制光标的位置以便在屏幕元素中输入或修改数据。
BDC SUBSCR(订阅动作)
BDC SUBSCR参数用于定义BDC事务处理的一些后续动作。常用
的取值有"和'X'。
""表示不启用订阅动作;
-"X'表示启用订阅动作。
BDC CALL TRANSACTION(事务代码)
BDC CALL TRANSACTION参数用于设置所要执行
的SAP事务代码。通过设置该参数,可以自动地执行相应的SAP事务处理。
BDC DATA(数据表)sa
BDC DATA参数用于定义要传输的数据表。对于每一行数据,可以定义
多个列的值,以实现对SAP系统中多个字段的赋值。
clear bdcdata[].
perform bdc_dynpro using 'SAPMP50A' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RP50G-PERNR'
wa_excel-pernr.
perform bdc_field using 'RP50G-TIMR6'
'X'.
* perform bdc_field using 'BDC_CURSOR'
* 'GV_ITEXT(02)'.
* perform bdc_field using 'RP50G-SELEC(02)'
* 'X'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-CHOIC'.
perform bdc_field using 'RP50G-CHOIC'
'0016'.
perform bdc_dynpro using 'SAPMP50A' '1000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_field using 'BDC_OKCODE'
'=INS'.
perform bdc_field using 'RP50G-PERNR'
wa_excel-pernr.
perform bdc_field using 'RP50G-TIMR6'
'X'.
perform bdc_field using 'RP50G-CHOIC'
'合同要素'.
perform bdc_dynpro using 'MP321100' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0016-CTEDT'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0016-BEGDA'
wa_excel-begda.
perform bdc_field using 'P0016-ENDDA'
wa_excel-endda.
perform bdc_field using 'P0016-CTTYP'
'10'.
perform bdc_field using 'P0016-CTEDT'
wa_excel-ctedt.
* perform bdc_field using 'P0016-CTBEG'
* wa_excel-ctbeg.
perform bdc_field using 'P0016-LFZFR'
'42'.
perform bdc_field using 'Q0016-LFZZH'
'天数'.
perform bdc_field using 'P0016-KGZFR'
'6'.
perform bdc_field using 'Q0016-KGZZH'
'月份'.
perform bdc_field using 'P0016-KDGFR'
'13'.
perform bdc_field using 'P0016-KDGF2'
'13'.
*perform bdc_transaction using 'PA30'.