最近abap开发是越来越方便了,尤其是可以使用cds之后,select的速度简直要上天,大量的数据计算过程可以移到数据库层面了。
amdp实际上就是直接在abap里写hana的存储过程,更灵活、更容易扩展、调试和今后维护。
以下是根据scn上的文章做的一个hello world,记录下来方便后续做范式。
开发工具我使用的是Eclipse,安装了SAP的开发插件。
首先,我们需要定义一个类来实现IF_AMDP_MARKER_HDB,因为只有实现这个类的类里才能写hana的存储过程。
然后,我们就可以在abap程序、函数等地方调用自定义的类来获取数据了。
ps.Eclipse里格式化abap代码【Shift + F1】,激活【Ctrl + F3】,运行F8.
附上代码:
实现IF_AMDP_MARKER_HDB类的自定义AMDP类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
CLASS ZTESTK DEFINITION PUBLIC. PUBLIC SECTION. TYPES : TT_SCARR TYPE TABLE OF SCARR, TT_SFLIGHT TYPE TABLE OF SFLIGHT. INTERFACES : IF_AMDP_MARKER_HDB. METHODS : MY_METHOD IMPORTING VALUE(IM_CARRID) TYPE SCARR-CARRID EXPORTING VALUE(ET_SCARR) TYPE TT_SCARR VALUE(ET_SFLIGHT) TYPE TT_SFLIGHT. ENDCLASS. CLASS ZTESTK IMPLEMENTATION. METHOD MY_METHOD BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING SCARR SFLIGHT. ET_SCARR=SELECT * FROM SCARR WHERE CARRID= IM_CARRID; ET_SFLIGHT=SELECT * FROM SFLIGHT WHERE CARRID = IM_CARRID; ENDMETHOD. ENDCLASS. |
调用AMDP类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
*&---------------------------------------------------------------------* *& Report ZFITEST001 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZFITEST001. PARAMETERS : P_CARRID TYPE SCARR-CARRID DEFAULT 'AA'. DATA : R_AMDP TYPE REF TO ZTESTK, ET_SCARR TYPE TABLE OF SCARR, R_SALV TYPE REF TO CL_SALV_TABLE. CREATE OBJECT R_AMDP. R_AMDP->MY_METHOD( EXPORTING IM_CARRID = P_CARRID IMPORTING ET_SCARR = ET_SCARR ). TRY. CALL METHOD CL_SALV_TABLE=>FACTORY IMPORTING R_SALV_TABLE = R_SALV CHANGING T_TABLE = ET_SCARR. CATCH CX_SALV_MSG . ENDTRY. R_SALV->DISPLAY( ). |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/2946.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。