REPORT zxxxxxxx. " 実際のプログラム名に修正してください
TABLES :rs38m,textpool.
* データ定義
DATA : BEGIN OF i_tab OCCURS 0,
name TYPE progname,
langu TYPE t002-spras.
INCLUDE STRUCTURE textpool.
DATA : END OF i_tab.
DATA : texts LIKE textpool OCCURS 50 WITH HEADER LINE,
w_text LIKE textpool.
DATA : it LIKE LINE OF i_tab OCCURS 0,
lines TYPE i,
myalv TYPE REF TO cl_salv_table,
myfunctions TYPE REF TO cl_salv_functions_list,
mycolumns TYPE REF TO cl_salv_columns_table,
langu TYPE t002-spras.
* 選択画面
SELECT-OPTIONS :
s_langu FOR langu,
s_zprg FOR rs38m-programm.
* 主処理
START-OF-SELECTION.
SELECT spras
FROM t002
INTO TABLE @DATA(it_langu)
WHERE spras IN @s_langu.
SELECT progname
FROM reposrc
INTO i_tab-name
WHERE progname IN s_zprg.
LOOP AT it_langu INTO DATA(wa_langu).
REFRESH texts.
READ TEXTPOOL i_tab-name INTO texts LANGUAGE wa_langu-spras.
LOOP AT texts INTO w_text .
MOVE-CORRESPONDING w_text TO i_tab.
i_tab-langu = wa_langu-spras.
APPEND i_tab TO i_tab.
ENDLOOP.
ENDLOOP.
ENDSELECT.
it[] = i_tab[].
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = myalv
CHANGING
t_table = it[].
CATCH cx_salv_msg.
ENDTRY.
DESCRIBE TABLE i_tab LINES lines.
MESSAGE s001(00) WITH lines '件見つかりました'.
mycolumns = myalv->get_columns( ).
mycolumns->set_optimize( ).
myfunctions = myalv->get_functions( ).
myfunctions->set_all( ).
CALL METHOD myalv->display.