Текущее время: Чт, июн 26 2025, 16:49

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Выгрузка ALV в Excel - небольшое улучшение
СообщениеДобавлено: Чт, янв 28 2016, 14:31 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 25 2016, 19:40
Сообщения: 18
Откуда: Волгодонск
Пол: Мужской
Стандартная выгрузка ALV в Excel которую можно вызвать из Popup меню пункт "Электронная таблица", перед выгрузкой спрашивает имя файла для сохранения Excel файла
что на мой взгляд очень не удобно т.к. в большинстве случаев мне файл не нужен
Было немного свободного времени и я решил покопаться в этой проблеме, получилось следующее:
в функциональном модуле xml_export_dialog в начале вставил implicit enhancement
Code:
FUNCTION xml_export_dialog.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Функц. модуль XML_EXPORT_DIALOG, Начало                                                                                                           A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZXML_EXPORT_DIALOG.    "active version
  data: ok type c.

  if I_DEFAULT_EXTENSION = 'XLSX' or I_DEFAULT_EXTENSION = 'XLS'.
    PERFORM excel_open IN PROGRAM YDK_EXCELOPEN USING I_XML I_DEFAULT_EXTENSION ok.
    check ok is INITIAL.
  endif.
ENDENHANCEMENT.


обработку вынес в отдельную программу (может ещё где пригодится):
Code:
REPORT ydk_excelopen.

FORM excel_open USING xstr_data extension ok.
  DATA: filename TYPE string.
  DATA: length   TYPE i.
  DATA: itdata   TYPE xml_rawdata.

  CHECK extension = 'XLSX' OR extension = 'XLS'.

  PERFORM get_temp_filename USING filename extension.
  CHECK NOT filename IS INITIAL.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer        = xstr_data
    IMPORTING
      output_length = length
    TABLES
      binary_tab    = itdata.

  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      bin_filesize = length
      filetype     = 'BIN'
      filename     = filename
    CHANGING
      data_tab     = itdata
    EXCEPTIONS
      OTHERS       = 1.
  CHECK sy-subrc = 0.

  PERFORM excel_run USING filename.

  ok = 'X'.
ENDFORM.

FORM get_temp_filename USING rfilename extension.
  DATA: temdir TYPE string.
  DATA: len TYPE i.
  DATA: rc  TYPE i.
  DATA: ok TYPE c.
  DATA: num(2) TYPE n.

  CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
    CHANGING
      sapworkdir            = temdir
    EXCEPTIONS
      get_sapworkdir_failed = 1
      cntl_error            = 2
      error_no_gui          = 3
      not_supported_by_gui  = 4
      OTHERS                = 5.

  DO 15 TIMES.
    num = sy-index.

    CONCATENATE temdir '\tmp_excel_' num '.' extension INTO rfilename.

    CALL METHOD cl_gui_frontend_services=>file_delete
      EXPORTING
        filename             = rfilename
      CHANGING
        rc                   = rc
      EXCEPTIONS
        file_delete_failed   = 1
        cntl_error           = 2
        error_no_gui         = 3
        file_not_found       = 4
        access_denied        = 5
        unknown_error        = 6
        not_supported_by_gui = 7
        wrong_parameter      = 8
        OTHERS               = 9.
    CHECK sy-subrc = 0 OR sy-subrc = 4.

    ok = 'X'.
    EXIT.
  ENDDO.

  IF ok IS INITIAL.
    CLEAR: rfilename.
  ENDIF.
ENDFORM.                    "prepare_filename

FORM excel_run USING filename.
  DATA: lh_appl  TYPE ole2_object.
  DATA: lh_books TYPE ole2_object.
  DATA: lh_book  TYPE ole2_object.

  DATA: ok TYPE c.

  DO 1 TIMES.
    CREATE OBJECT lh_appl 'EXCEL.APPLICATION'.
    CHECK sy-subrc = 0.

    SET PROPERTY OF lh_appl 'DisplayAlerts' = 0.
    CHECK sy-subrc = 0.

    CALL METHOD OF lh_appl 'WORKBOOKS' = lh_books.
    CHECK sy-subrc = 0.

    CALL METHOD OF lh_books 'ADD' " такой способ позволяет открыть книгу как новый файл, при закрытии Excel предложит сохранить...
      EXPORTING
        #1 = filename.

    CALL METHOD OF lh_appl 'ACTIVEWORKBOOK' = lh_book.
    CHECK sy-subrc = 0.

    SET PROPERTY OF lh_book 'Saved' = 0.

    PERFORM excel_open_exit IN PROGRAM zbc_excel_open_exit USING lh_appl lh_books lh_book IF FOUND. " сделал Exit для себя чтоб можно было украсть Excel если надо будет

    SET PROPERTY OF lh_appl 'DisplayAlerts' = 1.

    SET PROPERTY OF lh_appl 'VISIBLE' = 1.

    ok = 'X'.
  ENDDO.

  IF ok IS INITIAL.
    IF NOT lh_appl IS INITIAL.
      CALL METHOD OF lh_appl 'QUIT'.
    ENDIF.
  ENDIF.
ENDFORM.                    "xml_run

_________________
Попытка не пытка


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка ALV в Excel - небольшое улучшение
СообщениеДобавлено: Чт, янв 28 2016, 19:02 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
А что, нормально :)
Только осторожнее, а то кому то не нужен файл, а кому то и нужен в том виде как он привык. Утром придет на работу, а стандартная кнопка АЛВ начнет работать по другому :shock: :) Завязать можно эту фишку на настоечную табличку, например.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузка ALV в Excel - небольшое улучшение
СообщениеДобавлено: Ср, фев 03 2016, 17:38 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 02 2013, 09:42
Сообщения: 33
Besa написал:
А что, нормально :)
Только осторожнее, а то кому то не нужен файл, а кому то и нужен в том виде как он привык. Утром придет на работу, а стандартная кнопка АЛВ начнет работать по другому :shock: :) Завязать можно эту фишку на настоечную табличку, например.

Специфицированную для пользователя и добавить popup с пунктами
    Больше не спрашивать для
    всех отчётов
    этого отчёта.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка ALV в Excel - небольшое улучшение
СообщениеДобавлено: Чт, фев 04 2016, 22:49 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
зачем мудрить
пользователи привыкнут быстро если вообще заметят
кроме того Excel при закрытии предложит сохранить файл

_________________
Изображение Попытка не пытка


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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