2016-10-31 58 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開始起作用。

相關問題