ABAP:用field symbols指向的内表,怎样获取内表的字段目录

variable11 2018-07-10 09:17:53
DATA: gt_showtab type ref to data.
field-symbols: <showtab> type ANY TABLE.

CREATE DATA gt_showtab like STANDARD TABLE OF zxs_det.
ASSIGN gt_showtab->* to <showtab>.

现在要获取<showtab>的字段目录,用于显示报表,要怎么做?
之前用的函数只能用于旧方式定义的内表:REUSE_ALV_FIELDCATALOG_MERGE。
...全文
834 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
variable11 2018-07-14
  • 打赏
  • 举报
回复
如果 gs_display 不是type系统表,而是程序内部定义的structure呢。
比如:

types: begin of mm_01,
matnr type mara-matnr,
prodh type mara-prdha,
end of mm_01.

create data gs_display type mm_01.
SAP-nkGavin 2018-07-13
  • 打赏
  • 举报
回复
1) 动态声明一个和显示内容的內表相同类型的structure
2) 使用cl_abap_structdescr可以得到此structure中每个element的DDIC信息

示例代码如下供参考


DATA: gs_display TYPE REF TO data.
FIELD-SYMBOLS: <fs_display> TYPE ANY.

DATA: lo_descr TYPE REF TO cl_abap_structdescr,
lt_fields TYPE ddfields,
ls_sflight TYPE sflight.

BREAK-POINT.

CREATE DATA gs_display TYPE sflight.
ASSIGN gs_display->* TO <fs_display>.

lo_descr ?= cl_abap_typedescr=>describe_by_data( <fs_display> ).

lt_fields = lo_descr->get_ddic_field_list( p_langu = 'E'
p_including_substructres = abap_true ).
BREAK-POINT.

2,680

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 ERP/CRM
社区管理员
  • ERP/CRM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