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