我可以让它工作的唯一方法是函数' DDIF_FIELDINFO_GET '。它接收字典结构、表或类型的名称,并返回其字段的列表,以及有关它们的许多有用的详细信息,例如字段的数据元素、描述、长度等。这是一个基本示例:
DATA: lt_fields_info TYPE dfies_tab.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'MARA'
TABLES
dfies_tab = lt_fields_info[]
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Handle errors.
ENDIF.
LOOP AT lt_fields_info[] INTO ls_field_info.
" Dynamically printing the fields' details:
WRITE: / 'Field name: ',
ls_field_info-fieldname,
'Field data element: ',
ls_field_info-rollname,
'Field description: ',
ls_field_info-fieldtext.
ENDLOOP.
Leelaprasad Kolapalli(抱歉,我在评论中找不到如何标记用户名)建议使用函数“DD_GET_FIELD_INFO”。不幸的是,它不适用于某些 DDIC 表,原因不明。这促使我在 Google 上搜索类似的功能,然后我找到了更好的功能。遗憾的是,这两个函数都不适用于类或包含中定义的本地(内部)结构,因此我不知道如何获取它们的字段详细信息。
我无法让这些CL_ABAP______DESCR
类/方法中的任何一个工作,因为它们要么导致转换错误,要么根本没有告诉我该字段的名称。他们确实告诉了我该字段的值和基本类型,这不是 OP 和我想要得到的。
ASSIGN COMPONENT
它的所有变体也无济于事。我做不到ASSIGN COMPONENT 'MANDT' OF STRUCTURE ...
,因为我不知道该字段的名称!在我工作的具体情况下,我在结构中使用字段的位置(索引),命令是ASSIGN COMPONENT sy-index OF STRUCTURE ...
.
我研究了网络,发现了大约十个不同的帖子,其中有很多误导性的答案以及没有真正阅读或理解问题的人,我尝试了所有这些问题,但没有运气,直到找到上述功能。我希望它对任何人都有用,因为它对我有用。