【SAP ABAP系列】ABAP使用AMDP调用HANA存储过程

2020-11-11 14:20:10 浏览数 (1)

数据建模在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程序可以调用上面创建的类。

0 人点赞