Текущее время: Ср, апр 24 2024, 00:53

Часовой пояс: 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 Feedfetcher


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

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