*---------------------------------------------------------------------* * This ALV report displays change document tables CDHDR and CDPOS * *---------------------------------------------------------------------* * Author : Michel PIOUD * * Email : mpioud@yahoo.fr HomePage : http://www.geocities.com/mpioud * *---------------------------------------------------------------------*
** OBJECT OBTEXT **--------------- ---------------------------------------------- ** MATERIAL Material ** KRED Vendor ** QUOTEN Change Documents for Quota Arrangements ** ORDERBUCH Change Documents for Source List Entries ** INFOSATZ Change Documents for Info Records ** BANF Change Documents for Purchase Requisitions ** EINKBELEG Purchasing Document ** LIEFERUNG Delivery ** INCOMINGINVOICE Change Documents for Incoming Invoices ** INV_BELEG Change phys. inv. document
TYPE-POOLS slis. " Global ALV types DATA : cdhdr TYPE cdhdr. " Change document header SELECT-OPTIONS : s_objcls FOR cdhdr-objectclas OBLIGATORY, s_objtid FOR cdhdr-objectid, s_chngnr FOR cdhdr-changenr, s_usrnam FOR cdhdr-username DEFAULT sy-uname, s_udate FOR cdhdr-udate DEFAULT sy-datum, s_time FOR cdhdr-utime, s_tcode FOR cdhdr-tcode, s_plncnr FOR cdhdr-planchngnr, s_chngno FOR cdhdr-act_chngno, s_wsplnd FOR cdhdr-was_plannd, s_chngid FOR cdhdr-change_ind.
SELECTION-SCREEN SKIP. PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.
*---------------------------------------------------------------------* TYPES : BEGIN OF ty_s_cdhdr. INCLUDE STRUCTURE cdhdr. TYPES : checkbox, END OF ty_s_cdhdr,
BEGIN OF ty_s_cdpos. INCLUDE STRUCTURE cdpos. TYPES : checkbox, END OF ty_s_cdpos.
*---------------------------------------------------------------------* DATA : * Layout for ALV gs_layout TYPE slis_layout_alv, * Change document header t_cdhdr TYPE TABLE OF ty_s_cdhdr.
* 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.
*---------------------------------------------------------------------* * 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 = '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'. PERFORM check_marked USING us_selfield.
* Read Change document items LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = 'X'. SELECT * APPENDING TABLE lt_cdpos FROM cdpos WHERE objectclas = ls_cdhdr-objectclas AND objectid = ls_cdhdr-objectid AND changenr = ls_cdhdr-changenr. ENDLOOP.
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 = '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 = 'X'. ENDIF.
ENDFORM. " CHECK_MARKED ***************** END OF PROGRAM Z_ALV_CDHDR_CDPOS ********************
* 아래소스를 그대로 실행하시면 됩니다.
* object 는 KRED 로 입력하세요.
REPORT y_alv_cdhdr_cdpos.
*---------------------------------------------------------------------*
* This ALV report displays change document tables CDHDR and CDPOS *
*---------------------------------------------------------------------*
* Author : Michel PIOUD *
* Email : mpioud@yahoo.fr HomePage : http://www.geocities.com/mpioud *
*---------------------------------------------------------------------*
** OBJECT OBTEXT
**--------------- ----------------------------------------------
** MATERIAL Material
** KRED Vendor
** QUOTEN Change Documents for Quota Arrangements
** ORDERBUCH Change Documents for Source List Entries
** INFOSATZ Change Documents for Info Records
** BANF Change Documents for Purchase Requisitions
** EINKBELEG Purchasing Document
** LIEFERUNG Delivery
** INCOMINGINVOICE Change Documents for Incoming Invoices
** INV_BELEG Change phys. inv. document
TYPE-POOLS slis. " Global ALV types
DATA : cdhdr TYPE cdhdr. " Change document header
SELECT-OPTIONS :
s_objcls FOR cdhdr-objectclas OBLIGATORY,
s_objtid FOR cdhdr-objectid,
s_chngnr FOR cdhdr-changenr,
s_usrnam FOR cdhdr-username DEFAULT sy-uname,
s_udate FOR cdhdr-udate DEFAULT sy-datum,
s_time FOR cdhdr-utime,
s_tcode FOR cdhdr-tcode,
s_plncnr FOR cdhdr-planchngnr,
s_chngno FOR cdhdr-act_chngno,
s_wsplnd FOR cdhdr-was_plannd,
s_chngid FOR cdhdr-change_ind.
SELECTION-SCREEN SKIP.
PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.
*---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_s_cdhdr.
INCLUDE STRUCTURE cdhdr.
TYPES : checkbox,
END OF ty_s_cdhdr,
BEGIN OF ty_s_cdpos.
INCLUDE STRUCTURE cdpos.
TYPES : checkbox,
END OF ty_s_cdpos.
*---------------------------------------------------------------------*
DATA :
* Layout for ALV
gs_layout TYPE slis_layout_alv,
* Change document header
t_cdhdr TYPE TABLE OF ty_s_cdhdr.
*---------------------------------------------------------------------*
START-OF-SELECTION.
* 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.
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-box_fieldname = 'CHECKBOX'.
* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'CDHDR'
is_layout = gs_layout
TABLES
t_outtab = t_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 = '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'.
PERFORM check_marked USING us_selfield.
* Read Change document items
LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = '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_structure_name = 'CDPOS'
is_layout = gs_layout
it_sort = lt_sort
TABLES
t_outtab = lt_cdpos.
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 = '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 = 'X'.
ENDIF.
ENDFORM. " CHECK_MARKED
***************** END OF PROGRAM Z_ALV_CDHDR_CDPOS ********************