Untitled

 avatar
Coder2828
plain_text
a month ago
50 kB
5
Indexable
REPORT ztr_transport_info.

TABLES: e070.

*----------------------------------------------------------------------*
* Types
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_output,
         trkorr     TYPE e070-trkorr,    " Source Transport
                  as4text    TYPE e07t-as4text,   " TR Description
                           toc_trkorr TYPE e070-trkorr,    " Transport of Copies
                                  END OF ty_output.

                                  *----------------------------------------------------------------------*
                                  * Data
                                  *----------------------------------------------------------------------*
                                  DATA: lt_output    TYPE TABLE OF ty_output,
                                        lo_alv       TYPE REF TO cl_salv_table,
                                              lo_columns   TYPE REF TO cl_salv_columns_table,
                                                    lo_column    TYPE REF TO cl_salv_column_table,
                                                          lo_functions TYPE REF TO cl_salv_functions_list,
                                                                lo_display   TYPE REF TO cl_salv_display_settings,
                                                                      lo_layout    TYPE REF TO cl_salv_layout,
                                                                            ls_layout    TYPE salv_s_layout_key.           " <-- corrected type

                                                                            *----------------------------------------------------------------------*
                                                                            * Selection Screen
                                                                            *----------------------------------------------------------------------*
                                                                            SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
                                                                              SELECT-OPTIONS: s_trkorr FOR e070-trkorr
                                                                                                OBLIGATORY
                                                                                                                  VISIBLE LENGTH 20.
                                                                                                                  SELECTION-SCREEN END OF BLOCK b1.

                                                                                                                  INITIALIZATION.
                                                                                                                    TEXT-001 = 'Transport Selection'.

                                                                                                                    *----------------------------------------------------------------------*
                                                                                                                    * Start of Selection
                                                                                                                    *----------------------------------------------------------------------*
                                                                                                                    START-OF-SELECTION.

                                                                                                                      DATA: lt_e070   TYPE TABLE OF e070,
                                                                                                                              lt_e07t   TYPE TABLE OF e07t,
                                                                                                                                      lt_e070a  TYPE TABLE OF e070a,
                                                                                                                                              ls_output TYPE ty_output.

                                                                                                                                                " 1. Fetch transport headers for input TRs
                                                                                                                                                  SELECT trkorr
                                                                                                                                                      FROM e070
                                                                                                                                                          INTO TABLE @lt_e070
                                                                                                                                                              WHERE trkorr IN @s_trkorr.

                                                                                                                                                                IF lt_e070 IS INITIAL.
                                                                                                                                                                    MESSAGE 'No transports found for the given selection.' TYPE 'I'
                                                                                                                                                                                DISPLAY LIKE 'W'.
                                                                                                                                                                                    RETURN.
                                                                                                                                                                                      ENDIF.

                                                                                                                                                                                        " 2. Fetch descriptions (logon language, fallback EN)
                                                                                                                                                                                          SELECT trkorr, as4text
                                                                                                                                                                                              FROM e07t
                                                                                                                                                                                                  INTO TABLE @lt_e07t
                                                                                                                                                                                                      WHERE trkorr IN @s_trkorr
                                                                                                                                                                                                            AND langu  = @sy-langu.

                                                                                                                                                                                                              IF lt_e07t IS INITIAL.
                                                                                                                                                                                                                  SELECT trkorr, as4text
                                                                                                                                                                                                                        FROM e07t
                                                                                                                                                                                                                              INTO TABLE @lt_e07t
                                                                                                                                                                                                                                    WHERE trkorr IN @s_trkorr
                                                                                                                                                                                                                                            AND langu  = 'E'.
                                                                                                                                                                                                                                              ENDIF.

                                                                                                                                                                                                                                                " 3. Fetch ToC links from E070A
                                                                                                                                                                                                                                                  "    ANCESTOR = source TR, TRKORR = the Transport of Copies
                                                                                                                                                                                                                                                    SELECT trkorr, ancestor
                                                                                                                                                                                                                                                        FROM e070a
                                                                                                                                                                                                                                                            INTO TABLE @lt_e070a
                                                                                                                                                                                                                                                                WHERE ancestor IN @s_trkorr.

                                                                                                                                                                                                                                                                  " 4. Build output
                                                                                                                                                                                                                                                                    LOOP AT lt_e070 INTO DATA(ls_e070).
                                                                                                                                                                                                                                                                        CLEAR ls_output.
                                                                                                                                                                                                                                                                            ls_output-trkorr = ls_e070-trkorr.

                                                                                                                                                                                                                                                                                " Description
                                                                                                                                                                                                                                                                                    READ TABLE lt_e07t INTO DATA(ls_e07t)
                                                                                                                                                                                                                                                                                          WITH KEY trkorr = ls_e070-trkorr.
                                                                                                                                                                                                                                                                                              ls_output-as4text = COND #( WHEN sy-subrc = 0
                                                                                                                                                                                                                                                                                                                              THEN ls_e07t-as4text
                                                                                                                                                                                                                                                                                                                                                              ELSE '(No description)' ).

                                                                                                                                                                                                                                                                                                                                                                  " Transport of Copies
                                                                                                                                                                                                                                                                                                                                                                      READ TABLE lt_e070a INTO DATA(ls_e070a)
                                                                                                                                                                                                                                                                                                                                                                            WITH KEY ancestor = ls_e070-trkorr.
                                                                                                                                                                                                                                                                                                                                                                                ls_output-toc_trkorr = COND #( WHEN sy-subrc = 0
                                                                                                                                                                                                                                                                                                                                                                                                                   THEN ls_e070a-trkorr
                                                                                                                                                                                                                                                                                                                                                                                                                                                      ELSE '(No ToC found)' ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                          APPEND ls_output TO lt_output.
                                                                                                                                                                                                                                                                                                                                                                                                                                                            ENDLOOP.

                                                                                                                                                                                                                                                                                                                                                                                                                                                              IF lt_output IS INITIAL.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MESSAGE 'No data to display.' TYPE 'I'.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RETURN.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ENDIF.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          PERFORM f_display_alv.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          *----------------------------------------------------------------------*
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          * ALV Display
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          *----------------------------------------------------------------------*
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FORM f_display_alv.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            TRY.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  cl_salv_table=>factory(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            IMPORTING r_salv_table = lo_alv
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    CHANGING  t_table      = lt_output ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          " Toolbar
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                lo_functions = lo_alv->get_functions( ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      lo_functions->set_all( abap_true ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            " Header
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  lo_display = lo_alv->get_display_settings( ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        lo_display->set_list_header( 'Transport & Transport of Copies Overview' ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              lo_display->set_striped_pattern( cl_salv_display_settings=>true ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    " Layout save
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          lo_layout = lo_alv->get_layout( ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ls_layout-report = sy-repid.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      lo_layout->set_key( ls_layout ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            lo_layout->set_save_restriction( cl_salv_layout=>restrict_none ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  " Columns
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        lo_columns = lo_alv->get_columns( ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              lo_columns->set_optimize( abap_true ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    lo_column ?= lo_columns->get_column( 'TRKORR' ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          lo_column->set_long_text(   'Transport Number'  ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                lo_column->set_medium_text( 'Transport No.'     ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      lo_column->set_short_text(  'TR No.'            ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            lo_column->set_key( abap_true ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  lo_column ?= lo_columns->get_column( 'AS4TEXT' ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        lo_column->set_long_text(   'Transport Description' ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              lo_column->set_medium_text( 'TR Description'        ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    lo_column->set_short_text(  'TR Desc.'              ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          lo_column ?= lo_columns->get_column( 'TOC_TRKORR' ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                lo_column->set_long_text(   'Transport of Copies'   ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      lo_column->set_medium_text( 'ToC Number'            ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            lo_column->set_short_text(  'ToC'                   ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  " Sort
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        DATA(lo_sorts) = lo_alv->get_sorts( ).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              lo_sorts->add_sort( columnname = 'TRKORR' ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    lo_alv->display( ).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      CATCH cx_salv_msg        INTO DATA(lx_msg).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          MESSAGE lx_msg->get_text( ) TYPE 'E'.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            CATCH cx_salv_not_found  INTO DATA(lx_nf).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MESSAGE lx_nf->get_text( ) TYPE 'E'.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  CATCH cx_salv_data_error INTO DATA(lx_de).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MESSAGE lx_de->get_text( ) TYPE 'E'.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ENDTRY.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ENDFORM.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  )
Editor is loading...
Leave a Comment