*&---------------------------------------------------------------------*
*& Report ZTR_ALV
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztr_alv.
TYPES: BEGIN OF ty_dev_object,
obj_name TYPE string,
pgm_id TYPE char4,
object TYPE char4,
trkorr TYPE char20,
as4user TYPE char12,
as4date TYPE d,
as4time TYPE t,
as4text TYPE char60,
package TYPE tadir-devclass,
tech_name TYPE tadir-obj_name,
color TYPE lvc_t_scol,
END OF ty_dev_object.
TYPES: tt_dev_object TYPE STANDARD TABLE OF ty_dev_object WITH KEY obj_name pgm_id object trkorr.
DATA: lt_trkorr TYPE TABLE OF scwbtrkorr,
ls_trkorr LIKE LINE OF lt_trkorr,
lt_trlist TYPE string_table,
lt_e070 TYPE STANDARD TABLE OF scwb_e070,
lt_e070t TYPE STANDARD TABLE OF scwb_e07t,
lt_e070c TYPE STANDARD TABLE OF scwb_e070c,
lt_e071 TYPE STANDARD TABLE OF scwb_e071,
lt_e071k TYPE STANDARD TABLE OF scwb_e071k,
lt_e070a TYPE STANDARD TABLE OF scwb_e070a,
lt_dev_object TYPE tt_dev_object,
ls_dev_object TYPE ty_dev_object.
DATA: lv_col TYPE lvc_s_scol,
lt_coltab TYPE lvc_t_scol,
ls_color TYPE lvc_s_colo,
lt_ic TYPE string_table.
FIELD-SYMBOLS: <e071> LIKE LINE OF lt_e071,
<e070> LIKE LINE OF lt_e070,
<e070t> LIKE LINE OF lt_e070t.
PARAMETERS: user TYPE usr02-bname DEFAULT sy-uname OBLIGATORY.
INITIALIZATION.
PERFORM init.
START-OF-SELECTION.
PERFORM fill_trlist.
PERFORM fill_data.
PERFORM alv_display.
FORM fill_trlist.
PERFORM log USING 10 'Fetching Transport request from DB...'.
PERFORM add_tr USING user.
ENDFORM.
FORM add_tr USING name TYPE char12.
DATA: lt_e070 TYPE STANDARD TABLE OF e070.
FIELD-SYMBOLS:<line> TYPE e070.
SELECT trkorr as4user INTO CORRESPONDING FIELDS OF TABLE lt_e070 FROM e070 WHERE as4user = name.
LOOP AT lt_e070 ASSIGNING <line>.
APPEND <line>-trkorr TO lt_trlist.
ENDLOOP.
ENDFORM.
FORM log USING per TYPE i text TYPE string.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = per
text = text.
ENDFORM.
FORM fill_data.
DATA: lv_tr TYPE string.
LOOP AT lt_trlist INTO lv_tr.
ls_trkorr-trkorr = lv_tr.
ls_trkorr-srcsyst = space.
APPEND ls_trkorr TO lt_trkorr.
ls_trkorr-srcsyst = lv_tr(3).
APPEND ls_trkorr TO lt_trkorr.
ENDLOOP.
CALL FUNCTION 'SCWB_GET_COMPL_REQUESTS_REM_40'
EXPORTING
iv_merge_object_lists = ' '
TABLES
it_request_numbers = lt_trkorr
et_e070 = lt_e070
et_e07t = lt_e070t
et_e070c = lt_e070c
et_e071 = lt_e071
et_e070a = lt_e070a
EXCEPTIONS
error_message = 0. "suppres
SORT lt_e070 BY trkorr.
SORT lt_e070t BY trkorr.
PERFORM log USING 50 'Analyzing object information from Transport request...'.
LOOP AT lt_e071 ASSIGNING <e071> WHERE object <> 'CORR' AND object <> 'AVAS' AND object <> 'PDWS' AND object <> 'DLCS' AND object <> 'CDAT'
AND object <> 'TDAT' AND object <> 'SMIM' AND object <> 'RELE' AND object <> 'MERG' AND object <> 'CLSD' AND object <> 'CPRO'
AND object <> 'CPUB' AND object <> 'CPRI' AND object <> 'DOCU' AND object <> 'SICF' AND object <> 'MESS' AND object <> 'PIFA'
AND object <> 'SHI6' AND object <> 'SHI3' AND object <> 'TABU' AND object <> 'VDAT'.
ls_dev_object-trkorr = <e071>-trkorr.
ls_dev_object-pgm_id = <e071>-pgmid.
ls_dev_object-object = <e071>-object.
ls_dev_object-obj_name = <e071>-obj_name.
READ TABLE lt_e070t ASSIGNING <e070t> WITH KEY trkorr = <e071>-trkorr BINARY SEARCH.
IF sy-subrc = 0.
ls_dev_object-as4text = <e070t>-as4text.
IF <e070t>-as4text CS 'Generated test transport'.
CONTINUE.
ENDIF.
ENDIF.
READ TABLE lt_e070 ASSIGNING <e070> WITH KEY trkorr = <e071>-trkorr BINARY SEARCH.
IF sy-subrc = 0.
ls_dev_object-as4user = <e070>-as4user.
ls_dev_object-as4date = <e070>-as4date.
ls_dev_object-as4time = <e070>-as4time.
ENDIF.
READ TABLE lt_e070t ASSIGNING <e070t> WITH KEY trkorr = <e071>-trkorr BINARY SEARCH.
IF sy-subrc = 0.
ls_dev_object-as4text = <e070t>-as4text.
ENDIF.
IF <e071>-object <> 'METH'.
ls_dev_object-tech_name = <e071>-obj_name.
ELSE.
PERFORM get_tech_name CHANGING ls_dev_object.
ENDIF.
APPEND ls_dev_object TO lt_dev_object.
ENDLOOP.
SORT lt_dev_object BY obj_name.
DELETE ADJACENT DUPLICATES FROM lt_dev_object COMPARING obj_name as4user as4text.
ENDFORM.
FORM get_tech_name CHANGING ls_dev_object TYPE ty_dev_object.
DATA: lt_temp TYPE string_table.
SPLIT ls_dev_object-obj_name AT space INTO TABLE lt_temp.
READ TABLE lt_temp INTO ls_dev_object-tech_name INDEX 1.
ENDFORM.
FORM init.
APPEND 'CRM_IC_APPL_INBOX' TO lt_ic.
APPEND 'CRM_IC_CMP_INBOX' TO lt_ic.
APPEND 'CRM_IC_CMP_BTX' TO lt_ic.
ls_color-col = '6'.
ls_color-int = '0'.
ls_color-inv = '0'.
lv_col-fname = 'OBJECT'.
lv_col-color = ls_color.
APPEND lv_col TO lt_coltab.
lv_col-fname = 'TRKORR'.
APPEND lv_col TO lt_coltab.
lv_col-fname = 'AS4USER'.
APPEND lv_col TO lt_coltab.
lv_col-fname = 'AS4DATE'.
APPEND lv_col TO lt_coltab.
lv_col-fname = 'AS4TIME'.
APPEND lv_col TO lt_coltab.
lv_col-fname = 'AS4TEXT'.
APPEND lv_col TO lt_coltab.
ENDFORM.
DATA ls_layout TYPE slis_layout_alv.
DATA lt_sort TYPE slis_t_sortinfo_alv.
DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA lt_event TYPE slis_t_event.
DATA ls_event TYPE slis_alv_event.
FORM alv_build_fieldcat CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv.
DATA lv_col_pos TYPE i.
DATA ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ct_fieldcat.
lv_col_pos = 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'OBJ_NAME'.
ls_fieldcat-key = 'X'.
ls_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'OBJECT'.
ls_fieldcat-rollname = 'CHAR4'.
ls_fieldcat-reptext_ddic = 'Object TYPE'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'TRKORR'.
ls_fieldcat-rollname = 'CHAR20'.
ls_fieldcat-hotspot = 'X'.
ls_fieldcat-reptext_ddic = 'TR number'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'AS4USER'.
ls_fieldcat-rollname = 'CHAR12'.
ls_fieldcat-reptext_ddic = 'Developer'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-reptext_ddic = 'Date'.
ls_fieldcat-fieldname = 'AS4DATE'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'AS4TIME'.
ls_fieldcat-reptext_ddic = 'Time'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = lv_col_pos.
ls_fieldcat-fieldname = 'AS4TEXT'.
ls_fieldcat-reptext_ddic = 'Description'.
APPEND ls_fieldcat TO ct_fieldcat.
ADD 1 TO lv_col_pos.
ENDFORM. "alv_build_fieldcat
FORM alv_build_layout USING es_layout TYPE slis_layout_alv.
es_layout-colwidth_optimize = 'X'.
es_layout-zebra = 'X'.
es_layout-coltab_fieldname = 'COLOR'.
ENDFORM. "alv_build_layout
*&---------------------------------------------------------------------*
*& Form alv_build_sorting
*&---------------------------------------------------------------------*
FORM alv_build_sorting USING et_sort TYPE slis_t_sortinfo_alv.
DATA ls_sort LIKE LINE OF et_sort.
CLEAR ls_sort.
ls_sort-fieldname = 'OBJ_NAME'.
ls_sort-up = 'X'.
APPEND ls_sort TO et_sort.
ENDFORM.
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
DATA: text TYPE sdydo_text_element.
text = '用户传输请求查看小工具'.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'HEADING'.
ENDFORM. "HTML_TOP_OF_PAGE
FORM alv_display.
PERFORM alv_build_fieldcat CHANGING gt_fieldcat.
PERFORM alv_build_layout USING ls_layout.
PERFORM alv_build_sorting USING lt_sort.
ls_event-name = 'DATA_CHANGED'.
ls_event-form = 'DATA_CHANGED'.
APPEND ls_event TO lt_event.
PERFORM log USING 80 'Determining Package information...'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'ALV_SET_STATUS'
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
i_callback_user_command = 'ALV_USER_COMMAND'
is_layout = ls_layout
it_fieldcat = gt_fieldcat
it_sort = lt_sort
it_events = lt_event
i_grid_title = 'Transport Request Object List'
TABLES
t_outtab = lt_dev_object
EXCEPTIONS
program_error = 1
OTHERS = 2.
ASSERT sy-subrc = 0.
ENDFORM.
FORM alv_user_command USING iv_ucomm LIKE sy-ucomm
ct_selfield TYPE slis_selfield."#EC CALLED .
PERFORM display_object USING ct_selfield.
ENDFORM.
FORM display_object USING ct_selfield TYPE slis_selfield.
FIELD-SYMBOLS: <line> TYPE ty_dev_object.
READ TABLE lt_dev_object ASSIGNING <line> INDEX ct_selfield-tabindex.
CHECK sy-subrc = 0.
IF ct_selfield-fieldname = 'TRKORR'.
SET PARAMETER ID 'KOR' FIELD <line>-trkorr.
CALL FUNCTION 'TR_PRESENT_REQUEST'
EXPORTING
iv_trkorr = <line>-trkorr
iv_highlight = 'X'.
ELSE.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = <line>-obj_name
object_type = <line>-object
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDFORM.
FORM alv_set_status USING it_exclude TYPE table.
SET PF-STATUS 'ZALV'.
ENDFORM.
ABAP TR List 查询报表
于 2023-05-25 14:39:41 首次发布