これを機能させる唯一の方法は、関数「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 ...
.
私はウェブを調査し、誤解を招くような回答がたくさんあり、質問を実際に読んだり理解したりしていない人がいる約10の異なる投稿を見つけました。私にとって役に立ったので、誰にとっても役立つことを願っています。