SAPфорум.RU https://www.sapboard.ru/forum/ |
|
XLSX Workbench https://www.sapboard.ru/forum/viewtopic.php?f=13&t=86294 |
Страница 12 из 15 |
Автор: | Sam Stone [ Пт, май 24 2019, 09:45 ] |
Заголовок сообщения: | Re: XLSX Workbench |
На паттернах+циклах это по этому примеру? https://sites.google.com/site/sapxlwb/h ... mples/ex09 Таблица динамическая с данными уже создана? Если да, то можно ее засунуть в cl_salv_tree (иерархию не делать, всё верхним уровнем) и вывести под заголовком. Тогда не надо будет "переворачивать" таблицу для вывода как в примере. |
Автор: | AbpJun [ Чт, май 30 2019, 10:34 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Sam Stone написал(а): На паттернах+циклах это по этому примеру? https://sites.google.com/site/sapxlwb/h ... mples/ex09 Таблица динамическая с данными уже создана? Если да, то можно ее засунуть в cl_salv_tree (иерархию не делать, всё верхним уровнем) и вывести под заголовком. Тогда не надо будет "переворачивать" таблицу для вывода как в примере. Да на этом примере. Написал разработчику, он помог с решением. Единственное что не корректно указал в проблеме, что позиции должны схлопываться по matnr, если есть количества по разным заводам. Обернул позиции в папку->цикл и внутри позиций ещё одна вложенная таблица с количеством, которую тоже обернул в папку и сделал вывод в строчку. Вывод соответственно добил логикой. Спасибо за ответ. |
Автор: | Wise-Kaa [ Пн, дек 16 2019, 08:57 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Добрый день, Игорь. Внес небольшую доработку в Workbench, может она Вас заинтересует, и Вы добавите ее в новую версию. Суть доработки - добавлен функционал, позволяющий импортировать новый файл Excel в готовый формуляр, с сохранением настроек формуляра. Реализация: Изменен CLASS lcl_workbench METHOD action_import Code: * check existence IF lcl_form=>get_devclass( lv_formname ) IS NOT INITIAL . *** + < me->reimport( lv_formname ). EXIT. *** + > *** MESSAGE i000(lp) *** WITH v_text-t014 " text: A form already exists with the name *** lv_formname *** RAISING process_terminated . ENDIF . Добавлен метод reimport Code: METHOD reimport.
DATA: l_answer TYPE char20, ls_head TYPE lcl_form=>ty_s_head, lt_properties TYPE lcl_form=>ty_t_properties, lt_hierarchy TYPE lcl_form=>ty_t_hierarchy, ls_key TYPE wwwdatatab, lv_devclass TYPE tadir-devclass, lv_objid TYPE wwwdatatab-objid, lt_document_table TYPE tsfmime, lv_document_size TYPE i, lt_html_table TYPE STANDARD TABLE OF w3html, cl_form TYPE REF TO lcl_form, lv_formdescr TYPE wwwdatatab-text. " Диалог с пользователем CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = 'Импорт' text_question = 'Формуляр существует. Перегрузить?' default_button = '2' display_cancel_button = '' IMPORTING answer = l_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. CHECK l_answer EQ '1'. " Загрузка старого формуляра CREATE OBJECT r_formtemplate EXPORTING iv_formname = iv_formname iv_create_new = space iv_editor = abap_on EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0 . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 . RAISE process_terminated . ENDIF . " Запоминаем настройки формуляра cl_form ?= r_formtemplate. lv_formdescr = cl_form->v_formdescr. r_formtemplate->r_exceltemplate->formparameters_struc_get( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formhead CHANGING cs_struc = ls_head ) . r_formtemplate->r_exceltemplate->formparameters_table_get( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formproperties CHANGING ct_tab = lt_properties ) . r_formtemplate->r_exceltemplate->formparameters_table_get( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formhierarchy CHANGING ct_tab = lt_hierarchy ) . r_formtemplate->r_exceltemplate->free( ). CLEAR: r_formtemplate. " UPLOAD новый формуляр * lock an object IF lcl_form=>enq_lock( iv_formname = iv_formname ) IS NOT INITIAL . MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING process_terminated . ENDIF . * upload file ls_key-relid = lcl_form=>c_relid . ls_key-objid = lcl_form=>conv_formname_ei( iv_formname ) . ls_key-text = lv_formdescr . CALL FUNCTION 'UPLOAD_WEB_OBJECT' EXPORTING key = ls_key. * unlock the object lcl_form=>enq_unlock( iv_formname = iv_formname ) . " Считываем загруженный формуляр CREATE OBJECT r_formtemplate EXPORTING iv_formname = iv_formname iv_create_new = space iv_editor = abap_on EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0 . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 . RAISE process_terminated . ENDIF . " Настройки формуляра r_formtemplate->r_exceltemplate->formparameters_struc_set( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formhead is_struc = ls_head ) . r_formtemplate->r_exceltemplate->formparameters_table_set( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formproperties it_tab = lt_properties ) . r_formtemplate->r_exceltemplate->formparameters_table_set( EXPORTING iv_path = r_formtemplate->r_exceltemplate->c_path-formhierarchy it_tab = lt_hierarchy ) . " Сохраняем lv_objid = r_formtemplate->conv_formname_ei( r_formtemplate->v_formname ). IF r_formtemplate->v_devclass IS INITIAL . lv_devclass = popup_devclass( iv_objid = lv_objid ) . ELSE . lv_devclass = r_formtemplate->v_devclass . ENDIF. CHECK lv_devclass IS NOT INITIAL . r_formtemplate->r_exceltemplate->rawdata_get_as_table( IMPORTING et_document_table = lt_document_table ev_document_size = lv_document_size ) . CALL FUNCTION 'EXPORT_WEB_OBJECT' EXPORTING object_id = lv_objid mimetype = lcl_form=>c_mimetype text = lv_formdescr size = lv_document_size devclass = lv_devclass TABLES html = lt_html_table mime = lt_document_table EXCEPTIONS size_not_specified = 1 object_locked = 2 OTHERS = 3. IF sy-subrc NE 0 . msg_syst_catch( ) . EXIT . ENDIF . ENDMETHOD. |
Автор: | Бородин Игорь [ Пн, дек 16 2019, 19:08 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Wise-Kaa написал(а): Суть доработки - добавлен функционал, позволяющий импортировать новый файл Excel в готовый формуляр, с сохранением настроек формуляра. Добрый день. Я правильно понимаю, что этот код обновляет форматирование, сохраняя дерево структуры формуляра? Спасибо, я вставлю этот код в будущих обновлениях.
|
Автор: | UncleV [ Пт, мар 20 2020, 18:36 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Добрый день. Есть проблемка: экспортирую в эксель дерево (класс - cl_hrpayna_gui_alv_tree, через вызов ФМ ZXLWB_CALLFORM), но в fieldcatalog-е дерева есть поля-иконки (ICON = 'X'). Грид отрисовывает их нормально, однако в эксель такие ячейки передаются как пустые. Меня бы полностью устроило, если бы значение передавалось как строка, я бы просто макросом их потом в экселе отработал. Есть вариант передачи таких полей в эксель? |
Автор: | Бородин Игорь [ Пн, мар 23 2020, 05:54 ] |
Заголовок сообщения: | Re: XLSX Workbench |
UncleV написал(а): Грид отрисовывает их нормально, однако в эксель такие ячейки передаются как пустые. Это странно, потому, что иконки должны нормально вставляться в форму. Вот пример:Code: REPORT ZTEST_ALVTREE. TYPE-POOLS: abap , icon . TYPES: BEGIN OF ty_s_alvtree_outtab , status_icon TYPE icon_d , END OF ty_s_alvtree_outtab , ty_t_alvtree_outtab TYPE STANDARD TABLE OF ty_s_alvtree_outtab . DATA: go_alvtree TYPE REF TO cl_hrpayna_gui_alv_tree , " -->> inherited from CL_GUI_ALV_TREE gt_alvtree_outtab TYPE ty_t_alvtree_outtab . * fill the context PERFORM fill_context . * call the form CALL FUNCTION 'ZXLWB_CALLFORM' EXPORTING iv_formname = 'ZTEST_ALVTREE' iv_context_ref = go_alvtree EXCEPTIONS process_terminated = 1 OTHERS = 2. IF sy-subrc NE 0 . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 . EXIT . ENDIF . *&---------------------------------------------------------------------* *& Form fill_context *&---------------------------------------------------------------------* FORM fill_context . *---->> create tree CREATE OBJECT go_alvtree EXPORTING parent = cl_gui_container=>default_screen node_selection_mode = cl_gui_column_tree=>node_sel_mode_single EXCEPTIONS others = 7. CHECK sy-subrc EQ 0 . *---->> fieldcatalog DATA: ls_fct TYPE lvc_s_fcat , lt_fct TYPE lvc_t_fcat . ls_fct-fieldname = 'STATUS_ICON' . ls_fct-icon = 'X' . APPEND ls_fct TO lt_fct . *---->> initialization go_alvtree->set_table_for_first_display( CHANGING it_fieldcatalog = lt_fct[] it_outtab = gt_alvtree_outtab[] ) . cl_gui_cfw=>flush( EXCEPTIONS OTHERS = 0 ) . *---->> add nodes to the tree DATA: ls_alvtree_outtab TYPE ty_s_alvtree_outtab , lv_nkey TYPE lvc_nkey . * ------------ ls_alvtree_outtab-status_icon = icon_system_okay . go_alvtree->add_node( EXPORTING i_relat_node_key = space i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Parent' is_outtab_line = ls_alvtree_outtab IMPORTING e_new_node_key = lv_nkey ) . * ------------ ls_alvtree_outtab-status_icon = icon_system_save . go_alvtree->add_node( EXPORTING i_relat_node_key = lv_nkey i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Child 1' is_outtab_line = ls_alvtree_outtab IMPORTING e_new_node_key = lv_nkey ) . * ------------ ls_alvtree_outtab-status_icon = icon_system_back . go_alvtree->add_node( EXPORTING i_relat_node_key = lv_nkey i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Child 2' is_outtab_line = ls_alvtree_outtab ) . * ------------ ls_alvtree_outtab-status_icon = icon_system_cancel . go_alvtree->add_node( EXPORTING i_relat_node_key = lv_nkey i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Child 3' is_outtab_line = ls_alvtree_outtab ) . cl_gui_cfw=>flush( EXCEPTIONS OTHERS = 0 ) . ENDFORM . "fill_context |
Автор: | UncleV [ Пн, мар 23 2020, 09:53 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Бородин Игорь написал(а): UncleV написал(а): Грид отрисовывает их нормально, однако в эксель такие ячейки передаются как пустые. Это странно, потому, что иконки должны нормально вставляться в форму. Вот пример...А можно для этого примера скрин из ZXLWB_WORKBENCH с настройками? |
Автор: | Бородин Игорь [ Пн, мар 23 2020, 11:46 ] |
Заголовок сообщения: | Re: XLSX Workbench |
UncleV написал(а): А можно для этого примера скрин из ZXLWB_WORKBENCH с настройками? Все настройки начальные |
Автор: | Бородин Игорь [ Вт, июл 21 2020, 18:42 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Добрый день. В новой версии 5.00 можно использовать инстанцию Класса в качестве Контекста. При этом, атрибуты класса (public section) будут доступны для биндинга. Это позволит не плодить лишние структуры/табличные типы словаре. |
Автор: | falazure123 [ Пт, июл 24 2020, 19:16 ] |
Заголовок сообщения: | Re: XLSX Workbench |
есть простенький формуляр. хэдер, таблица, футер. Как можно настроить перенос на новые страницы? сейчас вкривь и вкось переносит. может есть какие-то стандартные настройки? |
Автор: | Бородин Игорь [ Сб, июл 25 2020, 23:51 ] |
Заголовок сообщения: | Re: XLSX Workbench |
falazure123 написал(а): сейчас вкривь и вкось переносит не могли бы Вы уточнить вопрос, как именно сейчас переносит, и как нужно
|
Автор: | logan1978 [ Вт, авг 04 2020, 12:28 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Добрый день, Есть вопрос по использованию XLSX Workbench: импортируется excel шаблон нормально, но при любом изменении ячеек (стиля, ширины, типа и т.д.) внутри этого инструмента, и дальнейшем сохранении, активировании - всегда падает в дамп. Code: Что произошло? Error in the ABAP Application Program The current ABAP program "SAPLZXLWB" had to be terminated because it has come across a statement that unfortunately cannot be executed. Краткий текст Access via 'NULL' object reference not possible. Анализ ошибки An exception occurred that is explained in detail below. The exception, which is assigned to class 'CX_SY_REF_IS_INITIAL', was not caught in procedure "BUFFERIZATION_BASEINFO" "(METHOD)", nor was it propagated by a RAISING clause. Since the caller of the procedure could not have anticipated that the exception would occur, the current program is terminated. The reason for the exception is: You attempted to use a 'NULL' object reference (points to 'nothing') access a component. An object reference must point to an object (an instance of a class) before it can be used to access components. Either the reference was never set or it was set to 'NULL' using the CLEAR statement. Информация о месте прерывания Termination occurred in the ABAP program "SAPLZXLWB" - in "BUFFERIZATION_BASEINFO". The main program was "ZXLWB ". In the source code you have the termination point in line 4323 of the (Include) program "ZXLWB_INCLUDE". The termination is caused because exception "CX_SY_REF_IS_INITIAL" occurred in procedure "BUFFERIZATION_BASEINFO" "(METHOD)", but it was neither handled locally nor declared in the RAISING clause of its signature. The procedure is in program "SAPLZXLWB "; its source code begins in line 4245 of the (Include program "ZXLWB_INCLUDE ". Однако у других пользователей такие изменения корректно отрабатывают. подскажите, пож-ста, что и где может быть не доустановлено? |
Автор: | Бородин Игорь [ Чт, авг 06 2020, 00:48 ] |
Заголовок сообщения: | Re: XLSX Workbench |
logan1978 написал(а): Однако у других пользователей такие изменения корректно отрабатывают. Добрый день. Трудно предполагать, ведь Вы не указали ни версию ZXLWB, ни фрагмент кода, на котором валится в дамп . Но наиболее вероятная причина в том, что установленная у Вас версия SAP GUI некорректно взаимодействует с MS Excel. Проверить это можно запустив стандартные примеры офис-интеграции (SAPRDEMO_SPREADSHEET_INTERFACE, SAPRDEMO_TABLES_IN_EXCEL, SAPRDEMOEXCELINTEGRATION2). Если это так, то установите последнюю версию/patch level, ну или ту, которая у коллег. |
Автор: | logan1978 [ Чт, авг 06 2020, 09:08 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Большое спасибо, Помогла установка более новой версии sap gui со всеми патчами |
Автор: | Endrews [ Вт, сен 15 2020, 09:07 ] |
Заголовок сообщения: | Re: XLSX Workbench |
Привет. Подскажите , пытаюсь адаптировать формулу, чтобы после выгрузки эксель, оно считалось внутри Смотрю в XML внутренее представление: IFERROR(ROUND(IF(AO4="", AG4*R4/AN4,AG4*R4/AO4),2),0) Вставляю его в EXCEL в ячейку = IFERROR(ROUND(IF(AO4="", AG4*R4/AN4,AG4*R4/AO4),2),0) Говорит ошибка в формуле и не дает сохранять Формулу на русском сохраняет - но не рассчитывает после выгрузки |
Страница 12 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |