FUNCTION Y96_CUR_LIST_TO_EXCEL_BY_HTML.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"       IMPORTING
*"             VALUE(FILENAME) TYPE  C OPTIONAL
*"             VALUE(CONFIRM) TYPE  C DEFAULT 'X'
*"             VALUE(EXEC) TYPE  C DEFAULT 'X'
*"             VALUE(COLOR_OFF) TYPE  C DEFAULT ' '
*"             VALUE(BORDER_OFF) TYPE  C DEFAULT ' '
*"             VALUE(SYMBOL_MODE) TYPE  C DEFAULT '-'
*"             VALUE(CHECKBOX_MODE) TYPE  C DEFAULT '-'
*"             VALUE(ICON_MODE) TYPE  C DEFAULT '-'
*"             VALUE(CELLS_OPTIMIZATION) TYPE  C DEFAULT 'X'
*"             VALUE(NOTCOLSPAN) TYPE  C DEFAULT ' '
*"             VALUE(ROWFILTER_ON) TYPE  C DEFAULT ' '
*"             VALUE(REWRITE) TYPE  C DEFAULT 'C'
*"----------------------------------------------------------------------

DATA:
  LIST TYPE SLIST_LIST_TAB,
  FMBS TYPE SLIST_FMBS_TAB,
  FMBX TYPE SLIST_FMBS_TAB,
  FSEL TYPE SLIST_FSEL_TAB,
  FIDO TYPE SLIST_FIDO_TAB,
  HIDE TYPE SLIST_HIDE_TAB,
  HIDELINE TYPE SLIST_HIDELINE_TAB.

DATA: TNAME(72) TYPE C,
      ITTAB(256) TYPE X OCCURS 0 WITH HEADER LINE.

FIELD-SYMBOLS: , .

* Беда в том что в процессе подготовки (init и confirm_filename)
* таблицы листинга перестают указывать на данные текущий списока
* поэтому приходится извращаться
  DO.
    CASE SY-INDEX.
    WHEN 1. TNAME = 'LIST'.
    WHEN 2. TNAME = 'FMBS'.
    WHEN 3. TNAME = 'FMBX'.
    WHEN 4. TNAME = 'FSEL'.
    WHEN 5. TNAME = 'FIDO'.
    WHEN 6. TNAME = 'HIDE'.
    WHEN 7. TNAME = 'HIDELINE'.
    WHEN OTHERS. EXIT.
    ENDCASE.

    XASSIGN (TNAME) .
    APPEND  TO ITTAB.

    CONCATENATE '(SAPMSSY0)%_' TNAME INTO TNAME.
    XASSIGN (TNAME) .

     = .
* После этого присвоения соотв. локальная таблица будет
* указывать на данные соотв. тадблицы в прог. SAPMSSY0
  ENDDO.

  SET_PARAM.

  IF SY-SUBRC = 0.
    PERFORM GET_HTML TABLES LIST FMBS FMBX FSEL
                            FIDO HIDE HIDELINE.
    PERFORM SAVE_FILE USING SCR-FNAME SCR-EXEC.
  ENDIF.

* Это нужно чтоб локально обявленые таблицы корректно освободились по
* по выходу из ФМ (возвращаем всё как было)
  LOOP AT ITTAB.
    CASE SY-TABIX.
    WHEN 1. TNAME = 'LIST'.
    WHEN 2. TNAME = 'FMBS'.
    WHEN 3. TNAME = 'FMBX'.
    WHEN 4. TNAME = 'FSEL'.
    WHEN 5. TNAME = 'FIDO'.
    WHEN 6. TNAME = 'HIDE'.
    WHEN 7. TNAME = 'HIDELINE'.
    WHEN OTHERS. EXIT.
    ENDCASE.

    XASSIGN (TNAME) .
     = ITTAB.
  ENDLOOP.
ENDFUNCTION.
Используются технологии uCoz