Текущее время: Пт, апр 26 2024, 18:56

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: массовая выгрузка документации из запросов (SE10)
СообщениеДобавлено: Ср, мар 06 2013, 09:26 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Коллеги, привет,
решил поделиться небольшой программой по выгрузке документации из запроса, возможна массовая обработка. Есть две возможности вывода: 1) на экран, с возможностью по дабл клику провалиться в запрос; 2) в файл.
Создано на версии 6.0 БЕЗ EHP, с 90-м уровнем пакетов.
Code:
*&---------------------------------------------------------------------*
*& Report  ZBC_GET_SE10_TXT
*&
*&---------------------------------------------------------------------*
*& (с) Dmitriy Skorikov 05/03/2013
*& чтение документации из запроса
*&---------------------------------------------------------------------*

REPORT  ZBC_GET_SE10_TXT.
TYPES : BEGIN OF lt_excel
      , str TYPE string
      , END OF lt_excel.

DATA : req_name     TYPE E070-TRKORR
     , req_txt      TYPE TABLE OF TLINE
     , wa_req_txt   TYPE TLINE
     , ln           TYPE c LENGTH 100
     , file_xls     TYPE TABLE OF lt_excel
     , wa_file_xls  LIKE LINE OF file_xls
     , i(4)         TYPE n
     , as4date      TYPE as4date
     , as4date_tx   TYPE c LENGTH 10
     .

CONSTANTS : IV_TYPE     TYPE c LENGTH 4 VALUE 'REQU'
          , IV_COMMAND  LIKE  SY-UCOMM VALUE 'REQUEST_SHOW'
          .

SELECT-OPTIONS : request FOR req_name NO INTERVALS.

PARAMETERS : add_date  as CHECKBOX
           , TXT  RADIOBUTTON GROUP grp
           , XLS  RADIOBUTTON GROUP grp.

DATA : wa_req     LIKE LINE OF request.

START-OF-SELECTION.

IF NOT request IS INITIAL.
  LOOP AT request INTO wa_req.
    req_name = wa_req-low.
    CALL FUNCTION 'TRINT_DOCU_INTERFACE'
      EXPORTING
        iv_object                 = req_name
        iv_action                 = 'R'
        iv_modify_appending       = 'X'
      TABLES
        tt_line                   = req_txt
      EXCEPTIONS
        error                     = 1
        OTHERS                    = 2
              .
    IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ELSE.
      LOOP AT req_txt INTO wa_req_txt.
        IF  sy-tabix > 4 AND wa_req_txt-tdline(2) NE '**'.
          IF NOT wa_req_txt-tdline IS INITIAL.
            IF NOT add_date IS INITIAL.
              SELECT SINGLE as4date FROM E070 INTO as4date WHERE TRKORR = req_name.
              WRITE as4date TO as4date_tx DD/MM/YYYY.
              CONCATENATE as4date_tx wa_req_txt-tdline INTO wa_req_txt-tdline SEPARATED BY space.
            ENDIF.
            IF txt = 'X'. "SCREEN OUTPUT.
              CONCATENATE req_name wa_req_txt-tdline INTO ln SEPARATED BY space.
              WRITE : / ln.
            ELSE.         "EXCEL OUTPUT
              CONCATENATE req_name wa_req_txt-tdline INTO wa_file_xls-str SEPARATED BY space.
              APPEND wa_file_xls TO file_xls.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDLOOP.
      IF txt = 'X'.
        ULINE AT /11(47).
      ENDIF.
    ENDIF.
  ENDLOOP.  " AT request

  IF XLS = 'X'.
    PERFORM save_to_excel.
  ENDIF.

ELSE. " не выбрали ни одного запроса
  CALL FUNCTION 'POPUP_TO_INFORM'
    EXPORTING
      titel         = 'не выбран запрос'
      txt1          = 'необходимо указать хотя бы один запрос!'
      txt2          = ''
            .
ENDIF.

AT LINE-SELECTION.
  CALL FUNCTION 'TRINT_TDR_USER_COMMAND'
    EXPORTING
      iv_object        = sy-lisel(10)
      iv_type          = iv_type
      iv_command       = iv_command
            .

*&---------------------------------------------------------------------*
*&      Form  SAVE_TO_EXCEL
*&---------------------------------------------------------------------*
FORM SAVE_TO_EXCEL .
  DATA p_fname TYPE string.
  CALL METHOD cl_gui_frontend_services=>directory_browse
    EXPORTING
      window_title         = 'ВЫБЕРИТЕ ПУТЬ ВЫГРУЗКИ ФАЙЛА:'
    CHANGING
      selected_folder      = p_fname
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  IF NOT p_fname  IS INITIAL.
    i = STRLEN( p_fname ) - 1.
    IF p_fname+i(1) NE '\'.
      CONCATENATE p_fname '\REQUEST_DOCS-' sy-datum+6(2) sy-datum+4(2) sy-datum(4) '-' sy-timlo '.xls' INTO p_fname.
    ELSE.
      CONCATENATE p_fname 'REQUEST_DOCS-' sy-datum+6(2) sy-datum+4(2) sy-datum(4) '-' sy-timlo '.xls' INTO p_fname.
    ENDIF.

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename                        = p_fname
      TABLES
        data_tab                        = file_xls.

    IF sy-subrc = 0.
      CALL FUNCTION 'POPUP_TO_INFORM'
        EXPORTING
          titel         = 'Файл успешно выгружен'
          txt1          = 'полный путь выгрузки и имя файла:'
          txt2          = p_fname
                .
    ENDIF.
  ELSE.
    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        titel         = 'Файл НЕ выгружен'
        txt1          = 'путь выгрузки не указан, укажите путь!'
        txt2          = ''
              .
  ENDIF.
ENDFORM.                    " SAVE_TO_EXCEL


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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