SAPфорум.RU
https://sapboard.ru/forum/

массовая выгрузка документации из запросов (SE10)
https://sapboard.ru/forum/viewtopic.php?f=13&t=81417
Страница 1 из 1

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

Коллеги, привет,
решил поделиться небольшой программой по выгрузке документации из запроса, возможна массовая обработка. Есть две возможности вывода: 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 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/