SAP_ABAP_BDC詳細使用_第1頁
SAP_ABAP_BDC詳細使用_第2頁
SAP_ABAP_BDC詳細使用_第3頁
SAP_ABAP_BDC詳細使用_第4頁
SAP_ABAP_BDC詳細使用_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、傳輸數據的過程1. 獲取要傳輸的數據(路徑文件名格式)2. 轉換數據格式,使其成為系統(tǒng)可接受的格式(Sender Structure Receiver Sructure)3. 傳輸4. 反饋BDC批導入是傳遞大批量數據到R/3的一項標準技術。其模擬事務流程傳遞數據,數據就像在線輸入一樣進行傳遞。該技術的優(yōu)點是會執(zhí)行事務的相關檢查,因此可以保證數據的一致性。批導入過程分為兩步:1. 創(chuàng)建一個批導入session ,其中包括所有相關的數據。2. 處理批導入session,將其中包含的數據傳入R/3系統(tǒng)。數據傳輸工作臺只執(zhí)行第一步。大多數SAP標準數據傳輸程序都使用的是批導入技術。數據傳輸程序創(chuàng)建一

2、個批導入session,其在遲后一個時間處理。批導入可以以多種方式執(zhí)行: 前臺 后臺 在處理過程中顯示錯誤信息如果想對數據傳輸進行檢查,可以在前臺處理批導入或以顯示錯誤信息的方式執(zhí)行。如果想傳遞數據或測試其性能,應該在后臺處理。特點分析簡單地講BDC就是先把相應事務的處理過程錄制下來,然后讓系統(tǒng)自動執(zhí)行特定的事務過程,在執(zhí)行的過程中把需要傳輸的數據輸入進去。所以可以看出BDC的優(yōu)點是并不要求使用者對業(yè)務知識有多了解,只要相應的過程可以錄制下來,就可以反復執(zhí)行錄制的過程,把數據輸入系統(tǒng)。但BDC有一個缺點,就是輸入數據時,如果項目欄的記錄很多而需要換頁時,不同的程序可能換頁方式不同,并且不同的顯

3、示器所顯示的行項目數量也不一樣多,會出現執(zhí)行不下去或者遺漏數據的情況,這個問題比較棘手。獲取源數據一般情況下,在進行傳輸之前要把數據放入內表l 從系統(tǒng)內部獲取例如,以ALV形式輸出數據后此時,數據存放在與ALV控件相對應的內表中l(wèi) 從系統(tǒng)外部獲取CALL FUNCTIONDATA_UPLOAD把數據由系統(tǒng)外部上傳到ABP的內表中,這里的外部數據有嚴格的格式要求。如果源數據是存放在EXCEL中,需要將其另存為以Tab鍵格開的文本文件。錄屏作用:錄制特定事務的執(zhí)行過程,得到相應事務的數據的BDCTATA格式 BDCDATA是以BDC方式進行數據傳輸的數據格式,如前文所說的Receiver Sruc

4、ture 關于BDCDATA可以在SE11下看到系統(tǒng)定義的標準結構。T_CODE:SHDB生成代碼:錄屏之后先把錄制的代碼保存起來,然后根據保存的代碼生成BDC代碼段,具體生成辦法有以下2種: 可以把保存號的源代碼導出到本地文件(一般是text文件),然后可以從該文件中拷貝相應的代碼段到特定程序。方法:選擇錄屏代碼“導出”按鈕 也可以讓系統(tǒng)自己生成程序代碼方法:選擇錄屏代碼“程序”按鈕數據轉換目的:把要輸入的數據轉換為BDCDATA的格式,即前面所說的Sender Structure Receiver Sructure方法:一般的做法是數據在進入內表之前按照相應需要一條記錄占據一個內表行,然后

5、循環(huán)內表,把內表各字段的數據賦給BDCDATA執(zhí)行一般有兩種方法可用于執(zhí)行BDC:CALL TRANSACTION和CALL FUNCTION BDC_INSERT,其中在使用后者時候需要先打開一個SESSION,可以通過CALL FUNCTION BDC_OPEN_GROUP來實現該功能。一般情況下,推薦使用前者,所以主要講該方法。下面的例子中2和3有重復。方法1(推薦)CALL TRANSACTION TCODE USING BDCDATA MODE CTUMODE UPDATE CUPDATE MESSAGES INTO MESSTAB.參數說明:TCODE:相應事務的事務碼MODE:

