REPORT Y96TEST_LIST_TO_EXCEL NO STANDARD PAGE HEADING LINE-SIZE 55.

TYPE-POOLS: Y96XL.
INCLUDE OLE2INCL.
INCLUDE .
INCLUDE .

DATA GS TYPE C.

START-OF-SELECTION.

* Регистрация callback-ов  на события
  CALL FUNCTION 'Y96_LIST_TO_EXCEL_REG_CALLBACK'
       EXPORTING
*            PROGRAM      =
*            on_start     = 'ON_START'
            ON_CELL_BASE = 'ON_CELL_BASE'
            ON_CELL      = 'ON_CELL'
            ON_ROW       = 'ON_ROW'
            ON_TAG       = 'ON_TAG'
            ON_EXCEL     = 'ON_EXCEL'
            ON_CONFIRM   = 'ON_CONFIRM'
       EXCEPTIONS
            OTHERS       = 1.

SET PF-STATUS 'MAIN'.

DATA: INDEX TYPE I,
      DMBTR LIKE BSEG-DMBTR,
      NUM(5) TYPE N.
DATA: TOTAL_BTR LIKE BSEG-DMBTR.

DO 10 TIMES.
  INDEX = 10000 + SY-INDEX.
  NUM = SY-INDEX.
  DMBTR = INDEX.
  ADD DMBTR TO TOTAL_BTR.
  WRITE: / SY-VLINE, INDEX,
           SY-VLINE, NUM,
           SY-VLINE, DMBTR,
           SY-VLINE, SPACE AS CHECKBOX,
           SY-VLINE.

  CASE SY-INDEX.
  WHEN  1. WRITE: ICON_EXECUTE_OBJECT AS ICON.
  WHEN  2. WRITE: ICON_SELECT_DETAIL AS ICON.
  WHEN  3. WRITE: ICON_PRINT AS ICON.
  WHEN  4. WRITE: ICON_COPY_OBJECT AS ICON.
  WHEN  5. WRITE: ICON_SORT_DOWN AS ICON.
  WHEN  6. WRITE: ICON_SORT_UP AS ICON.
  WHEN  7. WRITE: ICON_SEARCH AS ICON.
  WHEN  8. WRITE: ICON_INSERT_ROW AS ICON.
  WHEN  9. WRITE: ICON_DELETE_ROW AS ICON.
  WHEN 10. WRITE: ICON_CHANGE_TEXT AS ICON.
  ENDCASE.
  WRITE SY-VLINE.

  CASE SY-INDEX.
  WHEN  1. WRITE: SYM_PLUS_BOX AS SYMBOL.
  WHEN  2. WRITE: SYM_MINUS_BOX AS SYMBOL.
  WHEN  3. WRITE: SYM_PLUS_CIRCLE AS SYMBOL.
  WHEN  4. WRITE: SYM_MINUS_CIRCLE AS SYMBOL.
  WHEN  5. WRITE: SYM_FILLED_SQUARE AS SYMBOL.
  WHEN  6. WRITE: SYM_HALF_FILLED_SQUARE AS SYMBOL.
  WHEN  7. WRITE: SYM_SQUARE AS SYMBOL.
  WHEN  8. WRITE: SYM_FILLED_CIRCLE AS SYMBOL.
  WHEN  9. WRITE: SYM_HALF_FILLED_CIRCLE AS SYMBOL.
  WHEN 10. WRITE: SYM_CIRCLE AS SYMBOL.
  ENDCASE.
  WRITE SY-VLINE.
ENDDO.

FORMAT COLOR COL_TOTAL.
ULINE.
  WRITE: / SY-VLINE, (11) 'Итого',
           SY-VLINE,  (5) '',
           SY-VLINE, (16) TOTAL_BTR,
           SY-VLINE,  (1) SPACE,
           SY-VLINE,  (2) SPACE,
           SY-VLINE,  (1) SPACE,
           SY-VLINE.
ULINE.
FORMAT COLOR OFF.

TOP-OF-PAGE.
WRITE: / 'Дата:', SY-DATUM.
FORMAT COLOR COL_HEADING.
ULINE.
  WRITE: / SY-VLINE, (51) 'Заголовок' CENTERED, SY-VLINE.
ULINE.
  WRITE: / SY-VLINE, (38) 'Числа в разных форматах' CENTERED,
           SY-VLINE, (10) 'Объекты' CENTERED,
           SY-VLINE.
ULINE.
  WRITE: / SY-VLINE, (11) 'Число',
           SY-VLINE,  (5) 'Число',
           SY-VLINE, (16) 'Сумма',
           SY-VLINE,  (1) 'X',
           SY-VLINE NO-GAP, (4) 'Icon' NO-GAP,
           SY-VLINE NO-GAP, (3) 'Sym' NO-GAP,
           SY-VLINE.
FORMAT COLOR OFF.
ULINE.

