2016-10-31 19 views

答えて

0

継続的な検索では、次のスニペットの結果:

DATA ITAB TYPE TABLE OF DD02L. 

SELECT * FROM DD02L INTO TABLE ITAB WHERE TABCLASS IN ('TRANSP', 'INTTAB'). 

WRITE :SY-SUBRC . 

DATA FS TYPE DD02L. 

LOOP AT ITAB INTO FS. 

    WRITE:/ FS-TABNAME. 

ENDLOOP. 

表の記述は、テーブルDD02Tに与えられています。

+0

これは非常に悪いコーディングスタイルの例であり、再配布するべきではありません。 – vwegert

+1

提案は大歓迎です。 – alex

+1

私はvwegertがここで誇張していると仮定します)あなたのコードは完全なバマーではなく、意味があります。しかしながら、それはいくつかの方法で改善することができます:例えば、傾斜の宣言、フィールドシンボル、SELECT *とWHERE INの場所を省略するなどです。テーブルには 'TRANSP'クラスしかなく、' INTTAB'クラスはありません。 – Suncatcher

2

データベーステーブルに直接アクセスすることはお勧めできません。たとえば、アクティブ/非アクティブのバージョンなど、おそらく知らないあらゆる種類の技術に対処する必要があるからです。個人的に無関係かもしれないすべてのセキュリティおよび権限チェックをバイパスしますが、一般的には望ましくありません。テーブルの一覧を取得するには、汎用モジュールRPY_TABLE_SELECTを使用します。この汎用モジュールはバージョンの処理を担当し、選択した言語で説明を提供します。

1

は、何らかの方法でAlexコードを改善し、オプションとしてそれを置く:

SELECT tabname 
FROM DD02L 
INTO TABLE @DATA(itab) 
WHERE TABCLASS = 'TRANSP'. 

LOOP AT itab ASSIGNING FIELD-SYMBOL(<FS>). 
WRITE:/ <FS>. 
ENDLOOP. 

いくつかのものが洗練された:傾斜宣言を利用して、フィールドシンボルが追加され、SELECT *WHERE INがように省略しました。
SAPのテーブルにはTRANSPクラスのみがあり、INTTABクラスは構造に属します。

注:サンプルはABAP 7.40、SP08以降に機能します。

関連する問題