- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- *&---------------------------------------------------------------------*
- *& Report Z_GOS_MASS_DOWNLOAD
- *&
- *&---------------------------------------------------------------------*
- *&
- *&
- *&---------------------------------------------------------------------*
- REPORT z_ar_sgos_download.
- *TABLES: sscrfields.
- * Tabellen der Varianten
- * ltdx
- * Ltdxd
- * Ltdxs
- * Grid Parameter
- g_container TYPE scrfname VALUE 'GRID1',
- grid1 TYPE REF TO cl_gui_alv_grid,
- g_custom_container TYPE REF TO cl_gui_custom_container,
- is_variant TYPE disvariant.
- *--- Field catalog table
- *--- Layout structure
- * LT_EXCLUDE => Tabelle zum Ausschliessen von Funktionen innerhalb
- * der Toolbar des ALV-Grid
- ls_exclude TYPE ui_func.
- * ALV Datenquelle DATA cellcolors TYPE lvc_t_scol .
- * für autom. Variante DEFAULT laden
- DATA:
- l_report TYPE raldb_repo,
- l_variante TYPE raldb_vari,
- BEGIN OF t_info OCCURS 0,
- typ(1),
- null(1),
- line(120),
- END OF t_info.
- sap_object TYPE saeanwdid,
- object_id TYPE saeobjid,
- archiv_id TYPE saearchivi,
- arc_doc_id TYPE saeardoid,
- ar_object TYPE saeobjart,
- END OF ty_toaxx.
- * 4 select options
- "ranges r_altab for ty_linktab.
- SELECT-OPTIONS s_doc FOR ty_srgbtbrel-instid_a OBLIGATORY.
- SELECT-OPTIONS s_bus FOR ty_sap_object OBLIGATORY.
- SELECT-OPTIONS s_id FOR ty_docid OBLIGATORY.
- SELECT-OPTIONS s_obj FOR ty_sap_object OBLIGATORY.
- SELECT-OPTIONS s_doctyp FOR ty_doctype.
- REFRESH it_data.
- WHERE
- reltype = p_type AND
- typeid_a IN s_bus AND
- instid_a IN s_doc ORDER BY PRIMARY KEY.
- ELSE.
- WHERE
- reltype = p_type AND
- typeid_a IN s_bus AND
- instid_a IN s_doc ORDER BY PRIMARY KEY.
- PERFORM get_phio_id .
- phio_id = <p>-phio_id.
- name = <p>-typeid_a AND
- language = sy-langu.
- * get all Link tables TOAxx
- WHERE
- sap_object IN s_obj AND
- ar_object IN s_doctyp AND
- ar_status NE ' '
- ORDER BY PRIMARY KEY.
- REFRESH it_toa.
- SELECT sap_object object_id archiv_id arc_doc_id ar_object
- FROM (s_ltab-connection)
- APPENDING TABLE it_toa WHERE
- sap_object IN s_obj AND
- object_id IN s_id AND
- ar_object IN s_doctyp
- ORDER BY PRIMARY KEY.
- ELSE.
- REFRESH it_toa.
- SELECT sap_object object_id archiv_id arc_doc_id ar_object
- FROM (s_ltab-connection)
- UP TO p_maxhit ROWS
- APPENDING TABLE it_toa WHERE
- sap_object IN s_obj AND
- object_id IN s_id AND
- ar_object IN s_doctyp
- ORDER BY PRIMARY KEY.
- PERFORM get_alinks.
- CALL SCREEN 100.
- EXIT.
- ** Lade Variante sy-uname
- l_report = sy-repid.
- l_variante = sy-uname.
- CALL FUNCTION 'RS_COVERPAGE_SELECTIONS'
- EXPORTING
- report = l_report
- variant = l_variante
- infotab = t_info
- EXCEPTIONS
- OTHERS = 3.
- *---------------------------------------------------------------------*
- * CLASS lcl_event_handler DEFINITION
- *---------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------*
- PUBLIC SECTION .
- *--To add new functional buttons to the ALV toolbar
- handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
- IMPORTING e_object e_interactive ,
- *--To implement user commands
- handle_user_command
- FOR EVENT user_command OF cl_gui_alv_grid
- IMPORTING e_ucomm.
- PRIVATE SECTION.
- *---------------------------------------------------------------------*
- * CLASS lcl_event_handler IMPLEMENTATION
- *---------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------*
- *--Handle Toolbar
- METHOD handle_toolbar.
- *--Handle User Command
- METHOD handle_user_command .
- *--Handle user toolbar menu
- * METHOD handle_menu_button .
- * PERFORM handle_menu_button USING e_object e_ucomm .
- * ENDMETHOD . "handle_menu_button
- *---------------------------------------------------------------------*
- * MODULE PBO OUTPUT *
- *---------------------------------------------------------------------*
- MODULE pbo OUTPUT.
- CREATE OBJECT g_custom_container
- EXPORTING
- container_name = g_container.
- CREATE OBJECT grid1
- EXPORTING
- i_parent = g_custom_container.
- *--Creating an instance for the event handler
- CREATE OBJECT gr_event_handler .
- *----Preparing field catalog.
- *----Preparing layout structure
- *----Preparing Disable Toolbar Buttons
- PERFORM change_buttons .
- is_variant-variant = '/GLOB_DEF'.
- CALL METHOD grid1->set_table_for_first_display
- EXPORTING
- is_variant = is_variant
- i_save = 'A'
- is_layout = gs_layout
- it_toolbar_excluding = lt_exclude
- CHANGING
- it_outtab = it_data[]
- it_fieldcatalog = gt_fieldcat[].
- *--Registering handler methods to handle ALV Grid events JG
- SET HANDLER gr_event_handler->handle_toolbar FOR grid1.
- SET HANDLER gr_event_handler->handle_user_command FOR grid1.
- * Switch Toolbar of Grid to interactive
- CALL METHOD grid1->set_toolbar_interactive.
- * Der GRID1 wird noch refreshed
- CALL METHOD grid1->refresh_table_display.
- SET PF-STATUS 'MAIN100'.
- SET TITLEBAR 'AUSW' WITH text-001.
- *---------------------------------------------------------------------*
- * MODULE PAI INPUT *
- *---------------------------------------------------------------------*
- * to react on oi_custom_events:
- CALL METHOD cl_gui_cfw=>dispatch.
- CASE ok_code.
- PERFORM exit_program.
- * do nothing
- CLEAR ok_code.
- *---------------------------------------------------------------------*
- * FORM EXIT_PROGRAM *
- *---------------------------------------------------------------------*
- FORM exit_program.
- * CALL METHOD G_CUSTOM_CONTAINER->FREE.
- * CALL METHOD CL_GUI_CFW=>FLUSH.
- *&--------------------------------------------------------------------*
- *& Form Change_buttons
- *&--------------------------------------------------------------------*
- * text
- *---------------------------------------------------------------------*
- FORM change_buttons .
- * Kein Symbol für Drucken / Graphik / Info
- ls_exclude = cl_gui_alv_grid=>mc_fc_print_back.
- ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
- ls_exclude = cl_gui_alv_grid=>mc_fc_info.
- *&--------------------------------------------------------------------*
- *& Form prepare_layout
- *&--------------------------------------------------------------------*
- * text
- *---------------------------------------------------------------------*
- * -->PS_LAYOUT text
- *---------------------------------------------------------------------*
- ps_layout-zebra = 'X' .
- *ps_layout-cwidth_opt ='X'.
- ps_layout-numc_total = ' '.
- ps_layout-no_merging = 'X'.
- ps_layout-no_rowmark = ' '.
- ps_layout-sel_mode = 'A'.
- *&--------------------------------------------------------------------*
- *& Form handle_toolbar
- *&--------------------------------------------------------------------*
- * text
- *---------------------------------------------------------------------*
- * -->I_OBJECT text
- *---------------------------------------------------------------------*
- e_interactive .
- * Paltzhalter / Seperator
- CLEAR ls_toolbar.
- * Button MARKIEREN
- CLEAR ls_toolbar.
- * Button MARK all Filtered
- CLEAR ls_toolbar.
- * Button Select ALL
- CLEAR ls_toolbar.
- * Button Deselect ALL
- CLEAR ls_toolbar.
- * Paltzhalter / Seperator
- CLEAR ls_toolbar.
- * Download selected
- CLEAR ls_toolbar.
- *&---------------------------------------------------------------------*
- *& Form handle_user_command
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- CASE i_ucomm .
- CALL METHOD grid1->get_selected_rows
- IMPORTING
- et_row_no = lt_selected_rows.
- * War was selektiert ?
- READ TABLE lt_selected_rows INTO ls_selected_row INDEX 1 .
- ELSE.
- READ TABLE it_data ASSIGNING <p> INDEX ls_selected_row-row_id.
- <p>-xfeld = space.
- ELSE.
- <p>-xfeld = 'X'.
- lv_flag = <p>-xfeld.
- ENDIF .
- CALL METHOD grid1->get_filtered_entries
- IMPORTING
- et_filtered_entries = lfiltered.
- READ TABLE lfiltered WITH KEY = sy-tabix TRANSPORTING NO FIELDS.
- <p>-xfeld = 'X'.
- * Delete all marks
- <p>-xfeld = space.
- * marks all
- <p>-xfeld = 'X'.
- * download selected
- PERFORM getdoc.
- ELSE.
- PERFORM getdoc_alink.
- <p>-sicon = '@01@'.
- ENDCASE .
- CLEAR i.
- i = i + 1.
- SET TITLEBAR 'AUSW' WITH lv_tit.
- lv_stable-row = 'X'.
- CALL METHOD grid1->refresh_table_display
- EXPORTING
- is_stable = lv_stable
- EXCEPTIONS
- finished = 1
- OTHERS = 2.
- *&--------------------------------------------------------------------*
- *& Form prepare_field_catalog
- *&--------------------------------------------------------------------*
- * text
- *---------------------------------------------------------------------*
- * -->PT_FIELDCATtext
- *---------------------------------------------------------------------*
- * DATA lv_depth TYPE i.
- CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- EXPORTING
- i_structure_name = 'ZAR_GOS_ATTA_ALV'
- CHANGING
- ct_fieldcat = pt_fieldcat[]
- EXCEPTIONS
- inconsistent_interface = 1
- program_error = 2
- OTHERS = 3.
- *--Exception handling
- READ TABLE pt_fieldcat ASSIGNING <f> WITH KEY fieldname = 'XFELD'.
- <f>-coltext = 'Select'.
- <f>-reptext = 'Select'.
- <f>-checkbox = 'X'.
- <f>-scrtext_l = 'Select'.
- <f>-scrtext_m = 'Sel'.
- <f>-scrtext_s = 'x'.
- <f>-ref_table = 'KAEP_COAC'.
- <f>-tabname = '1'.
- READ TABLE pt_fieldcat ASSIGNING <f> WITH KEY fieldname = 'SICON'.
- <f>-icon = 'X'.
- <f>-coltext = 'Status'.
- <f>-reptext = 'Status'.
- <f>-scrtext_l = 'Status'.
- <f>-scrtext_m = 'Status'.
- <f>-scrtext_s = 'Status'.
- FORM get_phio_id .
- l_object_id = <p>-instid_b+17.
- CALL FUNCTION 'SO_OBJECT_GET_CONTENT'
- EXPORTING
- object_id = l_object_id
- objcont = t_objcont
- EXCEPTIONS
- archive_error = 1
- object_not_exist = 2
- OTHERS = 3.
- READ TABLE t_objcont INTO s_objcont INDEX 1.
- * MESSAGE s000(su) WITH 'No document for' <p>-instid_a 'found!' DISPLAY LIKE 'E'.
- ELSE.
- (<p>-phio_id, <p>-stor_cat)
- WHERE loio_id = l_loio.
- FORM getdoc.
- PERFORM checkpath.
- CALL FUNCTION 'SCMS_DOC_INFO'
- EXPORTING
- * MANDT = SY-MANDT
- stor_cat = <p>-stor_cat
- * CREP_ID = ' '
- doc_id = <p>-phio_id
- * PHIO_ID =
- * SIGNATURE = 'X'
- * SECURITY = ' '
- * NO_HTTP_LOG = ' '
- * IMPORTING
- * CREA_TIME =
- * CREA_DATE =
- * CHNG_TIME =
- * CHNG_DATE =
- * STATUS =
- comps = lt_comps
- EXCEPTIONS
- bad_storage_type = 1
- bad_request = 2
- unauthorized = 3
- not_found = 4
- conflict = 5
- internal_server_error = 6
- error_http = 7
- error_signature = 8
- error_config = 9
- error_hierarchy = 10
- error_parameter = 11
- error = 12
- OTHERS = 13.
- * logg ls-phio_id sy-subrc 'Info'.
- <p>-file_name = ls_comps-comp_id.
- EXIT.
- CALL FUNCTION 'SCMS_DOC_READ_FILE'
- EXPORTING
- * MANDT = SY-MANDT
- stor_cat = <p>-stor_cat
- * CREP_ID = ' '
- doc_id = <p>-phio_id
- * PHIO_ID =
- comp_id = <p>-file_name
- path = l_path
- * FRONTEND = 'X'
- * SIGNATURE = 'X'
- security = ' '
- * NO_CACHE = ' '
- * P_TRANSFER_PHIO =
- * IMPORTING
- * SIZE =
- * MIMETYPE =
- EXCEPTIONS
- bad_storage_type = 1
- bad_request = 2
- unauthorized = 3
- not_found = 4
- conflict = 5
- internal_server_error = 6
- error_http = 7
- error_signature = 8
- error_config = 9
- error_hierarchy = 10
- error_format = 11
- error_open = 12
- error_download = 13
- error_parameter = 14
- error = 15
- OTHERS = 16.
- * logg ls-phio_id sy-subrc 'Download 1'.
- CALL FUNCTION 'SCMS_DOC_READ_FILE'
- EXPORTING
- * MANDT = SY-MANDT
- stor_cat = <p>-stor_cat
- * CREP_ID = ' '
- doc_id = <p>-phio_id
- * PHIO_ID =
- comp_id = <p>-file_name
- path = l_path
- * FRONTEND = 'X'
- * SIGNATURE = 'X'
- security = ' '
- * NO_CACHE = ' '
- * P_TRANSFER_PHIO =
- * IMPORTING
- * SIZE =
- * MIMETYPE =
- EXCEPTIONS
- bad_storage_type = 1
- bad_request = 2
- unauthorized = 3
- not_found = 4
- conflict = 5
- internal_server_error = 6
- error_http = 7
- error_signature = 8
- error_config = 9
- error_hierarchy = 10
- error_format = 11
- error_open = 12
- error_download = 13
- error_parameter = 14
- error = 15
- OTHERS = 16.
- * logg ls-phio_id sy-subrc 'Download 2'.
- EXIT.
- FORM checkpath.
- * CONCATENATE p_path g_dadd INTO l_dir.
- l_dir = p_path.
- CALL METHOD cl_gui_frontend_services=>directory_exist
- EXPORTING
- directory = l_dir
- RECEIVING
- result = l_rc1.
- * create Subfolder
- CALL METHOD cl_gui_frontend_services=>directory_create
- EXPORTING
- directory = l_dir
- CHANGING
- rc = l_rc
- EXCEPTIONS
- directory_create_failed = 1
- cntl_error = 2
- error_no_gui = 3
- directory_access_denied = 4
- directory_already_exists = 5
- path_not_found = 6
- unknown_error = 7
- not_supported_by_gui = 8
- wrong_parameter = 9
- OTHERS = 10.
- CALL METHOD cl_gui_frontend_services=>directory_exist
- EXPORTING
- directory = l_dir
- RECEIVING
- result = l_rc1.
- * create Subfolder
- CALL METHOD cl_gui_frontend_services=>directory_create
- EXPORTING
- directory = l_dir
- CHANGING
- rc = l_rc
- EXCEPTIONS
- directory_create_failed = 1
- cntl_error = 2
- error_no_gui = 3
- directory_access_denied = 4
- directory_already_exists = 5
- path_not_found = 6
- unknown_error = 7
- not_supported_by_gui = 8
- wrong_parameter = 9
- OTHERS = 10.
- l_rc = sy-subrc.
- * logg ls-phio_id l_rc 'Directory err'.
- EXIT.
- * logg ls-phio_id '5' 'Directory exist'.
- FORM get_alinks.
- DATA:
- s_alv TYPE zar_gos_atta_alv,
- l_archiv_doc_id TYPE sapb-sapadokid,
- l_archiv_id TYPE toaar-archiv_id,
- s_toa TYPE ty_toaxx,
- t_comp TYPE TABLE OF components,
- s_comp TYPE components,
- l_document_type TYPE sapb-sapdoktyp.
- CLEAR s_alv.
- s_alv-reltype = 'ALINK'.
- s_alv-instid_a = s_toa-object_id.
- s_alv-typeid_a = s_toa-sap_object.
- s_alv-phio_id = s_toa-arc_doc_id.
- s_alv-stor_cat = s_toa-archiv_id.
- l_archiv_doc_id = s_toa-arc_doc_id.
- l_archiv_id = s_toa-archiv_id.
- REFRESH t_comp.
- CALL FUNCTION 'ARCHIVOBJECT_STATUS'
- EXPORTING
- archiv_doc_id = l_archiv_doc_id
- archiv_id = l_archiv_id
- * SIGN = ' '
- * DOC_TYPE = ' '
- * SIGNATURE = 'X'
- IMPORTING
- * ARCHIV_OBJECT_STATUS =
- * AR_DATE =
- * AR_TIME =
- document_type = l_document_type
- al_components = t_comp
- * COMPSL =
- EXCEPTIONS
- error_archiv = 1
- error_communicationtable = 2
- error_kernel = 3
- OTHERS = 4.
- s_alv-file_name = s_comp-compid.
- s_alv-mimetype = s_comp-mimetype.
- s_alv-file_size = s_comp-compsize.
- s_alv-doc_format = l_document_type.
- xtoa TYPE ty_toaxx.
- s_alv-stext = xtext.
- ELSE.
- ar_object = s_toa-ar_object AND
- language = sy-langu.
- xtext = s_alv-stext.
- xtoa = s_toa.
- FORM getdoc_alink.
- PERFORM checkpath.
- CALL FUNCTION 'SCMS_DOC_READ_FILE'
- EXPORTING
- * MANDT = SY-MANDT
- stor_cat = l_stor_cat
- crep_id = <p>-stor_cat
- doc_id = <p>-phio_id
- * PHIO_ID =
- comp_id = <p>-file_name
- path = l_path
- * FRONTEND = 'X'
- * SIGNATURE = 'X'
- security = ' '
- * NO_CACHE = ' '
- * P_TRANSFER_PHIO =
- * IMPORTING
- * SIZE =
- * MIMETYPE =
- EXCEPTIONS
- bad_storage_type = 1
- bad_request = 2
- unauthorized = 3
- not_found = 4
- conflict = 5
- internal_server_error = 6
- error_http = 7
- error_signature = 8
- error_config = 9
- error_hierarchy = 10
- error_format = 11
- error_open = 12
- error_download = 13
- error_parameter = 14
- error = 15
- OTHERS = 16.
- * in case of filename problems
- CALL FUNCTION 'SCMS_DOC_READ_FILE'
- EXPORTING
- * MANDT = SY-MANDT
- stor_cat = l_stor_cat
- crep_id = <p>-stor_cat
- doc_id = <p>-phio_id
- * PHIO_ID =
- comp_id = l_filename
- path = l_path
- * FRONTEND = 'X'
- * SIGNATURE = 'X'
- security = ' '
- * NO_CACHE = ' '
- * P_TRANSFER_PHIO =
- * IMPORTING
- * SIZE =
- * MIMETYPE =
- EXCEPTIONS
- bad_storage_type = 1
- bad_request = 2
- unauthorized = 3
- not_found = 4
- conflict = 5
- internal_server_error = 6
- error_http = 7
- error_signature = 8
- error_config = 9
- error_hierarchy = 10
- error_format = 11
- error_open = 12
- error_download = 13
- error_parameter = 14
- error = 15
- OTHERS = 16.
- * logg ls-phio_id sy-subrc 'Download 2'.
- EXIT.
- GeSHi ©
Additional