REPORT Y96LIST_TO_EXCEL_EXITS.

TYPE-POOLS: SLIST, Y96XL.

INCLUDE OLE2INCL.

DATA GS TYPE C.

* Эта подпрограмма должны быть зарагистрированы в
* таблице y96list_to_excel например так:
* prog  = Y96LIST_TO_EXCEL_EXITS_TEST
* form  = TEST_LIST_TO_EXCEL_EXT
* text  = Продвинутая выгрузка
* cprog = Y96TEST_LIST_TO_EXCEL
* здесь регистрируются call-back
FORM TEST_LIST_TO_EXCEL_EXT USING EVENT TYPE Y96XL_EVENT
                                  MAINPROG.

  EVENT-PROGRAM        = SPACE.         " callback программа
* event-on_start                        " При старте
* event-on_row_base                     " На каждой ячейке в группе стро
  EVENT-ON_CELL_BASE   = 'ON_CELL_BASE'." На каждой группе строк
  EVENT-ON_CELL        = 'ON_CELL'.     " На каждй ячейке
  EVENT-ON_ROW         = 'ON_ROW'.      " На каждой строке
  EVENT-ON_TAG         = 'ON_TAG'.      " На тегах
* event-on_col_width                    " При установке ширины столбца
  EVENT-ON_EXCEL       = 'ON_EXCEL'.    " После передачи данных в Excel
* event-on_confirm                      " Перед экраном запроса имени фа
  EVENT-ON_CONFIRM_PBO = 'ON_CONFIRM_PBO'. " В PBO логиике экрана запрос
ENDFORM.

FORM ON_CONFIRM_PBO TABLES ITEXUCOMM
                     USING SCR TYPE Y96XL_SCR.

  SCR-COLOR_OFF     = ' '.
  SCR-BORDER_OFF    = ' '.
  SCR-ADV           = 'X'.
  SCR-NOTCOLSPAN    = ' '.
  SCR-ROWFILTER_ON  = ' '.
  SCR-SYMBOL_MODE   = 'X'.
  SCR-CHECKBOX_MODE = 'X'.
  SCR-ICON_MODE     = 'X'.

  APPEND 'XADV' TO ITEXUCOMM.

  LOOP AT SCREEN.
    CHECK SCREEN-GROUP2 = 'FMT'
       OR SCREEN-GROUP2 = 'MOD'.
    SCREEN-INPUT = 0.
    MODIFY SCREEN.
  ENDLOOP.
ENDFORM.

* Все строки листнга имеющие одинаковое форматирование сгрупированы
* Возникает на каждой ячейке в группе строк перед началом формирования
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.

FORM ON_EXCEL USING H_APPL  TYPE OLE2_OBJECT
                    H_BOOKS TYPE OLE2_OBJECT
                    H_WORK  TYPE OLE2_OBJECT
                    H_SHEET TYPE OLE2_OBJECT.
DATA: H_RANGE TYPE OLE2_OBJECT.
  CALL METHOD OF H_SHEET 'Columns' = H_RANGE
    EXPORTING #1 = 1.
  CHECK SY-SUBRC = 0.

  CALL METHOD OF H_RANGE 'Insert'
    EXPORTING #1 = -4161. " xlToRight
  CHECK SY-SUBRC = 0.

  CALL METHOD OF H_SHEET 'Rows' = H_RANGE
    EXPORTING #1 = 1.
  CHECK SY-SUBRC = 0.

  CALL METHOD OF H_RANGE 'Insert'
    EXPORTING #1 = -4121. " xlDown
  CHECK SY-SUBRC = 0.
ENDFORM.
************************************************************************
Используются технологии uCoz