Untitled
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