Wednesday, October 21, 2009

ALV REPORTING

REPORT ZREPORT .

TYPE-POOLS : slis.

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.

DATA: WA_fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
WA_gd_tab_group TYPE slis_t_sp_group_alv,
WA_gd_layout TYPE slis_layout_alv,
WA_gd_repid LIKE sy-repid,
WA_gt_events TYPE slis_t_event,
WA_gd_prntparams TYPE slis_print_alv.

TABLES:vbak,vbap,vbpa.

DATA:
BEGIN OF itab OCCURS 0,

vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
erzet LIKE vbak-erzet,
ernam LIKE vbak-ernam ,




posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr ,
ps_psp_pnr LIKE vbap-ps_psp_pnr,


kunnr LIKE vbpa-kunnr ,
pernr LIKE vbpa-pernr ,
parvw LIKE vbpa-parvw,
land1 LIKE vbpa-land1,


END OF itab.

DATA:
BEGIN OF A_itab OCCURS 0,

vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
erzet LIKE vbak-erzet,
ernam LIKE vbak-ernam ,

END OF A_ITAB,

BEGIN OF B_ITAB OCCURS 0,

vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr ,
ps_psp_pnr LIKE vbap-ps_psp_pnr,

END OF B_ITAB,

BEGIN OF C_ITAB OCCURS 0,
vbeln LIKE vbpa-vbeln,

kunnr LIKE vbpa-kunnr ,
pernr LIKE vbpa-pernr ,
parvw LIKE vbpa-parvw,
land1 LIKE vbpa-land1,


END OF C_itab.

DATA:WA_A_ITAB LIKE A_ITAB,
WA_B_ITAB LIKE B_ITAB,
WA_C_ITAB LIKE C_ITAB.



select-options: p_vbeln for vbak-vbeln OBLIGATORY.

*
START-OF-SELECTION.


*CODE 1---------
* SELECT A~VBELN
* A~ERDAT
* A~ERZET
* A~ERNAM
* B~POSNR
* B~MATNR
* B~PS_PSP_PNR
* C~KUNNR
* C~PERNR
* C~PARVW
* C~LAND1
* FROM VBAK as A
* JOIN VBAP AS B ON
* B~VBELN EQ A~VBELN
* JOIN VBPA AS C ON
* A~vbeln EQ c~vbeln
* into corresponding fields of table ITAB
* where A~vbeln IN p_vbeln.
*
*
***********CODE1*****************************


******************CODE2
SELECT A~VBELN
A~ERDAT
A~ERZET
A~ERNAM
FROM VBAK AS A
INTO CORRESPONDING FIELDS OF TABLE ITAB
where a~VBELN IN P_vbeln .

IF NOT ITAB[] IS INITIAL.


SELECT B~VBELN
B~POSNR
B~MATNR
B~PS_PSP_PNR
FROM VBAP AS B
INTO CORRESPONDING FIELDS OF TABLE B_ITAB
FOR ALL ENTRIES IN ITAB
where VBELN = ITAB-VBELN.


LOOP AT ITAB.

READ TABLE B_ITAB WITH KEY VBELN = ITAB-VBELN.

IF SY-SUBRC = 0.

ITAB-POSNR = B_ITAB-POSNR .
ITAB-MATNR = B_ITAB-MATNR .
ITAB-PS_PSP_PNR = B_ITAB-PS_PSP_PNR.
modify itab.

ENDIF.

ENDLOOP.

ENDIF .


IF NOT B_ITAB[] IS INITIAL.

SELECT C~VBELN
C~KUNNR
C~PERNR
C~PARVW
C~LAND1
FROM VBPA AS C
into corresponding fields of table C_ITAB
FOR ALL ENTRIES IN B_ITAB
where vbeln = B_ITAB-vbeln.

LOOP AT ITAB.

READ TABLE C_ITAB WITH KEY VBELN = B_ITAB-VBELN.

IF SY-SUBRC = 0.

ITAB-KUNNR = C_ITAB-KUNNR.
* ITAB-PERNR = C_ITAB-MATNR .
* ITAB-PS_PSP_PNR = B_ITAB-PS_PSP_PNR.
modify itab.

ENDIF.

ENDLOOP.

