路边随拍
原文地址:
https://www.ut163.com/fiori_learning_arrangement/sap-cds/define_cds_table_function_function/
定义CDS表函数功能
创建CDS表功能
为CDS表功能创建DDL源
使用AMDP方法创建AMDP类
AMDP功能
完成CDS表功能的定义
在创建CDS时,有一种是定义Define Table Function的CDS,使用此Table Function 的CDS,我觉得主要是使用在更为复杂的CDS中,比如不能简单使用表关联来取得数据时,可使用此定义CDS,通过ABAP Managed Database Procedures (AMDP)创建ABAP CDS Table Function,并调用自定义类方法(此时的类方法,相当于在HANA DB 的存储过程),来处理生成DLL数据,然后再生成相关的其它CDS,以便于消费层(比如ODATA)使用。如图。
此功能使用的是SAP 新AMDP(ABAP托管数据库过程)的基本功能,在这里可以查看AMDP更多介绍。
上图说明了CDS表功能的基本思想:
CDS表功能通过关键字DEFINE TABLE FUNCTION在DDL源中定义。(就像CDS视图是通过关键字DEFINE VIEW在DDL Sources中定义的一样。)
CDS表函数的定义通过添加IMPLEMENTED BY来引用现有的AMDP函数。
ABAP程序(或CDS视图)可以在SELECT语句的from子句中将CDS表功能用作数据源,就像对CDS视图,数据库视图或透明表一样。
CDS框架通过在数据库上调用分配的函数来执行CDS表函数中的SELECT。
1.创建CDS表功能
开发CDS表功能时,以正确的顺序进行操作是最重要的。
1.1.为CDS表功能创建DDL源
使用带有参数的模板定义表功能
定义参数(可选)并返回值(不要忘记客户字段!)
将IMPLEMENTED BY之后的信息保留为itis(未经语法检查检查)
激活DDL源
-
CDS表功能的示例定义 1.2.使用AMDP方法创建AMDP类
创建一个全局类并实现接口IF_AMDP_MARKER_HDB
定义带有添加的FOR TABLE FUNCTION的公共静态方法
将方法实现为AMDP函数
激活全局类
不带参数定义实现CDS表功能的AMDP方法。而是使用FOR FOR TABLE FUNCTION…。然后从CDS表函数获取AMDP方法的签名.
1.3.AMDP功能
AMDP函数使用AMDP类中Method语句的新增加的BY DATABASE FUNCTION。
与AMDP过程实现不同,AMDP函数实现没有导出或更改参数。它们只有一个表格返回值。
ABAP程序不能直接调用AMDP函数实现。但是可以从其他AMDP函数或过程中调用它们。
-
AMDP函数的示例定义 上面的示例显示了AMDP类的定义。AMDP方法FUNCTION旨在由数据库功能实现。它被定义为一种功能方法,即,它仅具有一个表格返回参数,并且仅具有导入参数。
注意:一旦数据库功能实现了此功能方法,就不能再在ABAP中调用它。
-
AMDP功能的示例实现 上面的示例显示了AMDP函数的实现。
使用BY DATABASE FUNCTION代替BY DATABASE PROCEDURE。其余的添加与数据库过程具有相同的含义和值。
在数据库功能的脚本中,语句RETURN是必需的。RETURN语句定义return参数的值。
1.4.完成CDS表功能的定义
在IMPLEMENTED BY之后输入AMDP类和AMDP方法
激活DDL源
在数据预览中测试CDS表功能
您必须先创建并激活DDL Source!
这是因为在定义带有FOR TABLE FUNCTION的AMDP方法时,需要现有的,已激活的CDS Table Function。
另一方面,在AMDP方法之前激活DDL Source没问题。语法检查在IMPLEMENTED BY之后接受不存在的类和/或方法。
一旦完成了AMDP函数的实现,请返回CDS表函数定义并更新AMDP类的名称和AMDP方法。
上面的示例显示了CDS表函数的定义。从外部看,它看起来像CDS视图的定义,带有输入参数name_in和具有三个字段mandt,id和name的元素列表。
推荐阅读:
《ABAP新语法1》
《关于 SM30/VIEW_MAINTENANCE_CALL锁整张表问题》
《使用cl_gui_docking_container 实现多ALV》
《DEMO:S/4 1809 FAGLL03H 增加字段增强》
《几个ABAP实用模板,体力活就别一行行敲了,复制粘贴得了》
《SAP Parallel Accounting(平行分类账业务)配置+操作手册+BAPI demo程序》
《CC02修改确认日期BAPI:Processing of change number was canceled》《我是怎样调试BAPI的,以F-02为例》
《苏州游记》
《杂谈:几种接口》
《RESTful DEMO 一:SAP 如何提供 RESTful Web 服务》
《DEMO search help 增强 ( vl03n KO03 等)》
Debug 系列