0

動的な内部テーブルからデータを受け取りたい。

たとえば、内部テーブルには2つのフィールドがあります。数値-名前

そしてそれは次のような情報で満たされています:

ここに画像の説明を入力してください

同じデータのみを取得するにはどうすればよいですか?数字のデータベースを取得したい。同じ数字に色を付けたいです。つまり、keyidの1、2、6は赤、3と4は青、5は黄色です。内部テーブルは動的であるため、常に1の数値があるかどうかはわかりません。

4

1 に答える 1

1

動的テーブルに探している列が常にあるかどうかわからないということだと思います。

ランタイムタイプサービス(RTTS)を使用して、動的テーブルの構造を決定します。次のデータは、構造に「NUMBER」というフィールドがあるかどうかを判別します。テーブルlt_componentを使用して、読み取る必要のあるコンポーネントを確認できます(ASSIGN COMPONENT number OF STRUCTURE <fs_line> TO <fs_field>)。

DATA:
    lr_tabledescr TYPE REF TO cl_abap_tabledescr,
    lr_datadescr  TYPE REF TO cl_abap_datadescr,
    lr_structdescr  TYPE REF TO cl_abap_structdescr,
    lr_typedescr    TYPE REF TO cl_abap_typedescr,
    lt_component    TYPE TABLE OF abap_componentdescr.

DATA tab TYPE TABLE OF sflight.

lr_tabledescr ?= cl_abap_datadescr=>describe_by_data( tab ).
lr_typedescr ?= lr_tabledescr->get_table_line_type( ).
lr_structdescr ?= lr_typedescr.
lt_component = lr_structdescr->get_components( ).


READ TABLE lt_component WITH KEY name = 'NUMBER'.
于 2012-08-14T07:29:52.770 に答える