如何列出标准CDS视图的所有已创建扩展?是否有可用FM或类?
获取指定CDS视图扩展的函数模块与类方法
以下是两种可靠的方式来获取指定CDS视图的所有现有扩展名称:
1. 函数模块 RDD_DDL_GET_EXTENSIONS
这个函数模块专门用于检索ABAP字典对象的扩展信息,支持CDS视图作为输入:
- 输入参数:
OBJECT_NAME(传入CDS视图的名称,需与ABAP字典中定义的名称一致) - 输出表:
EXTENSIONS,其中EXTENSION_NAME字段即为扩展的名称
示例代码:
DATA: lt_extensions TYPE TABLE OF rdd_extension, ls_extension TYPE rdd_extension. CALL FUNCTION 'RDD_DDL_GET_EXTENSIONS' EXPORTING object_name = 'Z_MY_CDS_VIEW' " 替换为目标CDS视图名称 TABLES extensions = lt_extensions. " 遍历输出所有扩展名称 LOOP AT lt_extensions INTO ls_extension. WRITE: / '扩展名称:', ls_extension-extension_name. ENDLOOP.
2. 类方法 CL_DD_DDL_SERVICE=>GET_EXTENSIONS
这是ABAP 7.50及以上版本提供的现代化API,封装了更简洁的元数据访问逻辑:
- 输入参数:
IV_OBJECT_NAME(CDS视图名称) - 返回值:类型为
IF_DD_DDL_TYPES=>TT_EXTENSION的内表,其中NAME字段对应扩展名称
示例代码:
DATA: lt_extensions TYPE if_dd_ddl_types=>tt_extension, ls_extension TYPE if_dd_ddl_types=>ty_extension. lt_extensions = cl_dd_ddl_service=>get_extensions( iv_object_name = 'Z_MY_CDS_VIEW' ). " 遍历输出所有扩展名称 LOOP AT lt_extensions INTO ls_extension. WRITE: / '扩展名称:', ls_extension-name. ENDLOOP.
注意事项
- 确保执行代码的用户拥有访问CDS视图元数据的权限(如
S_DEVELOP权限) - 两种方式均支持识别通过
EXTEND VIEW语法创建的CDS视图扩展,以及其他CDS扩展机制生成的对象
内容的提问来源于stack exchange,提问作者minha qureshi
相关产品推荐
相关产品推荐

