一.ABAP环境配置:
使用AMDP需要配置eclipse环境,使用eclipse软件才能编写类与数据定义语言源。
点击跳转: https://jingyan.baidu.com/article/67508eb471dd5c9ccb1ce458.html
eclipse添加ABAP插件时候,去这里https://tools.hana.ondemand.com/ 查看对应eclipse的对应版本插件链接,如图
二.数据源
ABAP托管数据库过程(ABAP-Managed Database Procedure,以下简称AMDP)是在APAP on SAP HANA开发中的一种优化模式。AMDP使用数据库语言书写,比如Native SQL或者是SQL Script,并且在AMDP类的AMDP方法内实现。因此用它开发数据库过程就有点类似于编辑ABAP类。
简而言之,AMDP允许开发者直接在ABAP中写数据库过程。
数据源可以把它当作一个SAP底表使用,它的优势在于多个数据处理在数据库层,没有占用应用层的内存,提升系统效率;
AMDP还能提供以下好处:
SQL Script的静态代码检查
语法高亮(支持pretty printer格式优化器)
在AMDP内访问其它AMDP方法、ABAP字典的视图和表
可以像普通的ABAP方法一样调用(不包括AMDP function)
使用ST22进行运行时错误的详细分析
AMDP数据源有两部分组成:数据定义语言源+类
-
创建一个: data definition(数据定义)输入名称之后点击完成;
-
修改其中的代码
上代码直接拷贝:
@EndUserText.label: 'LMF_TEST'
define table function ZTB_LMF_TEST
with parameters
@Environment.systemField: #CLIENT
p_clnt : abap.clnt
returns
{
mandt : abap.clnt;
EBELN : ebeln;
EBELP : ebelp;
ERNAM : ernam ;
MATNR : matnr ;
LIFNR : lifnr ;
}
implemented by method zlmf_test=>get_mm_ekpo;
-
创建一个类:填写Z开头类名称,填写描述之后,点击完成。
-
写好取数逻辑和返回参数。
上文本代码:
CLASS zlmf_test DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES: if_amdp_marker_hdb. "固定写法
CLASS-METHODS:get_mm_ekpo for table FUNCTION ztb_lmf_test.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zlmf_test IMPLEMENTATION.
METHOD get_mm_ekpo BY DATABASE
FUNCTION FOR HDB LANGUAGE
SQLSCRIPT OPTIONS READ-ONLY
USING EKKO EKPO .
LT_YSL =
SELECT DISTINCT
A.mandt,
a.EBELN,
b.EBELP,
a.ERNAM ,
b.MATNR,
a.LIFNR
from ekko AS a
left join ekpo as b on a.mandt = b.mandt and a.ebeln = b.ebeln
where A.ERNAM = 'LIMF'
AND a.MANDT = P_CLNT;
RETURN
SELECT
mandt,
EBELN,
EBELP,
ERNAM ,
MATNR,
LIFNR
FROM:LT_YSL;
ENDMETHOD .
ENDCLASS.
- 把数据定义和类同时激活,完成简单数据源
在SAP代码中调取数据源:
参考链接:
详细AMDP解释和实现—>