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.