6、A: show all dynpros E: show dynpro on error only N: do not display dynproUPDATE: S: synchronously A: asynchronously L: localMESSAGES:用于存放消息,系統(tǒng)中定義了一個標準的消息結構BDCMSGCOLL,用于存放消息,可在SE11低下查看該標準結構的信息。如果在調用事務時指定了該表,那么不管是否有錯誤,相應的消息都會進入該表。方法2IF SESSION = X. CALL FUNCTION BDC_INSERT EXPORTING TCODE = TCODE TABL

7、ES DYNPROTAB = BDCDATA.方法3IF E_GROUP_OPENED = . CALL FUNCTION BDC_OPEN_GROUP EXPORTING CLIENT = SY-MANDT GROUP = E_GROUP USER = E_USER KEEP = E_KEEP HOLDDATE = E_HDATE. E_GROUP_OPENED = X. ENDIF. CALL FUNCTION BDC_INSERT EXPORTING TCODE = TCODE TABLES DYNPROTAB = BDCDATA.說明:CALL FUNCTION BDC_OPEN_GR

8、OUP的作用就是為了打開一個SESSION,這一點通過比較2,3也可以看出來。示例(操作步驟)1. 獲取源數據:一般可通過CALL FUNCTION的方式從系統(tǒng)外部獲取源數據 CALL FUNCTION WS_UPLOAD EXPORTING* CODEPAGE = FILENAME = P_FLNAME FILETYPE = DAT* HEADLEN = * LINE_EXIT = * TRUNCLEN = * USER_FORM = * USER_PROG = * DAT_D_FORMAT = * IMPORTING* FILELENGTH = TABLES DATA_TAB = I_MA

9、IN* EXCEPTIONS* CONVERSION_ERROR = 1* FILE_OPEN_ERROR = 2* FILE_READ_ERROR = 3* INVALID_TYPE = 4* NO_BATCH = 5* UNKNOWN_ERROR = 6* INVALID_TABLE_WIDTH = 7* GUI_REFUSE_FILETRANSFER = 8* CUSTOMER_ERROR = 9* NO_AUTHORITY = 10* OTHERS = 11 . IF SY-SUBRC 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MS

10、GNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.關于FUNCTION WS_UPLOAD的詳細參數可在SE37低下查看。還有一個FUNCTION UPLOAD有相同的功能。2. 錄屏第一步:進入事務記錄器T_CODE:SHDB第二步:創(chuàng)建新記錄在Transaction Recorder: Recording Overview屏幕中選擇New recording按鈕創(chuàng)建新記錄第三步:命名新記錄,并輸入相應的事務碼其它的參數是對執(zhí)行方式的詳細設置,可先不考慮事務碼給記錄取名第四步:執(zhí)行相應的事務操作。下面的執(zhí)行過程與相應事務的處理相同,事務

11、操作完成之后,系統(tǒng)會提示你要不要保存輸入的數據,選擇是。第五步:保存記錄然后系統(tǒng)會顯示錄制的源代碼,選擇保存按鈕,把新的記錄保存到記錄條目中去如果在沒有保存的情況下選擇推出,系統(tǒng)會提示你要不要把新的記錄保存起來,選擇是。第六步:生成代碼段有兩種方法可用來生成代碼段,第一種是讓系統(tǒng)根據保存的記錄自動生成BDC程序,方法是選擇相應的記錄(該記錄會變成棕色),然后選擇Program按鈕,系統(tǒng)會根據所選擇的記錄,自動生成一個Report程序,可根據該程序編寫你自己的程序。讓系統(tǒng)用記錄的條目生成一個BDC程序或者也可以把記錄中的源代碼導出到本地文件。方法是雙擊相應的記錄,顯示其內容,然后選擇導出按鈕,再

