典型BDC操作过程: 输入一个t-code,进入一个某个屏幕,然后输入一个值(有时还要加上一些附加的checkbox选项等),点执行或者确定按钮,进入另一个屏幕,在某些字段输入值(也可能是标注checkbox选中或者不选中)或者修改这些字段里的值。然后按“Eneter”……最后按“SAVE”……,一条记录完成了,继续下一条,如此循环。
SAP通过一个特殊的程序(T-code:SHDB)把用户的一次业务操作的所有过程记录下来。
从用户输入transaction code(事务代码),点下“Start Recording”开始,对于用户的来说是一次普通的业务操作,但是SAP却在记录:
1.光标放到哪个字段,(在程序中不用改变)
2.填入了什么值,(变量,循环中的Internal Table 某个字段)
3.点击了什么按钮(在程序中不用改变)
本次操作的作为一个“代表”,是一个“模板”,告诉SAP系统以怎样的方式来执行程序,也就是用计算机的语言来描述如果手工操作的话应该是怎样的一个过程。
用BDC技术编程时,有以下几个步骤:
1.把外部的数据源(Txt,Excel等)用读进internal table或者用do enddo循环。
2.在循环里,把用SHDB记录的步骤重复执行N次,(N = Dialog屏幕数量)(不是很清楚这句话)这时实际上并没行完成数据的入,系统只是在“填表”,填一个叫做“BDCData”的Internal Table。
填完bdcdata以后,用call transaction ‘XXXX’ using bdc……这个命令来真正的commit动作或者call function 'BDC_Insert'在建立一个session。并把执行的结果返回给messtab这个Internal Table
下面是“录屏”操作的过程:在命令栏里输入T-code :SHDB,点击New Recodring,填写Recording和T-code。保存返回后填写一个录屏需要的代码名称。这样一个录屏的过程所产生的代码就产生了。
do.
read dataset dataset into record.“逐行读出txt文本中的记录,
if sy-subrc <> 0. exit. endif. “如出错就退出
A、指定bdc_dynpro的实参,告知系统dialog程序名称及screen perform bdc_dynpro using 'SAPMV60A' '0001'.
B、指定bdc_field的实参,告知系统把光标放在哪个字段
perform bdc_field using 'BDC_CURSOR'
'VBRK-VBELN'.
C、告知系统ok_code是什么,也可以认为是去点哪个按钮
perform bdc_field using 'BDC_OKCODE'
'/00'.
这里是通过read dataset 读取的外部的文件中的记录,record是一个用于临时保存数据的仅有一行的work area。
两个重要的internal table声明:bdcdata及messt
两个重要的form :bdc_dynpro,bdc_field
如何创建实用call transaction方法的BD
转自http://www.itpub.net/viewthread.php?tid=979793
CALL TRANSACTION USING... 参数祥解
转自http://tsaihapppy82.spaces.live.com/blog/cns!DF64AEE957C9D9FD!3636.entry