ABAP data extract 数据抽取总结
這一個(gè)星期做得最多的工作就是Dataextract,以下是我這一個(gè)星期以來對(duì)data extract的工作總結(jié)。
?
所謂Data extract就是通過SAP ABAP代碼對(duì)數(shù)據(jù)庫數(shù)據(jù)進(jìn)行抽取的操作,然后導(dǎo)出并保存為DAT文件。
?
在Commscope中,有SAP的ERP系統(tǒng)和BI的數(shù)據(jù)系統(tǒng)(貌似叫dataStage),由于兩個(gè)系統(tǒng)的數(shù)據(jù)有時(shí)會(huì)出現(xiàn)不一致的現(xiàn)象,一般情況下是BI系統(tǒng)的數(shù)據(jù)較少,這時(shí)就需要Dataextract。
?
當(dāng)BI team 所需要的數(shù)據(jù)不存在與 BI的系統(tǒng)中時(shí), 此時(shí)就需要對(duì)SAP系統(tǒng)的數(shù)據(jù)進(jìn)行抽取,并且導(dǎo)入到BI的系統(tǒng)中。
?
Data Extract 的操作是在SAP ABAPWorkbench下完成的,通過ABAP代碼將數(shù)據(jù)以DAT的文件格式保存到Aplicationserver上。然后BI人員會(huì)通過他們的工具對(duì)DAT文件進(jìn)行解析處理,這個(gè)過程需要SAP ABAP編程人員以及BI的編程人員共同完成。
?
?
以下是如何進(jìn)行Data extract
?
首先,要在SAP 系統(tǒng)中建立一個(gè)用于抽取的程序,并且要符合以下的命名規(guī)則
程序名:ZBI_XXX(數(shù)據(jù)庫表名)
Title: BI:CommScope program for XXX extract (SAP 1)
BI:Legacy Andrew program for XXX extract (SAP 2)
?
Develp class ( ECC6-Package ):ZBI
?
Authorization group:Z_XXXX(first four letters of the tablename)
CTS ( Request ): [issue number] – ABAP extract for tableXXXX(table name)
?
在符合的規(guī)范的情況下,要進(jìn)行ABAP編程以實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)抽取。
1.??????使用Tables關(guān)鍵字對(duì)所要抽取的表進(jìn)行聲明
2.??????建立存放數(shù)據(jù)的內(nèi)表,命名規(guī)范為IT_XXX(數(shù)據(jù)庫表名)
3.??????建立存放數(shù)據(jù)的structure,命名規(guī)范ST_1.
4.??????structure的組建要符合命名規(guī)范F_1(字段長(zhǎng)度) TYPE C, “ For [數(shù)據(jù)庫表名]-[字段名]
5.??????聲明i類型變量以記錄數(shù)據(jù)的數(shù)量
6.??????聲明 文件名稱DATA: DSN?? LIKERLGRAP-FILENAME. 并聲明用來儲(chǔ)存DAT文件名稱的變量DATA: V_PARAM(255) TYPE C.
7.??????生成DAT文件的名稱,
8.??????調(diào)用 Function module ‘FILE_GET_NAME’ 獲取文件路徑并傳遞給DSN。
9.??????打開文件進(jìn)行數(shù)據(jù)抽取,OPEN DATASET DSN FOR OUTPUT IN TEXT MODE.
10.??用Select循環(huán)對(duì)數(shù)據(jù)庫表內(nèi)的數(shù)據(jù)進(jìn)行查詢,并放到IT_XXX內(nèi)表中。
11.?? 將IT_XXX中的數(shù)據(jù)按照對(duì)應(yīng)關(guān)系復(fù)制到IT_1中的字段中
12.?? 將結(jié)構(gòu)體 IT_1傳到指定的文件中TRANSFER IT_1 TO DSN LENGTH nn(結(jié)構(gòu)體所有字段的長(zhǎng)度之和)。
13.?? 把記錄行數(shù)的變量疊加。
14.??endselect以后,將記錄行數(shù)的變量打印出來
15.?? 關(guān)閉文件傳輸CLOSE DATASETDSN.
?
注:?也正是在寫總結(jié)的時(shí)候,發(fā)現(xiàn)了自己程序中的大BUG!在使用move-corresponding IT_XXX to IT_1的時(shí)候,IT_1里根本沒有數(shù)據(jù),因?yàn)檫@兩個(gè)結(jié)構(gòu)體的字段名根本就不一樣!!
好危險(xiǎn)。。。 幸虧發(fā)現(xiàn)。。。
?
?
?
由于data extract程序都使用的是固定模板,只需要更改數(shù)據(jù)庫表名和字段名即可,但是當(dāng)數(shù)據(jù)庫表中存在大量字段時(shí),比如說BSAD數(shù)據(jù)庫表,里面就有160多個(gè)字段,如果你每一個(gè)字段都查數(shù)據(jù)庫,并且計(jì)算所有字段的長(zhǎng)度之和的話,工作量將會(huì)非常龐大,而且抽取的數(shù)據(jù)還不一定準(zhǔn)確,所以我自己開發(fā)了一個(gè)專門打印 extract data program code的程序,只需要輸入數(shù)據(jù)庫表名就可以自動(dòng)打印出代碼,不僅節(jié)省了時(shí)間,而且還可以降低手動(dòng)編碼的錯(cuò)誤幾率。
總結(jié)
以上是生活随笔為你收集整理的ABAP data extract 数据抽取总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Extract
- 下一篇: Data Remove 程序总结