AT USER-COMMAND.
  CASE SY-UCOMM.
  WHEN 'XLSP'.
    CALL FUNCTION 'Y96_CUR_LIST_TO_EXCEL_BY_HTML'
         EXPORTING
*             filename      = ' ' " Имя файла
              CONFIRM       = ' ' " Выводить экран запроса имени файла
*             EXEC          = 'X' " Выполнять файл
*             COLOR_OFF     = ' ' " Выключить цвет
*             BORDER_OFF    = ' ' " Выключить границы
              SYMBOL_MODE   = 'X' " Режим символов
              CHECKBOX_MODE = 'X' " Режим CheckBox-ов
              ICON_MODE     = 'X' " Режим иконок
         EXCEPTIONS
              OTHERS        = 1.
* Режимы: "-" - Порбелы; "T" - соотв тест; "X" - объект
  ENDCASE.

* Все строки листнга имеющие одинаковое форматирование сгрупированы
* Возникает на каждой ячейке в группе строк перед началом формирования
FORM ON_CELL_BASE
USING
  INDEX                   " № группы
  COL                     " № столбца
  NAME                    " Имя выводимой глобальной переменной
  TD    TYPE Y96XL_TD     " описание ячейки
CHANGING
  CONCATENATE_WITH_PREV   " сложить с предидущей ячейкой
  SPLIT_AT_POS TYPE I.    " разбить ячейку по позиции

*  BREAK-POINT.
*  IF col = 2.
*    concatenate_with_prev = 'X'.
*    split_at_pos = 12.
*  ENDIF.
ENDFORM.

* возникает при тегах: ;;;>STYLE<
* Начальное значение берётся из текстов к группе функций
FORM ON_TAG TABLES ITTAG    " Содержимое тега
             USING TAGNAME. " Имя тега
*  BREAK-POINT.
ENDFORM.

* Возникает на каждой ячейке
FORM ON_CELL
USING
  INDEX                     " № группы строк
  COL                       " № столбца
  NAME                      " Имя выводимой глобальной переменной
  TD    TYPE Y96XL_TD       " описание ячейки
  ROW                       " № строки
  VAL                       " содержимое ячейки
  STYLE TYPE Y96XL_TD_STYLE " описание стиля ячейки
CHANGING
  STYLE_STR                 " стока добавляемая к стилю ячейки
  IN_TAG                    " строка вставляется в тег 
  BEFORE_VAL                " строка вствл. после тега перд. содер. яч
  AFTER_VAL.                " строка вствл. после содерж. ячейки

  IF ROW = 3.
    BEFORE_VAL = ''.
    STYLE_STR  = 'font-style:italic;'.
    AFTER_VAL  = ''.
  ENDIF.

  IF ROW = 5.
  STYLE_STR = 'text-decoration:underline;text-underline-style:single;'.
  ENDIF.

   CASE NAME.
   WHEN 'INDEX'.
   STYLE_STR = 'text-decoration:underline;text-underline-style:double;'.
     IF STYLE-GS = 'X'.
       TRANSLATE GS USING ' XX '.
       STYLE-GS = GS.
     ENDIF.
   WHEN 'NUM'.
*     in_tag = 'STYLE="COLOR:RED"'.

*     style_str = 'COLOR:RED;'.
*     CLEAR style-sid.

     BEFORE_VAL = ''.
     AFTER_VAL  = ''.
   WHEN 'DMBTR'.
    STYLE-TOP = 'X'.
   WHEN 'TOTAL_BTR'.
     VAL = '=СУММ(E5:E14)'.
     CLEAR STYLE-DECS.
   ENDCASE.
*  BREAK-POINT.
ENDFORM.

* Взникает на каждой строке
* Значения скрытых полей востанавливаются
FORM ON_ROW TABLES HIDEFIELDS   " Список скрытых полей в указаной строке
             USING ROW          " № строки
                   LINE         " Содержимое строки
          CHANGING IN_TAG       " Строка вставляется тег 
                   CANCEL.      " "X" - отменить вывод строки
  IF ROW = 2.
*    cancel = 'X'.
    IN_TAG = 'STYLE="HEIGHT:26PT"'.
  ENDIF.
ENDFORM.

* Возникает после загрузки данных в excel
FORM ON_EXCEL USING H_APPL  TYPE OLE2_OBJECT
                    H_BOOKS TYPE OLE2_OBJECT
                    H_WORK  TYPE OLE2_OBJECT
                    H_SHEET TYPE OLE2_OBJECT.
ENDFORM.

* Возникает перед запросом имени файла
FORM ON_CONFIRM TABLES ITVAR TYPE Y96XL_VAR_TAB " Варианты
                 USING SVAR  TYPE Y96XL_VAR     " Выбраный вариант
                       SCR TYPE Y96XL_SCR       " Опции на экране
                       NOT_CALL_SCREEN          " Не вызывать экран
                       CANCEL.                  " Отмена выгрузки
  NOT_CALL_SCREEN = 'X'.
ENDFORM.
Используются технологии uCoz