时代强个人网站,三亚发布最新消息,门户网站需求,wish跨境电商平台1. 什么是AMDP(ABAP-Managed Database Procedure) 1.#xff09;AMDP - ABAP管理数据库程序#xff0c;是一种程序#xff0c;我们可以使用SQLSCRIPT在AMDP内部编写代码#xff0c;SQLSCRIPT是一种与SQL脚本相同的数据库语言#xff0c;这种语言易于理解和编码。 将AM…1. 什么是AMDP(ABAP-Managed Database Procedure) 1.AMDP - ABAP管理数据库程序是一种程序我们可以使用SQLSCRIPT在AMDP内部编写代码SQLSCRIPT是一种与SQL脚本相同的数据库语言这种语言易于理解和编码。 将AMDP方法内的逻辑编码后可以在ABAP报表中使用也可以在CDS Table Function中使用AMDP方法。 2.使用AMDP可以将ABAP Application编写的代码通过HANA的新特性(代码下推技术)将逻辑在数据库层执行。2. AMDP的弊端 1.AMDP还不能在Eclipse、HANA Studio上进行Debug操作 2.不能使用mseg表但可以使用 MATDOC的代理对象 NSDM_V_MSEG 代替 3.数据类型必须是表或者标准类型INT CHAR … 4.对于传入的Select-option必须先在ABAP中用方法 cl_shdb_seltabcombine_seltabs处理后在传入AMDP然后在AMDP中用 APPLY_FILTER 5.AMDP不能自动处理Client信息使用时必须传入Client信息并在ABDP中使用Where条件 SESSION_CONTEXT(‘CLIENT’) 引入3. 实现简单的AMDP Functions for AMDP Methods 1.在Eclipse或者HANA Studio新建一个ABAP Class 2.实现Class必须注明实施的InterfaceIF_AMDP_MARKER_HDB目前只支持HDB若未来支持其他DB接口名称则为IF_AMDP_MARKER_DB_NAME By database Procedure 实现一个数据库过程。使用此方法AMDP方法将自动在HANA系统中创建一个过程 FOR HDB 指定数据库类型为 HANA database LANGUAGE SQLSCRIPT 指定用于实现AMDP的数据库特定语言为 SQLSCRIPT OPTION READ-ONLY 设置只能在数据库过程中读取 USING table_name/view_name 设置使用的数据库表或视图 CLASS zamdp_demo001 DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.types:ty_mara type table of mara. 这边先声明一下结构/表类型 不然下面方法exporting的type ***的时候会报一些有的没有的错误interfaces:IF_AMDP_MARKER_HDB.class-methods:get_data_back importing value(i_mandt) type mara-mandtexporting value(et_mara) type ty_mara. 如果上面没有声明这边type会报错The method GET_DATA_BACK contains a database procedure, which means that ET_MARA cannot have a structured type.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.CLASS zamdp_demo001 IMPLEMENTATION.method get_data_back by database procedurefor hdb language sqlscriptoptions read-onlyusing mara makt. 用到什么表都要写在这
*get_data 这边左连接右链接要加上outer不然不能达到左连和右连的效果et_mara with makt_tmp as ( select * from makt where maktx like %12)select a.*from mara as aright outer join makt_tmp as b on a.matnr b.matnrwhere a.mandt :i_mandt;endmethod.
ENDCLASS. 4. 在ABAP中调用AMDP *---------------------------------------------------------------------*
* Report ZTMP_TEST_IT029
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
REPORT ZTMP_TEST_IT029.DATA: lt_mara TYPE TABLE OF mara.START-OF-SELECTION.IF cl_abap_dbfeaturesuse_features(EXPORTINGrequested_features VALUE #( ( cl_abap_dbfeaturescall_amdp_method )( cl_abap_dbfeaturesamdp_table_function ) ) ).zamdp_demo001get_data_back(EXPORTINGi_mandt sy-mandtIMPORTINGet_mara lt_mara ).cl_demo_outputdisplay( lt_mara ).ELSE.cl_demo_outputdisplay( 警告当前系统不支持AMDP. ).ENDIF.