BDC技术(一个例子)
BDC技術
BDC(Batch Data Conversion):在SAP系統里,由于某種原因,可能需要重復輸入數據,(數據不同,但是操作是相同的,典型的情形就是切換系統的時候,舊系統的數據需要導入SAP),大致過程不外乎是這樣: 輸入一個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
現在假想一種情境,來做一個演示的BDC程序。
由于業務上的需要,某公司打算將某些物料的描述都在后面加上指定的文本Group X,所以需要修改已經存在的物料數據,用T-code:MM02,
外部數據是TXT文本,記錄有N條,如下:
Material NO. Description
6000-00001 XXXXXXX(Group A)
2098-00001 fdfladsfladfl(Group B )
2059-00009 dfdsfreddfalfasfa(Group A)
2003-00003 iadfdafdf,adfasf(Group D)
……
……
下面是“錄”操作的過程,在命令欄里輸入T-code :SHDB,進入如下屏幕:
點New Recodring,出現如下屏幕:
其中Recording 的名字是任意給的。MM02是需要錄的事務代碼。
按下“Start Recording”,就會進入“Change Material”,這時,以下的操作對于用戶來說是一次普通修改物料描述操作,盡管系統在記錄所有的操作。
輸入一個物料后,點擊“Select View(s)”
假設我們只選“Basic Data 1”和“Basic Data 1”
然后點擊綠色的小勾“Enter”
我們在該物料后面添加一個“Group A”,描述改為:
……
然后點“SAVE”,保存這次修改。
現在SAP回到了SHDB,
先點“SAVE”,保存Recording :Ztest,然后點”Back”,返回SHDB的第一屏。
選中“Ztest”,然后點擊“Program”,由SAP自動生成一個程序。
在上面的對話框中輸入程序的名字(注意SAP的命名規范,Y或者Z開頭),確認輸入
再輸入一些程序的屬性信息如下:
點擊“Source Code”,指定“Develop Class”等后,就可以進入ABAP Editor,產生如下代碼:
report ZBDCTEST
no standard page heading line-size 255.
include bdcrecx1.
parameters: dataset(132) lower case.
*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
*
* If it is nessesary to change the data section use the rules:
* 1.) Each definition of a field exists of two lines
* 2.) The first line shows exactly the comment
* '* data element: ' followed with the data element
* which describes the field.
* If you don't have a data element use the
* comment without a data element name
* 3.) The second line shows the fieldname of the
* structure, the fieldname must consist of
* a fieldname and optional the character '_' and
* three numbers and the field length in brackets
* 4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
* data element: MATNR
MATNR_001(018),
* data element: XFELD
KZSEL_01_002(001),
* data element: XFELD
KZSEL_02_003(001),
* data element: MAKTX
MAKTX_004(040),
* data element: MEINS
MEINS_005(003),
* data element: MTPOS_MARA
MTPOS_MARA_006(004),
* data element: GEWEI
GEWEI_007(003),
end of record.
*** End generated data section ***
start-of-selection.
perform open_dataset using dataset.
perform open_group.
do.
read dataset dataset into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=AUSW'.
perform
轉載于:https://www.cnblogs.com/huggins/archive/2009/06/03/1495704.html
總結
以上是生活随笔為你收集整理的BDC技术(一个例子)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD锐龙7000处理器首次公开PCIe
- 下一篇: 北京海淀一小区惊现怪鱼:长嘴尖牙像鳄鱼