Текущее время: Чт, мар 28 2024, 21:57

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 219 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, май 24 2019, 09:45 
Специалист
Специалист

Зарегистрирован:
Пт, июл 27 2007, 13:06
Сообщения: 137
На паттернах+циклах это по этому примеру? https://sites.google.com/site/sapxlwb/h ... mples/ex09

Таблица динамическая с данными уже создана? Если да, то можно ее засунуть в cl_salv_tree (иерархию не делать, всё верхним уровнем) и вывести под заголовком. Тогда не надо будет "переворачивать" таблицу для вывода как в примере.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, май 30 2019, 10:34 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 11 2018, 14:09
Сообщения: 8
Sam Stone написал(а):
На паттернах+циклах это по этому примеру? https://sites.google.com/site/sapxlwb/h ... mples/ex09

Таблица динамическая с данными уже создана? Если да, то можно ее засунуть в cl_salv_tree (иерархию не делать, всё верхним уровнем) и вывести под заголовком. Тогда не надо будет "переворачивать" таблицу для вывода как в примере.


Да на этом примере.

Написал разработчику, он помог с решением.
Единственное что не корректно указал в проблеме, что позиции должны схлопываться по matnr, если есть количества по разным заводам.

Обернул позиции в папку->цикл и внутри позиций ещё одна вложенная таблица с количеством, которую тоже обернул в папку и сделал вывод в строчку.
Вывод соответственно добил логикой.

Спасибо за ответ.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пн, дек 16 2019, 08:57 
Ассистент
Ассистент

Зарегистрирован:
Вт, окт 06 2009, 11:02
Сообщения: 38
Добрый день, Игорь.
Внес небольшую доработку в 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.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пн, дек 16 2019, 19:08 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Wise-Kaa написал(а):
Суть доработки - добавлен функционал, позволяющий импортировать новый файл Excel в готовый формуляр, с сохранением настроек формуляра.
Добрый день. Я правильно понимаю, что этот код обновляет форматирование, сохраняя дерево структуры формуляра? Спасибо, я вставлю этот код в будущих обновлениях.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, мар 20 2020, 18:36 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 15 2019, 17:02
Сообщения: 5
Добрый день.
Есть проблемка: экспортирую в эксель дерево (класс - cl_hrpayna_gui_alv_tree, через вызов ФМ ZXLWB_CALLFORM),
но в fieldcatalog-е дерева есть поля-иконки (ICON = 'X').
Грид отрисовывает их нормально, однако в эксель такие ячейки передаются как пустые. Меня бы полностью устроило, если бы
значение передавалось как строка, я бы просто макросом их потом в экселе отработал. Есть вариант передачи таких полей в эксель?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пн, мар 23 2020, 05:54 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
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

Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пн, мар 23 2020, 09:53 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 15 2019, 17:02
Сообщения: 5
Бородин Игорь написал(а):
UncleV написал(а):
Грид отрисовывает их нормально, однако в эксель такие ячейки передаются как пустые.
Это странно, потому, что иконки должны нормально вставляться в форму. Вот пример...

А можно для этого примера скрин из ZXLWB_WORKBENCH с настройками?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пн, мар 23 2020, 11:46 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
UncleV написал(а):
А можно для этого примера скрин из ZXLWB_WORKBENCH с настройками?
Все настройки начальные
Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, июл 21 2020, 18:42 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Добрый день.
В новой версии 5.00 можно использовать инстанцию Класса в качестве Контекста. При этом, атрибуты класса (public section) будут доступны для биндинга.
Это позволит не плодить лишние структуры/табличные типы словаре.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Пт, июл 24 2020, 19:16 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
есть простенький формуляр. хэдер, таблица, футер.
Как можно настроить перенос на новые страницы?
сейчас вкривь и вкось переносит. может есть какие-то стандартные настройки?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Сб, июл 25 2020, 23:51 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
falazure123 написал(а):
сейчас вкривь и вкось переносит
не могли бы Вы уточнить вопрос, как именно сейчас переносит, и как нужно


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, авг 04 2020, 12:28 
Начинающий
Начинающий

Зарегистрирован:
Пн, июн 04 2018, 12:27
Сообщения: 4
Добрый день,
Есть вопрос по использованию 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 ".

Однако у других пользователей такие изменения корректно отрабатывают.

подскажите, пож-ста, что и где может быть не доустановлено?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, авг 06 2020, 00:48 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
logan1978 написал(а):
Однако у других пользователей такие изменения корректно отрабатывают.
Добрый день.
Трудно предполагать, ведь Вы не указали ни версию ZXLWB, ни фрагмент кода, на котором валится в дамп . Но наиболее вероятная причина в том, что установленная у Вас версия SAP GUI некорректно взаимодействует с MS Excel. Проверить это можно запустив стандартные примеры офис-интеграции (SAPRDEMO_SPREADSHEET_INTERFACE, SAPRDEMO_TABLES_IN_EXCEL, SAPRDEMOEXCELINTEGRATION2). Если это так, то установите последнюю версию/patch level, ну или ту, которая у коллег.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Чт, авг 06 2020, 09:08 
Начинающий
Начинающий

Зарегистрирован:
Пн, июн 04 2018, 12:27
Сообщения: 4
Большое спасибо,
Помогла установка более новой версии sap gui со всеми патчами


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XLSX Workbench
СообщениеДобавлено: Вт, сен 15 2020, 09:07 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, апр 07 2012, 00:43
Сообщения: 113
Привет.
Подскажите , пытаюсь адаптировать формулу, чтобы после выгрузки эксель, оно считалось внутри
Смотрю в 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)
Говорит ошибка в формуле и не дает сохранять
Формулу на русском сохраняет - но не рассчитывает после выгрузки

_________________
[Удалено Админом]


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 219 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB