REPORT z_alv_cdhdr_cdpos. *---------------------------------------------------------------------* * This ALV report displays change document tables CDHDR and CDPOS * *---------------------------------------------------------------------* * Author : Michel PIOUD - Updated 21 Dec 2007 * * HomePage : http://www.oocities.org/mpioud * *---------------------------------------------------------------------* CONSTANTS : c_x VALUE 'X', c_eb9 TYPE syucomm VALUE '&EB9', c_refresh TYPE syucomm VALUE '&REFRESH'. *---------------------------------------------------------------------* TYPE-POOLS slis. " Global ALV types TYPES : BEGIN OF ty_s_cdhdr. INCLUDE TYPE cdhdr. TYPES : checkbox TYPE xfeld, END OF ty_s_cdhdr, BEGIN OF ty_s_cdpos. INCLUDE TYPE cdpos. TYPES : checkbox TYPE xfeld, END OF ty_s_cdpos. *---------------------------------------------------------------------* DATA : gs_cdhdr TYPE cdhdr, " Change document header * Layout for ALV gs_layout TYPE slis_layout_alv, * Change document header t_cdhdr TYPE TABLE OF ty_s_cdhdr. *---------------------------------------------------------------------* SELECT-OPTIONS : s_objcls FOR gs_cdhdr-objectclas OBLIGATORY, s_objtid FOR gs_cdhdr-objectid, s_chngnr FOR gs_cdhdr-changenr, s_usrnam FOR gs_cdhdr-username DEFAULT sy-uname, s_udate FOR gs_cdhdr-udate DEFAULT sy-datum, s_time FOR gs_cdhdr-utime, s_tcode FOR gs_cdhdr-tcode, s_plncnr FOR gs_cdhdr-planchngnr, s_chngno FOR gs_cdhdr-act_chngno, s_wsplnd FOR gs_cdhdr-was_plannd, s_chngid FOR gs_cdhdr-change_ind. SELECTION-SCREEN SKIP. PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'. *---------------------------------------------------------------------* START-OF-SELECTION. PERFORM f_read_data. *---------------------------------------------------------------------* END-OF-SELECTION. PERFORM f_display_cdhdr. *---------------------------------------------------------------------* * Form f_read_data *---------------------------------------------------------------------* FORM f_read_data. * Read Change document header SELECT * INTO TABLE t_cdhdr UP TO p_max ROWS FROM cdhdr WHERE objectclas IN s_objcls AND objectid IN s_objtid AND changenr IN s_chngnr AND username IN s_usrnam AND udate IN s_udate AND utime IN s_time AND tcode IN s_tcode AND planchngnr IN s_plncnr AND act_chngno IN s_chngno AND was_plannd IN s_wsplnd AND change_ind IN s_chngid. ENDFORM. " F_READ_DATA *---------------------------------------------------------------------* * Form f_display_cdhdr *---------------------------------------------------------------------* FORM f_display_cdhdr. DATA : ls_event_exit TYPE slis_event_exit, lt_event_exit TYPE slis_t_event_exit. gs_layout-zebra = c_x. gs_layout-colwidth_optimize = c_x. gs_layout-group_change_edit = c_x. gs_layout-allow_switch_to_list = c_x. gs_layout-box_fieldname = 'CHECKBOX'. * Activate 'More' button CLEAR ls_event_exit. ls_event_exit-after = c_x. ls_event_exit-ucomm = c_eb9. " More APPEND ls_event_exit TO lt_event_exit. * Activate refresh button CLEAR ls_event_exit. ls_event_exit-after = c_x. ls_event_exit-ucomm = c_refresh. " Refresh APPEND ls_event_exit TO lt_event_exit. * Display ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_callback_user_command = 'USER_COMMAND' i_callback_pf_status_set = 'PF_STATUS_SET' i_structure_name = 'CDHDR' is_layout = gs_layout it_event_exit = lt_event_exit i_save = 'A' TABLES t_outtab = t_cdhdr. ENDFORM. " F_DISPLAY_CDHDR *---------------------------------------------------------------------* * FORM USER_COMMAND * *---------------------------------------------------------------------* FORM user_command USING u_ucomm TYPE syucomm us_selfield TYPE slis_selfield. "#EC CALLED * Macro definition DEFINE m_sort. add 1 to ls_sort-spos. ls_sort-fieldname = &1. ls_sort-up = c_x. append ls_sort to lt_sort. END-OF-DEFINITION. DATA : ls_cdhdr TYPE ty_s_cdhdr, ls_sort TYPE slis_sortinfo_alv, lt_sort TYPE slis_t_sortinfo_alv, * Change document items lt_cdpos TYPE TABLE OF ty_s_cdpos. CASE u_ucomm. WHEN '&IC1' OR c_eb9. PERFORM check_marked USING us_selfield. * Read Change document items LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = c_x. SELECT * APPENDING TABLE lt_cdpos FROM cdpos WHERE objectclas = ls_cdhdr-objectclas AND objectid = ls_cdhdr-objectid AND changenr = ls_cdhdr-changenr. ENDLOOP. m_sort 'CHANGENR'. * Display ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_structure_name = 'CDPOS' is_layout = gs_layout it_sort = lt_sort i_save = 'A' TABLES t_outtab = lt_cdpos. WHEN c_refresh. PERFORM f_read_data. us_selfield-refresh = c_x. ENDCASE. ENDFORM. " USER_COMMAND *---------------------------------------------------------------------* * Form CHECK_MARKED *---------------------------------------------------------------------* * What has been marked in t_cdhdr *---------------------------------------------------------------------* FORM check_marked USING us_selfield TYPE slis_selfield. FIELD-SYMBOLS : <cdhdr> TYPE ty_s_cdhdr. READ TABLE t_cdhdr TRANSPORTING NO FIELDS WITH KEY checkbox = c_x. IF NOT sy-subrc IS INITIAL AND NOT us_selfield-tabindex IS INITIAL. READ TABLE t_cdhdr INDEX us_selfield-tabindex ASSIGNING <cdhdr>. <cdhdr>-checkbox = c_x. ENDIF. ENDFORM. " CHECK_MARKED *---------------------------------------------------------------------* * FORM PF_STATUS_SET * *---------------------------------------------------------------------* FORM pf_status_set USING ut_extab TYPE slis_t_extab. "#EC CALLED * Display 'Refresh' button and 'More' button DELETE ut_extab WHERE fcode = c_refresh OR fcode = c_eb9. SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL' EXCLUDING ut_extab. ENDFORM. " PF_STATUS_SET ***************** END OF PROGRAM Z_ALV_CDHDR_CDPOS ********************