You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在可展开程序INCLUDE语句的ABAP函数模块或方法?

实现ABAP源代码INCLUDE语句的展开需求

你可以通过以下两种标准方式实现需求,它们都支持控制嵌套层级、设置INCLUDE黑名单,最终返回无INCLUDE语句的等效源代码内表:

1. 使用函数模块 RPY_SOURCE_INCLUDE_EXPAND

这是SAP提供的专用函数,直接支持展开程序中的INCLUDE语句,参数可灵活控制展开规则:

  • MAX_LEVEL:指定最大嵌套展开层级,超过层级的INCLUDE将保留原语句
  • EXCLUDE_INCLUDES:传入不需要展开的INCLUDE名称列表(黑名单)
  • 支持处理类实现程序(如ZCL_TEST======================CP)、函数组主程序(如SAPLZTEST)、普通报表等多种程序类型

示例代码:

DATA: gt_expanded_source TYPE rpy_source,
      gv_program         TYPE progname VALUE 'ZCL_TEST======================CP',
      gt_exclude_list    TYPE rpy_exclude_includes,
      gv_max_level       TYPE i VALUE 10.

" 添加黑名单INCLUDE
APPEND 'ZEXCLUDE_ME_INCLUDE' TO gt_exclude_list.

CALL FUNCTION 'RPY_SOURCE_INCLUDE_EXPAND'
  EXPORTING
    program_name     = gv_program
    max_level        = gv_max_level
    exclude_includes = gt_exclude_list
  IMPORTING
    source_expanded  = gt_expanded_source
  EXCEPTIONS
    program_not_found = 1
    no_authority      = 2
    OTHERS            = 99.

IF sy-subrc = 0.
  " gt_expanded_source即为展开后的等效源代码内表
ENDIF.

2. 使用类方法 CL_ABAP_SOURCE_CODE=>GET_EXPANDED_SOURCE

这是ABAP面向对象风格的实现,功能与上述函数一致,参数设计更贴合现代ABAP开发习惯:

  • MAX_NESTING_LEVEL:控制最大嵌套层级
  • EXCLUDE_INCLUDES:传入黑名单INCLUDE名称表

示例代码:

DATA: gt_expanded TYPE cl_abap_source_code=>ty_source,
      gv_program  TYPE progname VALUE 'SAPLZTEST',
      gt_exclude  TYPE cl_abap_source_code=>ty_include_names,
      gv_max_lvl  TYPE i VALUE 5.

" 添加黑名单项
APPEND 'ZBLACKLIST_INCLUDE' TO gt_exclude.

gt_expanded = cl_abap_source_code=>get_expanded_source(
  EXPORTING
    program_name      = gv_program
    max_nesting_level = gv_max_lvl
    exclude_includes  = gt_exclude
).

自定义展开逻辑(进阶场景)

如果需要更特殊的展开规则(比如自定义INCLUDE匹配逻辑、额外的代码预处理),可以组合以下工具实现:

  • 用RS_INCLUDE_LIST_GET获取目标程序的INCLUDE依赖层级结构
  • 用READ REPORT语句或RPY_PROGRAM_READ函数读取单个INCLUDE的源代码
  • 自行编写递归逻辑,替换原程序中的INCLUDE语句为对应代码

内容的提问来源于stack exchange,提问作者rplantiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:17:45