1. 程式人生 > >ABAP使用AMDP呼叫HANA儲存過程

ABAP使用AMDP呼叫HANA儲存過程

更多內容關注公眾號:SAP Technical

歡迎關注微信公眾號:SAP Technical

資料建模在SAP HANA檢視中完成,需要讀取檢視的輸出並將其保留在HANA表中。編寫儲存過程以從HANA檢視讀取資料並將資料插入HANA表。

儲存庫儲存過程'DATA_PERSIST'是在TEST包下通過HANA開發透檢視建立的。此儲存過程從HANA檢視讀取資料,並將資料進入“XYZ”模式下的表中。

 

我們建立的view都會在_SYS_BIC模式中建立儲存過程。在該過程中,可以給出預設模式。這裡,給出的預設模式是“XYZ”,因為Table1和Table2是在此模式下建立的。

在Calmonth上建立了一個輸入引數。在這裡,將傳遞calmonth值,然後基於此計算HANA檢視結果。

這是讀寫過程,如下面的指令碼所示。只讀語句已被刪除。

在該過程的第一部分中,'STARTIME'變數用於將當前時間戳值儲存為'YYYYMMDD HH24:MI:SS'格式。建立第二個變數以儲存值'COMMIT'。

注 - AMDP(Abap託管資料庫過程)不支援Commit,rollback等語句。因此,通過解決方法實現同樣的目的。

在第二部分中,資料插入table1中。Table1用於記錄和跟蹤過程的執行日期,程式執行所花費的時間。

稍後,我們將根據將傳遞給儲存過程的calmonth從HANA檢視ABC_CV中讀取資料。(這將在步驟2中的Abap類中顯示)。結果插入表2中。表1和表2在XYZ模式下。

在儲存過程結束時,使用過程的結束時間戳更新Table1(日誌記錄表)。這有助於跟蹤儲存過程的每次執行。

2.在此步驟中,將建立一個Abap類來呼叫儲存過程。這是通過Abap視角在HANA工作室中建立的。

在方法“Datapersist”類下,聲明瞭遊標C_DATE,它儲存最後15個月的calmonth。這裡的要求是僅儲存最近15個月的資料。該資料每天被刪除,每天載入15個月的資料。沒有實施增量/變更記錄機制。

另一個儲存過程“_SYS_BIC”。呼叫“TEST :: DATA_TRUNCATE”,刪除Table2中的資料。這會丟棄table2中的資料。

使用For迴圈,calmonth逐個傳遞給儲存過程。因此,使用此方法,通過逐個傳遞calmonth來呼叫儲存過程15次。這是因為HANA檢視非常複雜並且生成了大量資料。在執行時,HANA檢視可能會佔用大量記憶體和CPU,因此執行會根據每個月進行拆分,而不是同時執行15個月。

載入資料後,呼叫另一個儲存過程“_SYS_BIC”。“TEST :: DATA_MERGE”。這是合併表2的增量,以按照SAP的建議將資料從增量儲存移動到HANA中的主儲存。

下面是用Abap類編寫的程式碼。在Abap類中,可以呼叫儲存過程,也可以在Abap類中編寫整個程式碼。

3.一個Abap程式Z_Data_daily是在BW開發人員的角度下開發的,用於呼叫Abap類/方法,如下所示。現在,Abap程式可以呼叫上面建立的類。