12、按系統(tǒng)的要求選擇存放的路徑,或者需要時重新命名,這樣做的好處是,輸出的代碼是大寫的,可通過拷貝保存的代碼寫程序。s導出到本地文件3. 數據格式轉換數據轉換就是把用內表存放的數據轉換為BDCDATA的形式。一般可以在上載數據時,是根據情況把數據按一定的結構一條一條分別存放在內表中,然后循環(huán)內表,把內表的字段賦給BDCDATA ,錄制的BDCDATA中包含一些其它的字段,這是讓系統(tǒng)識別的,不用太注意,只需要把內表中要輸入的數據賦給相應的bdc_field。 LOOP AT I_MAIN INTO W_MAIN. perform bdc_dynpro using SAPLMGMM 0060. per

13、form bdc_field using BDC_CURSOR RMMG1-MATNR. perform bdc_field using BDC_OKCODE =AUSW. perform bdc_field using RMMG1-MATNR 物料編號 I_MAIN-MATNR. perform bdc_field using RMMG1-MBRSH 行業(yè)類型 I_MATNR-MBRSH. perform bdc_field using RMMG1-MTART 物料類型 I_MATNR-MTART. perform bdc_dynpro using SAPLMGMM 0070. perfor

14、m bdc_field using BDC_CURSOR MSICHTAUSW-DYTXT(06). perform bdc_field using BDC_OKCODE =ENTR. perform bdc_field using MSICHTAUSW-KZSEL(01) X. perform bdc_field using MSICHTAUSW-KZSEL(02) X. perform bdc_field using MSICHTAUSW-KZSEL(04) X. perform bdc_field using MSICHTAUSW-KZSEL(05) X. perform bdc_fie

15、ld using MSICHTAUSW-KZSEL(06) X. perform bdc_field using MSICHTAUSW-KZSEL(12) X. perform bdc_field using MSICHTAUSW-KZSEL(13) X. perform bdc_dynpro using SAPLMGMM 0080. perform bdc_field using BDC_CURSOR RMMG1-LGORT. perform bdc_field using BDC_OKCODE ENTR. perform bdc_field using RMMG1-WERKS 工廠 I_M

16、ATNR-WERKS. perform bdc_field using RMMG1-LGORT 庫存地點 I_MATNR-LGORT. perform bdc_dynpro using SAPLMGMM 4000. perform bdc_field using BDC_OKCODE /00. perform bdc_field using BDC_CURSOR MAKT-MAKTX. perform bdc_field using MAKT-MAKTX 物料描述 I_MATNR-MAKTX. perform bdc_dynpro using SAPLMGMM 4000. perform bd

17、c_field using BDC_OKCODE /00. perform bdc_field using BDC_CURSOR MAKT-MAKTX. perform bdc_field using MAKT-MAKTX BDC測試數據. perform bdc_dynpro using SAPLMGMM 4000. perform bdc_field using BDC_OKCODE /00. perform bdc_field using MAKT-MAKTX BDC測試數據. perform bdc_field using BDC_CURSOR MARC-LADGR. perform

18、bdc_field using MARC-LADGR 0001. perform bdc_dynpro using SAPLMGMM 4000. perform bdc_field using BDC_OKCODE PICK. perform bdc_field using MAKT-MAKTX BDC測試數據. perform bdc_field using BDC_CURSOR MARC-DISMM. perform bdc_field using MARC-DISMM M0. perform bdc_field using MARC-DISPO 000. perform bdc_fiel

19、d using MARC-DISLS 2D. perform bdc_dynpro using SAPLMGMM 4000. perform bdc_field using BDC_OKCODE PICK. perform bdc_field using BDC_CURSOR MAKT-MAKTX. perform bdc_field using MAKT-MAKTX BDC測試數據. perform bdc_field using MARC-BESKZ X. perform bdc_field using MARC-FHORI 000. perform bdc_field using MARC-DZEIT I_MATNR-DZEIT. perform bdc_dynpro using SAPLSPO1 0300. perform bdc_field using BDC_OKCODE =YES. perform bdc_transaction using MM01. ENDLOOP.4. 執(zhí)行上面的代碼段中已經包含執(zhí)行部分: perform bdc_transaction using MM01.這是由于數據結構的特點適合這樣處理。另外需要注意,在執(zhí)行BDC的之前要打開一個SESSION,執(zhí)行完畢之后要關閉該SESSION,這是通過打

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論