ENDIF .
************CODE2***************************************











PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_events.

*ENDLOOP.


CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_interface_check = 'X '
* I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
i_buffer_active = ' '
i_callback_program = sy-repid
i_callback_pf_status_set = ' '
* I_CALLBACK_USER_COMMAND = 'EXECUTE-COMMAND'
* I_STRUCTURE_NAME = I_STRUCTURE_NAME
is_layout = WA_gd_layout
it_fieldcat = fieldcatalog[]
* IT_EXCLUDING = IT_EXCLUDING
* IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
* IT_SORT = IT_SORT
* IT_FILTER = IT_FILTER
* IS_SEL_HIDE = IS_SEL_HIDE
i_default = 'X'
i_save = 'A '
* IS_VARIANT = IS_VARIANT
* IT_EVENTS = IT_EVENTS
* IT_EVENT_EXIT = IT_EVENT_EXIT
* IS_PRINT = IS_PRINT
* IS_REPREP_ID = IS_REPREP_ID
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
* IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
* I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
* ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
t_outtab = itab
* EXCEPTIONS
* PROGRAM_ERROR = 1
.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text *----------------------------------------------------------------------* FORM build_fieldcatalog . WA_fieldcatalog-fieldname = 'VBELN'. WA_fieldcatalog-seltext_l = 'SALESDOC'. WA_fieldcatalog-col_pos = 0. * fieldcatalog-outputlen = 20. WA_fieldcatalog-emphasize = 'X'. * fieldcatalog-key = 'X'. * fieldcatalog-do_sum = 'X'. * fieldcatalog-no_zero = 'X'. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'ERDAT'. WA_fieldcatalog-seltext_l = 'DATE'. WA_fieldcatalog-col_pos = 1. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'ERZET'. WA_fieldcatalog-seltext_l = 'ERZET'. WA_fieldcatalog-col_pos = 2. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'ERNAM'. WA_fieldcatalog-seltext_l = 'CREATED BY'. WA_fieldcatalog-col_pos = 3. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'POSNR'. WA_fieldcatalog-seltext_l = 'POSITION'. WA_fieldcatalog-col_pos = 4. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'MATNR'. WA_fieldcatalog-seltext_l = 'MAT NUMBER'. WA_fieldcatalog-col_pos = 5. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'PS_PSP_PNR'. WA_fieldcatalog-seltext_l = 'PS_PSP_PNR'. WA_fieldcatalog-col_pos = 6. * fieldcatalog-outputlen = 20. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. * FIELDCATALOG-FIELDNAME = 'PROJ_PTNR'. * FIELDCATALOG-SELTEXT_L = 'Project Partner'. * FIELDCATALOG-COL_POS = 7. * APPEND FIELDCATALOG TO FIELDCATALOG. * CLEAR FIELDCATALOG. * WA_fieldcatalog-fieldname = 'KUNNR'. WA_fieldcatalog-seltext_l = 'CUSTOMER'. WA_fieldcatalog-col_pos = 8. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'PERNR'. WA_fieldcatalog-seltext_l = 'EMPLYEE NO '. WA_fieldcatalog-col_pos = 9. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'PARVW'. WA_fieldcatalog-seltext_l = 'PARTNER NUMBER'. WA_fieldcatalog-col_pos = 10. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. WA_fieldcatalog-fieldname = 'LAND1'. WA_fieldcatalog-seltext_l = 'LAND1 '. WA_fieldcatalog-col_pos = 11. APPEND WA_fieldcatalog TO fieldcatalog. CLEAR WA_fieldcatalog. ENDFORM. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form BUILD_LAYOUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text
* <-- p2 text *----------------------------------------------------------------------* FORM build_layout . gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. gd_layout-totals_text = 'Totals'. gd_layout-totals_only = 'X'. * gd_layout-f2code = 'DISP'. "Sets fcode for when double * "click(press f2) gd_layout-zebra = 'X'. * gd_layout-group_change_edit = 'X'. gd_layout-header_text = 'REPORT ON ALV GRID TO DISPLAY SALES DETAILS HEADER AND ITEM DETAILS WITH BREAK DOWN STRUCTURES'. ENDFORM. " BUILD_LAYOUT *&---------------------------------------------------------------------* *& Form BUILD_EVENTS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text
* <-- p2 text *----------------------------------------------------------------------* FORM build_events . DATA: ls_event TYPE slis_alv_event. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = gt_events[]. READ TABLE gt_events WITH KEY name = slis_ev_end_of_page INTO ls_event. IF sy-subrc = 0. MOVE 'END_OF_PAGE' TO ls_event-form. APPEND ls_event TO gt_events. ENDIF. READ TABLE gt_events WITH KEY name = slis_ev_end_of_list INTO ls_event. IF sy-subrc = 0. MOVE 'END_OF_LIST' TO ls_event-form. APPEND ls_event TO gt_events. ENDIF. -------------------------------------------------- "Another way of writing the code " report ztest1a. type-pools : slis. data: fieldcatalog type slis_t_fieldcat_alv with header line, gd_tab_group type slis_t_sp_group_alv, gd_layout type slis_layout_alv, gd_repid like sy-repid, gt_events type slis_t_event, gd_prntparams type slis_print_alv. data: wa_fieldcatalog type slis_t_fieldcat_alv with header line, wa_gd_tab_group type slis_t_sp_group_alv, wa_gd_layout type slis_layout_alv, wa_gd_repid like sy-repid, wa_gt_events type slis_t_event, wa_gd_prntparams type slis_print_alv. tables:vbak,vbap,vbpa. types : begin of ty_itab, vbeln like vbak-vbeln, * erdat like vbak-erdat, * erzet like vbak-erzet, * ernam like vbak-ernam , posnr like vbap-posnr, matnr like vbap-matnr , ps_psp_pnr like vbap-ps_psp_pnr, kunnr like vbpa-kunnr , pernr like vbpa-pernr , parvw like vbpa-parvw, land1 like vbpa-land1, end of ty_itab. data : itab type table of ty_itab with header line, itab2 type table of ty_itab with header line. *********************88888 select-options: p_vbeln for vbak-vbeln obligatory. *************************************** start-of-selection. * * * select vbeln from vbak into table itab where vbeln in p_vbeln. if not itab[] is initial. select vbeln posnr matnr ps_psp_pnr from vbap into corresponding fields of table itab2 for all entries in itab where vbeln eq itab-vbeln. endif. refresh itab. if not itab2[] is initial. ***************** select vbeln kunnr pernr parvw land1 from vbpa into corresponding fields of table itab for all entries in itab2 where vbeln eq itab2-vbeln. endif. loop at itab. read table itab2 with key vbeln = itab-vbeln. if sy-subrc eq 0. move itab2-posnr to itab-posnr. move itab2-matnr to itab-matnr. move itab2-ps_psp_pnr to itab-ps_psp_pnr. modify itab. endif. endloop. * VBAP~POSNR * VBAP~MATNR * VBAP~PS_PSP_PNR * VBPA~KUNNR VBPA~PERNR * VBPA~PARVW VBPA~LAND1 * * INTO TABLE ITAB * FROM VBAK * INNER JOIN VBAP * ON VBAK~VBELN = VBAP~VBELN * * INNER JOIN VBPA * * ON VBAK~VBELN = VBPA~VBELN * * WHERE VBAK~VBELN = P_VBELN. perform build_fieldcatalog. perform build_layout. perform build_events. *ENDLOOP. call function 'REUSE_ALV_LIST_DISPLAY' exporting i_interface_check = 'X ' * I_BYPASSING_BUFFER = I_BYPASSING_BUFFER i_buffer_active = ' ' i_callback_program = sy-repid i_callback_pf_status_set = ' ' * I_CALLBACK_USER_COMMAND = 'EXECUTE-COMMAND' * I_STRUCTURE_NAME = I_STRUCTURE_NAME is_layout = wa_gd_layout it_fieldcat = fieldcatalog[] * IT_EXCLUDING = IT_EXCLUDING * IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS * IT_SORT = IT_SORT * IT_FILTER = IT_FILTER * IS_SEL_HIDE = IS_SEL_HIDE i_default = 'X' i_save = 'A ' * IS_VARIANT = IS_VARIANT * IT_EVENTS = IT_EVENTS * IT_EVENT_EXIT = IT_EVENT_EXIT * IS_PRINT = IS_PRINT * IS_REPREP_ID = IS_REPREP_ID * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER * IT_EXCEPT_QINFO = IT_EXCEPT_QINFO * I_SUPPRESS_EMPTY_DATA = ABAP_FALSE * IMPORTING * E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER * ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER tables t_outtab = itab * EXCEPTIONS * PROGRAM_ERROR = 1 . *&---------------------------------------------------------------------* *& Form BUILD_FIELDCATALOG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text
* <-- p2 text *----------------------------------------------------------------------* form build_fieldcatalog . wa_fieldcatalog-fieldname = 'VBELN'. wa_fieldcatalog-seltext_l = 'SALESDOC'. wa_fieldcatalog-col_pos = 0. * fieldcatalog-outputlen = 20. wa_fieldcatalog-emphasize = 'X'. * fieldcatalog-key = 'X'. * fieldcatalog-do_sum = 'X'. * fieldcatalog-no_zero = 'X'. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. * wa_fieldcatalog-fieldname = 'ERDAT'. * wa_fieldcatalog-seltext_l = 'DATE'. * wa_fieldcatalog-col_pos = 1. ** fieldcatalog-outputlen = 20. * append wa_fieldcatalog to fieldcatalog. * clear wa_fieldcatalog. * * wa_fieldcatalog-fieldname = 'ERZET'. * wa_fieldcatalog-seltext_l = 'ERZET'. * wa_fieldcatalog-col_pos = 2. ** fieldcatalog-outputlen = 20. * append wa_fieldcatalog to fieldcatalog. * clear wa_fieldcatalog. * * wa_fieldcatalog-fieldname = 'ERNAM'. * wa_fieldcatalog-seltext_l = 'CREATED BY'. * wa_fieldcatalog-col_pos = 3. ** fieldcatalog-outputlen = 20. * append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'POSNR'. wa_fieldcatalog-seltext_l = 'POSITION'. wa_fieldcatalog-col_pos = 2. * fieldcatalog-outputlen = 20. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'MATNR'. wa_fieldcatalog-seltext_l = 'MAT NUMBER'. wa_fieldcatalog-col_pos = 3. * fieldcatalog-outputlen = 20. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'PS_PSP_PNR'. wa_fieldcatalog-seltext_l = 'PS_PSP_PNR'. wa_fieldcatalog-col_pos = 4. * fieldcatalog-outputlen = 20. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. * FIELDCATALOG-FIELDNAME = 'PROJ_PTNR'. * FIELDCATALOG-SELTEXT_L = 'Project Partner'. * FIELDCATALOG-COL_POS = 7. * APPEND FIELDCATALOG TO FIELDCATALOG. * CLEAR FIELDCATALOG. * wa_fieldcatalog-fieldname = 'KUNNR'. wa_fieldcatalog-seltext_l = 'CUSTOMER'. wa_fieldcatalog-col_pos = 5. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'PERNR'. wa_fieldcatalog-seltext_l = 'EMPLYEE NO '. wa_fieldcatalog-col_pos = 6. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'PARVW'. wa_fieldcatalog-seltext_l = 'PARTNER NUMBER'. wa_fieldcatalog-col_pos = 7. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. wa_fieldcatalog-fieldname = 'LAND1'. wa_fieldcatalog-seltext_l = 'LAND1 '. wa_fieldcatalog-col_pos = 8. append wa_fieldcatalog to fieldcatalog. clear wa_fieldcatalog. endform. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form BUILD_LAYOUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text
* <-- p2 text *----------------------------------------------------------------------* form build_layout . gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. gd_layout-totals_text = 'Totals'. gd_layout-totals_only = 'X'. * gd_layout-f2code = 'DISP'. "Sets fcode for when double * "click(press f2) gd_layout-zebra = 'X'. * gd_layout-group_change_edit = 'X'. gd_layout-header_text = 'REPORT ON ALV GRID TO DISPLAY SALES DETAILS HEADER AND ITEM DETAILS WITH BREAK DOWN STRUCTURES'. endform. " BUILD_LAYOUT *&---------------------------------------------------------------------* *& Form BUILD_EVENTS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form build_events .



data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.

read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.

endform. " BUILD_EVENTS

No comments:

Post a Comment