80
630PMALV PROGRAM1 REPORT Z630PMALV1. data lv_vbeln type vbeln. data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid. select-options so_vbeln for lv_vbeln. types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak. data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak. initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln. start-of-selection. call screen 100. MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'. if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'. CREATE OBJECT VBAK_GRID

630PMALV

Embed Size (px)

Citation preview

Page 1: 630PMALV

630PMALV

PROGRAM1

REPORT Z630PMALV1.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform display.endif.

Page 2: 630PMALV

ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY CHANGING IT_OUTTAB = lt_vbak[].ENDFORM. " displayPROGRAM2

REPORT Z630PMALV2.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

initialization.

Page 3: 630PMALV

so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'VBAK' CHANGING IT_OUTTAB = lt_vbak[]. "" HERE OUTPUT WILL NOT COME DUE TO

Page 4: 630PMALV

"" INCORREACT SEQUENCE OF VBAK & INTERNAL TABLE FIELDSENDFORM. " displayPROGRAM3

REPORT Z630PMALV3.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform display.

Page 5: 630PMALV

endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'ZMYVBAK'(001) CHANGING IT_OUTTAB = lt_vbak[].ENDFORM. " displayPROGRAM4

REPORT Z630PMALV4.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

Page 6: 630PMALV

data : lt_fcat type lvc_t_fcat.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY

Page 7: 630PMALV

CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM fldcat . CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING I_STRUCTURE_NAME = 'ZMYVBAK' CHANGING CT_FIELDCAT = lt_fcat[].ENDFORM. " fldcatPROGRAM5

REPORT Z630PMALV5.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,* ls_fcat type lvc_s_fcat. ls_fcat like line of lt_fcat.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT.

Page 8: 630PMALV

SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM fldcat . CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING I_STRUCTURE_NAME = 'ZMYVBAK' CHANGING CT_FIELDCAT = lt_fcat[].

Page 9: 630PMALV

if lt_fcat[] is not initial. loop at lt_fcat into ls_fcat. if ls_fcat-fieldname = 'VBELN'. ls_fcat-coltext = 'Sales Doc'. modify lt_fcat from ls_fcat transporting coltext. elseif ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 3. modify lt_fcat from ls_fcat transporting col_pos. elseif ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 2. modify lt_fcat from ls_fcat transporting col_pos. endif. endloop. endif.ENDFORM. " fldcatPROGRAM6

REPORT Z630PMALV6.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat, ls_fcat type lvc_s_fcat.* ls_fcat like line of lt_fcat.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection.

Page 10: 630PMALV

call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'vbeln'. " HERE WE USE LOWER CASE LETTERS THAT'S WHY IT IS TERMINATED

Page 11: 630PMALV

ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Creation Date'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Creation Time'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-col_pos = 4. ls_fcat-coltext = 'Created by'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.endform.PROGRAM7

REPORT Z630PMALV7.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,

vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,

Page 12: 630PMALV

ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,* ls_fcat type lvc_s_fcat. ls_fcat like line of lt_fcat, ls_layo type lvc_s_layo.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform layout. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.

Page 13: 630PMALV

ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Creation Date'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Creation Time'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-col_pos = 4. ls_fcat-coltext = 'Created by'. ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'. append ls_fcat to lt_fcat.endform.

FORM layout .

Page 14: 630PMALV

clear ls_layo. ls_layo-zebra = 'X'. ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.ENDFORM. " layoutPROGRAM8

REPORT Z630PMALV8.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

data lv_matnr type matnr.

data : vbak_cont type ref to cl_gui_custom_container, vbak_grid type ref to cl_gui_alv_grid.

data : vbap_cont type ref to cl_gui_custom_container, vbap_grid type ref to cl_gui_alv_grid.

data : mara_cont type ref to cl_gui_custom_container, mara_grid type ref to cl_gui_alv_grid.

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

types : begin of ty_vbap, vbeln type vbap-vbeln, posnr type vbap-posnr, matnr type vbap-matnr, end of ty_vbap.

data : lt_vbap type standard table of ty_vbap, ls_vbap type ty_vbap.

types : begin of ty_mara, matnr type mara-matnr, matkl type mara-matkl,

Page 15: 630PMALV

mtart type mara-mtart, end of ty_mara.

data : lt_mara type standard table of ty_mara, ls_mara type ty_mara.

data : lt_fcat type lvc_t_fcat,* ls_fcat type lvc_s_fcat. ls_fcat like line of lt_fcat, ls_layo type lvc_s_layo.

class lcl_eventreceiver definition. public section. methods handle_hotspot_click for event hotspot_click of cl_gui_alv_grid importing e_row_id. methods handle_button_click for event button_click of cl_gui_alv_grid importing ES_ROW_NO.endclass.

class lcl_eventreceiver implementation. method handle_hotspot_click. clear ls_vbak. read table lt_vbak into ls_vbak index e_row_id-index. if sy-subrc eq 0. lv_vbeln = ls_vbak-vbeln. if lv_vbeln is not initial. perform getvbap. if lt_vbap[] is not initial. perform fldcatvbap. perform layoutvbap. call screen 200. else. message 'No item data' type 'I'. endif. endif. endif. endmethod.

method handle_button_click. read table lt_vbap into ls_vbap index es_row_no-row_id. if sy-subrc eq 0. clear lv_matnr. lv_matnr = ls_vbap-matnr. if lv_matnr is not initial. perform getmara.

Page 16: 630PMALV

if lt_mara[] is not initial. perform fldcatmara. perform layoutmara. call screen 300. else. message 'No material' type 'I'. endif. endif. endif. endmethod.endclass.

data ob type ref to lcl_eventreceiver.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform layout. perform registerhandlers. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'.

Page 17: 630PMALV

leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. ls_fcat-outputlen = 12. ls_fcat-hotspot = 'X'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Creation Date'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Creation Time'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERNAM'.

Page 18: 630PMALV

ls_fcat-col_pos = 4. ls_fcat-coltext = 'Created by'. ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'. append ls_fcat to lt_fcat.endform.

FORM layout . clear ls_layo. ls_layo-zebra = 'X'. ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.ENDFORM. " layout

FORM registerhandlers . create object ob. set handler ob->handle_hotspot_click for vbak_grid.ENDFORM. " registerhandlers

FORM getvbap . select vbeln posnr matnr from vbap into table lt_vbap where vbeln = lv_vbeln.ENDFORM. " getvbap

FORM fldcatvbap . refresh lt_fcat. clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'POSNR'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Item no'. ls_fcat-outputlen = 5. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'MATNR'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Material'.

Page 19: 630PMALV

ls_fcat-outputlen = 10. ls_fcat-style = cl_gui_alv_grid=>MC_STYLE_BUTTON. append ls_fcat to lt_fcat.

ENDFORM. " fldcatvbap

FORM layoutvbap . clear ls_layo. ls_layo-grid_title = 'SALES DOCUMENT ITEM DATA'. ls_layo-zebra = 'X'.ENDFORM. " layoutvbap

MODULE STATUS_0200 OUTPUT. SET PF-STATUS 'ABC1'.if vbap_cont is initial. CREATE OBJECT VBAP_CONT EXPORTING CONTAINER_NAME = 'CUST2'.

CREATE OBJECT VBAP_GRID EXPORTING I_PARENT = vbap_cont.

perform register. perform displayvbap.else. CALL METHOD VBAP_GRID->REFRESH_TABLE_DISPLAY.endif.

ENDMODULE. " STATUS_0200 OUTPUT

FORM displayvbap . CALL METHOD VBAP_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_vbap[] IT_FIELDCATALOG = lt_fcat[].

ENDFORM. " displayvbap

Page 20: 630PMALV

MODULE USER_COMMAND_0200 INPUT. case sy-ucomm. when 'BACK'. leave to screen 100. endcase.ENDMODULE. " USER_COMMAND_0200 INPUT

FORM register . create object ob. set handler ob->handle_button_click for vbap_grid.ENDFORM. " register

FORM getmara . select single matnr matkl mtart from mara into ls_mara where matnr = lv_matnr. if sy-subrc eq 0. refresh lt_mara. append ls_mara to lt_mara. endif.ENDFORM. " getmara

FORM fldcatmara . refresh lt_fcat. clear ls_fcat. ls_fcat-fieldname = 'MATNR'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Material'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'MATKL'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Material Group'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'MTART'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Material Type'. append ls_fcat to lt_fcat.

ENDFORM. " fldcatmara

Page 21: 630PMALV

FORM layoutmara . clear ls_layo. ls_layo-grid_title = 'MATERIAL DATA'.ENDFORM. " layoutmara

MODULE STATUS_0300 OUTPUT. SET PF-STATUS 'ABC2'.if mara_cont is initial. CREATE OBJECT MARA_CONT EXPORTING CONTAINER_NAME = 'CUST3'.

CREATE OBJECT MARA_GRID EXPORTING I_PARENT = mara_cont.

perform displaymara.else. CALL METHOD MARA_GRID->REFRESH_TABLE_DISPLAY.endif.ENDMODULE. " STATUS_0300 OUTPUT

FORM displaymara . CALL METHOD MARA_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_mara[] IT_FIELDCATALOG = lt_fcat[].

ENDFORM. " displaymara

MODULE USER_COMMAND_0300 INPUT. case sy-ucomm. when 'BACK'. leave to screen 200. endcase.ENDMODULE. " USER_COMMAND_0300 INPUTPROGRAM9

REPORT Z630PMALV9.

Page 22: 630PMALV

type-pools cntl.data : cust_cont type ref to cl_gui_custom_container, o_split1 type ref to cl_gui_splitter_container, o_cont1 type ref to cl_gui_container, o_cont2 type ref to cl_gui_container, o_split2 type ref to cl_gui_splitter_container, o_cont3 type ref to cl_gui_container, o_cont4 type ref to cl_gui_container, o_cont5 type ref to cl_gui_container, o_tree type ref to cl_gui_simple_tree, vbak_grid type ref to cl_gui_alv_grid.

data : lt_fcat type lvc_t_fcat, ls_fcat type lvc_s_fcat.

data : ls_layo type lvc_s_layo.

types : begin of ty_vbak, cellstyles type lvc_t_styl, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

data : ls_styl type lvc_s_styl.

types : begin of ty_nodes. include structure abdemonode.types : end of ty_nodes.

data : lt_nodes type standard table of ty_nodes, ls_nodes type ty_nodes.

types : begin of ty_events. include type cntl_simple_event.types end of ty_events.

data : lt_events type table of ty_events, ls_events type ty_events.

class lcl_eventreceiver definition. public section. methods handle_node_double_click

Page 23: 630PMALV

for event node_double_click of cl_gui_simple_tree importing node_key.endclass.

class lcl_eventreceiver implementation. method handle_node_double_click. case node_key. when 'CSO'. call transaction 'VA01'. when 'CHSO'. call transaction 'VA02'. when 'DSO'. perform vbakgrid. when 'CPO'. call transaction 'ME21'. when 'CHPO'. call transaction 'ME22'. endcase. endmethod.endclass.

data ob type ref to lcl_eventreceiver.start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if cust_cont is initial. CREATE OBJECT CUST_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT O_SPLIT1 EXPORTING PARENT = cust_cont ROWS = 1 COLUMNS = 2.

CALL METHOD O_SPLIT1->SET_COLUMN_WIDTH EXPORTING ID = 1 WIDTH = 6.

CALL METHOD O_SPLIT1->SET_COLUMN_WIDTH

Page 24: 630PMALV

EXPORTING ID = 2 WIDTH = 10.

CALL METHOD O_SPLIT1->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = o_cont1.

CALL METHOD O_SPLIT1->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 2 RECEIVING CONTAINER = o_cont2.

CREATE OBJECT O_SPLIT2 EXPORTING PARENT = o_cont2 ROWS = 3 COLUMNS = 1.

CALL METHOD O_SPLIT2->SET_ROW_HEIGHT EXPORTING ID = 1 HEIGHT = 1.

CALL METHOD O_SPLIT2->SET_ROW_HEIGHT EXPORTING ID = 2 HEIGHT = 7.

CALL METHOD O_SPLIT2->SET_ROW_HEIGHT EXPORTING ID = 3 HEIGHT = 1.

CALL METHOD O_SPLIT2->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = o_cont3.

Page 25: 630PMALV

CALL METHOD O_SPLIT2->GET_CONTAINER EXPORTING ROW = 2 COLUMN = 1 RECEIVING CONTAINER = o_cont4.

CALL METHOD O_SPLIT2->GET_CONTAINER EXPORTING ROW = 3 COLUMN = 1 RECEIVING CONTAINER = o_cont5.

perform constructtree.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM constructtree . CREATE OBJECT O_TREE EXPORTING PARENT = o_cont1 NODE_SELECTION_MODE = cl_gui_simple_tree=>node_sel_mode_single.

perform addnodes.ENDFORM. " constructtree

FORM addnodes . clear ls_nodes. ls_nodes-node_key = 'ROOT'. ls_nodes-isfolder = 'X'. ls_nodes-text = 'Transactions'. append ls_nodes to lt_nodes.

clear ls_nodes.

Page 26: 630PMALV

ls_nodes-node_key = 'SO'. ls_nodes-relatkey = 'ROOT'. ls_nodes-isfolder = 'X'. ls_nodes-text = 'Sales order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'CSO'. ls_nodes-relatkey = 'SO'. ls_nodes-n_image = '@15@'. ls_nodes-text = 'Create Sales order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'CHSO'. ls_nodes-relatkey = 'SO'. ls_nodes-n_image = '@15@'. ls_nodes-text = 'Change Sales order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'DSO'. ls_nodes-relatkey = 'SO'. ls_nodes-n_image = '@15@'. ls_nodes-text = 'Display Sales order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'PO'. ls_nodes-relatkey = 'ROOT'. ls_nodes-isfolder = 'X'. ls_nodes-text = 'Purchase order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'CPO'. ls_nodes-relatkey = 'PO'. ls_nodes-exp_image = '@16@'. ls_nodes-text = 'Create Purchase order'. append ls_nodes to lt_nodes.

clear ls_nodes. ls_nodes-node_key = 'CHPO'. ls_nodes-relatkey = 'PO'. ls_nodes-exp_image = '@16@'. ls_nodes-text = 'Change Purchase order'.

Page 27: 630PMALV

append ls_nodes to lt_nodes.

*Register the handler create object ob. set handler ob->handle_node_double_click for o_tree.

clear ls_events. ls_events-eventid = cl_gui_simple_tree=>eventid_node_double_click. append ls_events to lt_events.

CALL METHOD O_TREE->SET_REGISTERED_EVENTS EXPORTING EVENTS = lt_events[].

CALL METHOD O_TREE->ADD_NODES EXPORTING TABLE_STRUCTURE_NAME = 'ABDEMONODE' NODE_TABLE = lt_nodes[].

ENDFORM. " addnodes

FORM vbakgrid . CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = o_cont4.

perform getvbak. if lt_vbak[] is not initial. perform fldcatvbak. perform layoutvbak. perform styles. perform displayvbak. endif.

ENDFORM. " vbakgrid

FORM getvbak . select vbeln erdat erzet from vbak into corresponding fields of table lt_vbak up to 50 rows.ENDFORM. " getvbak

Page 28: 630PMALV

FORM fldcatvbak . refresh lt_fcat. clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Creation Date'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Creation Time'. append ls_fcat to lt_fcat.

ENDFORM. " fldcatvbak

FORM layoutvbak . clear ls_layo. ls_layo-grid_title = 'Sales Document Header data'. ls_layo-stylefname = 'CELLSTYLES'.ENDFORM. " layoutvbak

FORM displayvbak . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " displayvbak

FORM styles . clear ls_styl.

Page 29: 630PMALV

loop at lt_vbak into ls_vbak. if ls_vbak-erdat = '19970121'. ls_styl-fieldname = 'VBELN'. ls_styl-style = cl_gui_alv_grid=>mc_style_button. append ls_styl to ls_vbak-cellstyles. modify lt_vbak from ls_vbak transporting cellstyles. endif. endloop.ENDFORM. " stylesPROGRAM10

REPORT Z630PMALV10.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container, "" CLASS REFERANCE VARIABLE CREATION vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln. ""SELECTION SCREEN CREATION

types : begin of ty_vbak, vbeln type vbak-vbeln, erdat type vbak-erdat, erzet type vbak-erzet, ernam type vbak-ernam, end of ty_vbak.

data : lt_vbak type standard table of ty_vbak, ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat, ""USED FOR PREAPAIR FIELD CATALOG* ls_fcat type lvc_s_fcat. ls_fcat like line of lt_fcat, ls_layo type lvc_s_layo. "" USED FOR LAYOUT PREAPARATION

data ls_toolbar type stb_button.class lcl_eventreceiver definition. public section. methods handle_toolbar for event toolbar of cl_gui_alv_grid importing E_OBJECT. methods handle_menu_button for event menu_button of cl_gui_alv_grid importing e_object e_ucomm.endclass.

Page 30: 630PMALV

class lcl_eventreceiver implementation. method handle_toolbar. clear ls_toolbar. ls_toolbar-function = 'P1'. ls_toolbar-icon = '@15@'. ls_toolbar-quickinfo = 'Custom button1'. ls_toolbar-butn_type = 0. ls_toolbar-disabled = ' '. ls_toolbar-text = 'Button1'. append ls_toolbar to e_object->mt_toolbar.

clear ls_toolbar. ls_toolbar-function = 'P2'. ls_toolbar-icon = '@15@'. ls_toolbar-quickinfo = 'Custom button2'. ls_toolbar-butn_type = 3. ls_toolbar-disabled = ' '. ls_toolbar-text = 'Button2'. append ls_toolbar to e_object->mt_toolbar.

clear ls_toolbar. ls_toolbar-function = 'P3'. ls_toolbar-icon = '@15@'. ls_toolbar-quickinfo = 'Custom button3'. ls_toolbar-butn_type = 2. ls_toolbar-disabled = ' '. ls_toolbar-text = 'Button2'. append ls_toolbar to e_object->mt_toolbar. endmethod.

method handle_menu_button. case e_ucomm. when 'P3'. CALL METHOD E_OBJECT->ADD_FUNCTION EXPORTING FCODE = 'M1' TEXT = 'Menu Item1'.

CALL METHOD E_OBJECT->ADD_FUNCTION EXPORTING FCODE = 'M2' TEXT = 'Menu Item2'.

CALL METHOD E_OBJECT->ADD_FUNCTION EXPORTING FCODE = 'M3'

Page 31: 630PMALV

TEXT = 'Menu Item3'.

endcase. endmethod.endclass.

data ob type ref to lcl_eventreceiver.

initialization. so_vbeln-low = '4970'. so_vbeln-high = '4975'. append so_vbeln.

start-of-selection. call screen 100.

MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'ABC'.if vbak_cont is initial. """" CLASS OBJECT CREATION CREATE OBJECT VBAK_CONT EXPORTING CONTAINER_NAME = 'CUST1'.

CREATE OBJECT VBAK_GRID EXPORTING I_PARENT = vbak_cont.

perform getvbak. perform fldcat. perform layout. perform handlers. perform display.endif.ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT. case sy-ucomm. when 'BACK'. leave program. endcase.ENDMODULE. " USER_COMMAND_0100 INPUT

FORM getvbak . select vbeln erdat erzet ernam

Page 32: 630PMALV

from vbak into table lt_vbak where vbeln in so_vbeln.ENDFORM. " getvbak

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-col_pos = 1. ls_fcat-coltext = 'Sales Doc'. ls_fcat-outputlen = 12.* ls_fcat-icon = 'X'. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-col_pos = 2. ls_fcat-coltext = 'Creation Date'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-col_pos = 3. ls_fcat-coltext = 'Creation Time'. ls_fcat-outputlen = 15. append ls_fcat to lt_fcat.

clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-col_pos = 4. ls_fcat-coltext = 'Created by'. ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'. append ls_fcat to lt_fcat.endform.

FORM layout . clear ls_layo. ls_layo-zebra = 'X'. "" IT PROVIDES ALTERNATIVE COLOUR STRIP

Page 33: 630PMALV

ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'. " IT PROVIDES TITLE TEXT BARENDFORM. " layout

FORM display . CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = ls_layo CHANGING IT_OUTTAB = lt_vbak[] IT_FIELDCATALOG = lt_fcat[].ENDFORM. " display

FORM handlers . create object ob. set handler ob->handle_toolbar for vbak_grid. set handler ob->handle_menu_button for vbak_grid.ENDFORM. " handlersPROGRAM11:

REPORT  Z630PMALV11.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container,   "" CLASS REFERANCE VARIABLE CREATION       o_split type ref to cl_gui_splitter_container,       o_cont1 type ref to cl_gui_container,       o_cont2 type ref to cl_gui_container,       vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.    ""SELECTION SCREEN CREATION

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,        ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,   ""USED FOR PREAPAIR FIELD CATALOG*       ls_fcat type lvc_s_fcat.        ls_fcat like line of lt_fcat,

Page 34: 630PMALV

        ls_layo type lvc_s_layo.      "" USED FOR LAYOUT PREAPARATION

class lcl_eventreceiver definition.public section.  methods handle_top_of_page for event top_of_page of          cl_gui_alv_grid importing e_dyndoc_id.endclass.

class lcl_eventreceiver implementation.  method handle_top_of_page.* Associate top of page with container    CALL METHOD E_DYNDOC_ID->ADD_TEXT      EXPORTING        TEXT          = text-001.

    CALL METHOD E_DYNDOC_ID->ADD_GAP      EXPORTING        WIDTH      = 5.

    CALL METHOD E_DYNDOC_ID->ADD_TEXT      EXPORTING        TEXT          = text-002.

    CALL METHOD E_DYNDOC_ID->NEW_LINE      EXPORTING        REPEAT = 1.

   CALL METHOD E_DYNDOC_ID->ADD_TEXT      EXPORTING        TEXT          = text-003.

CALL METHOD E_DYNDOC_ID->DISPLAY_DOCUMENT  EXPORTING    PARENT             = o_cont1.

  endmethod.endclass.

data ob type ref to lcl_eventreceiver.

initialization.  so_vbeln-low = '4970'.  so_vbeln-high = '4975'.  append so_vbeln.

start-of-selection.   call screen 100.

Page 35: 630PMALV

MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'ABC'.if vbak_cont is initial.      """" CLASS OBJECT CREATION   CREATE OBJECT VBAK_CONT     EXPORTING       CONTAINER_NAME              = 'CUST1'.

   CREATE OBJECT O_SPLIT     EXPORTING       PARENT            = vbak_cont       ROWS              = 2       COLUMNS           = 1.

   CALL METHOD O_SPLIT->GET_CONTAINER     EXPORTING       ROW       = 1       COLUMN    = 1     RECEIVING       CONTAINER = o_cont1.

   CALL METHOD O_SPLIT->GET_CONTAINER     EXPORTING       ROW       = 2       COLUMN    = 1     RECEIVING       CONTAINER = o_cont2.

 CALL METHOD O_SPLIT->SET_ROW_HEIGHT   EXPORTING     ID                = 1     HEIGHT            = 4.

 CALL METHOD O_SPLIT->SET_ROW_HEIGHT   EXPORTING     ID                = 2     HEIGHT            = 6.

    CREATE OBJECT VBAK_GRID      EXPORTING        I_PARENT          = o_cont2.

    perform getvbak.    perform fldcat.    perform layout.    perform handlers.    perform display.endif.ENDMODULE.                 " STATUS_0100  OUTPUT

Page 36: 630PMALV

MODULE USER_COMMAND_0100 INPUT.  case sy-ucomm.    when 'BACK'.      leave program.  endcase.ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM getvbak .  select vbeln erdat erzet ernam          from vbak into table lt_vbak          where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM fldcat .  clear ls_fcat.  ls_fcat-fieldname = 'VBELN'.  ls_fcat-col_pos = 1.  ls_fcat-coltext = 'Sales Doc'.  ls_fcat-outputlen = 12.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERDAT'.  ls_fcat-col_pos = 2.  ls_fcat-coltext = 'Creation Date'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERZET'.  ls_fcat-col_pos = 3.  ls_fcat-coltext = 'Creation Time'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERNAM'.  ls_fcat-col_pos = 4.  ls_fcat-coltext = 'Created by'.  ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'.  append ls_fcat to lt_fcat.endform.

FORM layout .

Page 37: 630PMALV

  clear ls_layo.  ls_layo-zebra = 'X'.     "" IT PROVIDES ALTERNATIVE COLOUR STRIP  ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.       " IT PROVIDES TITLE TEXT BARENDFORM.                    " layout

FORM display .  CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY    EXPORTING      IS_LAYOUT                     = ls_layo    CHANGING      IT_OUTTAB                     = lt_vbak[]      IT_FIELDCATALOG               = lt_fcat[].ENDFORM.                    " display

FORM handlers .  create object ob.  set handler ob->handle_top_of_page for vbak_grid.* Explicit registration of top of pagedata k type ref to cl_dd_document.create object k.

  CALL METHOD VBAK_GRID->LIST_PROCESSING_EVENTS    EXPORTING      I_EVENT_NAME      = 'TOP_OF_PAGE'      I_DYNDOC_ID       = k.

ENDFORM.                    " handlers

PROGRAM12:

REPORT  Z630PMALV12.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container,   "" CLASS REFERANCE VARIABLE CREATION       vbak_grid type ref to cl_gui_alv_grid,       o_dock type ref to cl_gui_docking_container.

data mode type i.

select-options so_vbeln for lv_vbeln.    ""SELECTION SCREEN CREATION

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,

Page 38: 630PMALV

            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,        ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,   ""USED FOR PREAPAIR FIELD CATALOG*       ls_fcat type lvc_s_fcat.        ls_fcat like line of lt_fcat,        ls_layo type lvc_s_layo.      "" USED FOR LAYOUT PREAPARATION

initialization.  so_vbeln-low = '4970'.  so_vbeln-high = '4975'.  append so_vbeln.

start-of-selection.   call screen 100.

MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'ABC'.mode = cl_gui_alv_grid=>offline( ).if mode eq 0. if vbak_cont is initial.      """" CLASS OBJECT CREATION   CREATE OBJECT VBAK_CONT     EXPORTING       CONTAINER_NAME              = 'CUST1'.

    CREATE OBJECT VBAK_GRID      EXPORTING        I_PARENT          = vbak_cont. endif.else.  CREATE OBJECT VBAK_GRID    EXPORTING      I_PARENT          = o_dock.endif.

    perform getvbak.    perform fldcat.    perform layout.    perform display.ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.  case sy-ucomm.    when 'BACK'.      leave program.

Page 39: 630PMALV

  endcase.ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM getvbak .  select vbeln erdat erzet ernam          from vbak into table lt_vbak          where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM fldcat .  clear ls_fcat.  ls_fcat-fieldname = 'VBELN'.  ls_fcat-col_pos = 1.  ls_fcat-coltext = 'Sales Doc'.  ls_fcat-outputlen = 12.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERDAT'.  ls_fcat-col_pos = 2.  ls_fcat-coltext = 'Creation Date'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERZET'.  ls_fcat-col_pos = 3.  ls_fcat-coltext = 'Creation Time'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERNAM'.  ls_fcat-col_pos = 4.  ls_fcat-coltext = 'Created by'.  ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'.  append ls_fcat to lt_fcat.endform.

FORM layout .  clear ls_layo.  ls_layo-zebra = 'X'.     "" IT PROVIDES ALTERNATIVE COLOUR STRIP  ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.       " IT PROVIDES TITLE TEXT BARENDFORM.                    " layout

Page 40: 630PMALV

FORM display .  CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY    EXPORTING      IS_LAYOUT                     = ls_layo    CHANGING      IT_OUTTAB                     = lt_vbak[]      IT_FIELDCATALOG               = lt_fcat[].ENDFORM.                    " display

PROGRAM13:

REPORT  Z630PMALV13.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container,   "" CLASS REFERANCE VARIABLE CREATION       vbak_grid type ref to cl_gui_alv_grid,       o_dock type ref to cl_gui_docking_container.

select-options so_vbeln for lv_vbeln.    ""SELECTION SCREEN CREATION

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,        ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,   ""USED FOR PREAPAIR FIELD CATALOG*       ls_fcat type lvc_s_fcat.        ls_fcat like line of lt_fcat,        ls_layo type lvc_s_layo.      "" USED FOR LAYOUT PREAPARATION

class lcl_eventreceiver definition.  public section.     methods handle_onf1 for event onf1 of cl_gui_alv_grid        importing e_fieldname er_event_data.endclass.

class lcl_eventreceiver implementation.   method handle_onf1.     case e_fieldname.

Page 41: 630PMALV

      when 'VBELN'.       er_event_data->m_event_handled = 'X'.  "suppress standard F1 help      CALL FUNCTION 'POPUP_TO_INFORM'        EXPORTING          TITEL         =  'Custom F1 help'          TXT1          =  'VBAK Table'          TXT2          =   'VBELN Field'.    endcase.   endmethod.endclass.

data ob type ref to lcl_eventreceiver.

initialization.  so_vbeln-low = '4970'.  so_vbeln-high = '4975'.  append so_vbeln.

start-of-selection.   call screen 100.

MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'ABC'. if vbak_cont is initial.      """" CLASS OBJECT CREATION   CREATE OBJECT VBAK_CONT     EXPORTING       CONTAINER_NAME              = 'CUST1'.

    CREATE OBJECT VBAK_GRID      EXPORTING        I_PARENT          = vbak_cont.

    perform getvbak.    perform fldcat.    perform layout.    perform handlers.    perform display.endif.ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.  case sy-ucomm.    when 'BACK'.      leave program.  endcase.ENDMODULE.                 " USER_COMMAND_0100  INPUT

Page 42: 630PMALV

FORM getvbak .  select vbeln erdat erzet ernam          from vbak into table lt_vbak          where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM fldcat .  clear ls_fcat.  ls_fcat-fieldname = 'VBELN'.  ls_fcat-col_pos = 1.  ls_fcat-coltext = 'Sales Doc'.  ls_fcat-outputlen = 12.  ls_fcat-ref_table = 'VBAK'.  ls_fcat-ref_field = 'VBELN'.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERDAT'.  ls_fcat-col_pos = 2.  ls_fcat-coltext = 'Creation Date'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERZET'.  ls_fcat-col_pos = 3.  ls_fcat-coltext = 'Creation Time'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERNAM'.  ls_fcat-col_pos = 4.  ls_fcat-coltext = 'Created by'.  ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'.  append ls_fcat to lt_fcat.endform.

FORM layout .  clear ls_layo.  ls_layo-zebra = 'X'.     "" IT PROVIDES ALTERNATIVE COLOUR STRIP  ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.       " IT PROVIDES TITLE TEXT BARENDFORM.                    " layout

Page 43: 630PMALV

FORM display .  CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY    EXPORTING      IS_LAYOUT                     = ls_layo    CHANGING      IT_OUTTAB                     = lt_vbak[]      IT_FIELDCATALOG               = lt_fcat[].ENDFORM.                    " display

FORM handlers .  create object ob.  set handler ob->handle_onf1 for vbak_grid.ENDFORM.                    " handlers

PROGRAM14:

REPORT  Z630PMALV14.

data : o_cont type ref to cl_gui_custom_container,       o_grid type ref to cl_gui_alv_grid.

types : begin of ty_emp.            include structure z730emp.types end of ty_emp.

data : lt_emp type standard table of ty_emp,       ls_emp type ty_emp.

types : begin of ty_emp1,            empno type z730emp-empno,            ename type z730emp-ename,        end of ty_emp1.

data : gt_emp type standard table of ty_emp1.

data : lt_fcat type lvc_t_fcat,       ls_fcat type lvc_s_fcat.

data : lt_f4 type lvc_t_f4,       ls_f4 like line of lt_f4.

data : lt_retval type table of DDSHRETVAL,       ls_retval like line of lt_retval.

class lcl_eventreceiver definition.  public section.

Page 44: 630PMALV

    methods handle_onf4 for event onf4        of cl_gui_alv_grid importing e_fieldname ES_ROW_NO.endclass.

class lcl_eventreceiver implementation.   method handle_onf4.      case e_fieldname.        when 'EMPNO'.          perform f4help using es_row_no.      endcase.   endmethod.endclass.

data ob type ref to lcl_eventreceiver.

start-of-selection.  call screen 100.

MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'ABC'.if o_cont is initial.   CREATE OBJECT O_CONT     EXPORTING       CONTAINER_NAME              = 'CST'.

   CREATE OBJECT O_GRID     EXPORTING       I_PARENT          = o_cont.

  perform fldcat.  perform getemp.  perform handlers.  perform display.endif.ENDMODULE.                 " STATUS_0100  OUTPUT

FORM fldcat .  clear ls_fcat.    ls_fcat-fieldname = 'MANDT'.  ls_fcat-col_pos = 1.  ls_fcat-coltext = 'Client'.  ls_fcat-outputlen = 5.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'EMPNO'.  ls_fcat-col_pos = 2.  ls_fcat-coltext = 'Employee no'.

Page 45: 630PMALV

  ls_fcat-outputlen = 12.  ls_fcat-F4AVAILABL = 'X'.*  ls_fcat-edit = 'X'.  append ls_fcat to lt_fcat.

    clear ls_fcat.  ls_fcat-fieldname = 'ENAME'.  ls_fcat-col_pos = 3.  ls_fcat-coltext = 'Employee name'.  ls_fcat-outputlen = 14.*  ls_fcat-F4AVAILABL = 'X'.  append ls_fcat to lt_fcat.

    clear ls_fcat.  ls_fcat-fieldname = 'EMPDESIG'.  ls_fcat-col_pos = 4.  ls_fcat-coltext = 'Emp Designation'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

ENDFORM.                    " fldcat

FORM display .  CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY    CHANGING      IT_OUTTAB                     = lt_emp[]      IT_FIELDCATALOG               = lt_fcat[].

ENDFORM.                    " display

MODULE USER_COMMAND_0100 INPUT.  case sy-ucomm.    when 'BACK'.    leave program.  endcase.ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM getemp .  select * from z730emp into table lt_emp.ENDFORM.                    " getemp

FORM handlers .  create object ob.  set handler ob->handle_onf4 for o_grid.* Explicit registration of onF4

Page 46: 630PMALV

clear ls_f4. ls_f4-fieldname = 'EMPNO'. ls_f4-register = 'X'. append ls_f4 to lt_f4.

*clear ls_f4.* ls_f4-fieldname = 'ENAME'.* ls_f4-register = 'X'.* append ls_f4 to lt_f4.** CALL METHOD O_GRID->REGISTER_F4_FOR_FIELDS   EXPORTING     IT_F4  = lt_f4[].

ENDFORM.                    " handlers

FORM f4help using es_row_no structure LVC_S_ROID. select empno ename     from z730emp      into table gt_emp.  if gt_emp[] is not initial.     CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'       EXPORTING         RETFIELD               = 'EMPNO'        DYNPPROG                = sy-repid        DYNPNR                 = sy-dynnr        DYNPROFIELD            = 'EMPNO'        VALUE_ORG              = 'S'       TABLES         VALUE_TAB              = gt_emp[]        RETURN_TAB             = lt_retval[].

  read table lt_emp into ls_emp                index es_row_no-row_id.  if sy-subrc eq 0.     read table lt_retval into ls_retval index 1.     if sy-subrc eq 0.        ls_emp-empno = ls_retval-fieldval.        modify lt_emp from ls_emp index es_row_no-row_id.

        CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY.     endif.  endif.

Page 47: 630PMALV

  endif.ENDFORM.                    " f4help

PROGRAM15:

REPORT  Z630PMALV15.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

PROGRAM16:

Page 48: 630PMALV

REPORT  Z630PMALV16.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING       I_STRUCTURE_NAME           =       'ZMYVBAK'     TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

PROGRAM17:

REPORT  Z630PMALV17.

type-pools slis.

Page 49: 630PMALV

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak.

data : lt_fcat type table of slis_fieldcat_alv.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform fldcat.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING       IT_FIELDCAT                       = lt_fcat[]    TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

FORM fldcat .  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'   EXPORTING

Page 50: 630PMALV

     I_STRUCTURE_NAME             = 'ZMYVBAK'    CHANGING      CT_FIELDCAT                 = lt_fcat[].ENDFORM.                    " fldcat

PROGRAM18:

REPORT  Z630PMALV18.

type-pools slis.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak.

data : lt_fcat type table of slis_fieldcat_alv,       ls_fcat like line of lt_fcat.

data ls_layo type slis_layout_alv.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform fldcat.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

Page 51: 630PMALV

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING       I_GRID_TITLE                      = 'SALES DOCUMENT HEADER DATA'       IT_FIELDCAT                       = lt_fcat[]    TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-seltext_m = 'Sales Doc'. ls_fcat-outputlen = 10. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-seltext_m = 'Creation date'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-seltext_m = 'Creation Time'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-seltext_m = 'Created by'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

endform.

PROGRAM19:

REPORT  Z630PMALV19.

type-pools slis.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,

Page 52: 630PMALV

            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak.

data : lt_fcat type table of slis_fieldcat_alv,       ls_fcat like line of lt_fcat.

data : lt_events type table of slis_alv_event,       ls_events like line of lt_events.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform fldcat.      perform registerevents.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING        I_CALLBACK_PROGRAM               = sy-repid       I_GRID_TITLE                      = 'SALES DOCUMENT HEADER DATA'       IT_FIELDCAT                       = lt_fcat[]       IT_EVENTS                         = lt_events[]    TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

FORM fldcat .

Page 53: 630PMALV

 clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-seltext_m = 'Sales Doc'. ls_fcat-outputlen = 10. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-seltext_m = 'Creation date'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-seltext_m = 'Creation Time'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-seltext_m = 'Created by'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

endform.

FORM registerevents .  clear ls_events.  ls_events-name = 'USER_COMMAND'.  ls_events-form = 'ITEMDATA'.  append ls_events to lt_events.ENDFORM.                    " registerevents

PROGRAM20:

REPORT  Z630PMALV20.

type-pools slis.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

Page 54: 630PMALV

data : lt_vbak type standard table of ty_vbak.

data : lt_fcat type table of slis_fieldcat_alv,       ls_fcat like line of lt_fcat.

data : lt_events type table of slis_alv_event,       ls_events like line of lt_events.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform fldcat.      perform registerevents.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING        I_CALLBACK_PROGRAM               = sy-repid       I_GRID_TITLE                      = 'SALES DOCUMENT HEADER DATA'       IT_FIELDCAT                       = lt_fcat[]       IT_EVENTS                         = lt_events[]    TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-seltext_m = 'Sales Doc'. ls_fcat-outputlen = 10.

Page 55: 630PMALV

 append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-seltext_m = 'Creation date'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-seltext_m = 'Creation Time'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-seltext_m = 'Created by'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

endform.

FORM registerevents .  clear ls_events.  ls_events-name = 'USER_COMMAND'.  ls_events-form = 'ITEMDATA'.  append ls_events to lt_events.ENDFORM.                    " registerevents

form itemdata.    message 'User command event' type 'I'.endform.

PROGRAM21:

REPORT  Z630PMALV21.

type-pools slis.

data lv_vbeln type vbeln.select-options so_vbeln for lv_vbeln.

types : begin of ty_vbak,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

Page 56: 630PMALV

data : lt_vbak type standard table of ty_vbak.

types : begin of ty_vbap,            vbeln type vbap-vbeln,            posnr type vbap-posnr,            matnr type vbap-matnr,       end of ty_vbap.

data : lt_vbap type standard table of ty_vbap,        ls_vbap type ty_vbap.

data : lt_fcat type table of slis_fieldcat_alv,       ls_fcat like line of lt_fcat.

data : lt_events type table of slis_alv_event,       ls_events like line of lt_events.

data : ls_selfield type slis_selfield.

initialization.so_vbeln-low = '4970'.so_vbeln-high = '4975'.append so_vbeln.

start-of-selection.  perform getvbak.  if lt_vbak[] is not initial.      perform fldcat.      perform registerevents.      perform displayvbak.  endif.

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM displayvbak .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'     EXPORTING        I_CALLBACK_PROGRAM               = sy-repid

Page 57: 630PMALV

       I_GRID_TITLE                      = 'SALES DOCUMENT HEADER DATA'       IT_FIELDCAT                       = lt_fcat[]       IT_EVENTS                         = lt_events[]    TABLES       T_OUTTAB                          = lt_vbak[].

ENDFORM.                    " displayvbak

FORM fldcat . clear ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-seltext_m = 'Sales Doc'. ls_fcat-outputlen = 10. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERDAT'. ls_fcat-seltext_m = 'Creation date'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERZET'. ls_fcat-seltext_m = 'Creation Time'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

 clear ls_fcat. ls_fcat-fieldname = 'ERNAM'. ls_fcat-seltext_m = 'Created by'. ls_fcat-outputlen = 12. append ls_fcat to lt_fcat.

endform.

FORM registerevents .  clear ls_events.  ls_events-name = 'USER_COMMAND'.  ls_events-form = 'ITEMDATA'.  append ls_events to lt_events.ENDFORM.                    " registerevents

form itemdata using ucomm type sy-ucomm                   ls_selfield type slis_selfield.     if ls_selfield-fieldname = 'VBELN'.        lv_vbeln = ls_selfield-value.

Page 58: 630PMALV

        if lv_vbeln is not initial.           perform getvbap.           if lt_vbap[] is not initial.              perform fldcatvbap.              perform events.              perform displayvbap.           endif.        endif.     endif.endform.

FORM getvbap .  select vbeln posnr matnr         from vbap         into table lt_vbap         where vbeln = lv_vbeln.ENDFORM.                    " getvbap

FORM fldcatvbap .  refresh lt_fcat.  clear ls_fcat.  ls_fcat-fieldname = 'VBELN'.  ls_fcat-seltext_m = 'Sales doc'.  ls_fcat-outputlen =  10.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'POSNR'.  ls_fcat-seltext_m = 'Item Number'.  ls_fcat-outputlen =  10.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'MATNR'.  ls_fcat-seltext_m = 'Material'.  ls_fcat-outputlen =  10.  append ls_fcat to lt_fcat.

ENDFORM.                    " fldcatvbap

FORM displayvbap .   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    EXPORTING      I_CALLBACK_PROGRAM                = sy-repid

Page 59: 630PMALV

      I_GRID_TITLE                      = 'SALES DOCUMENT ITEM DATA'      IT_FIELDCAT                       = lt_fcat[]      IT_EVENTS                         = lt_events[]     TABLES       T_OUTTAB                          = lt_vbap[].

ENDFORM.                    " displayvbap

FORM events .  refresh lt_events.  clear ls_events.  ls_events-name = 'TOP_OF_PAGE'.  ls_events-form = 'PRINTHEADING'.  append ls_events to lt_events.ENDFORM.                    " events

form printheading.  data : lt_header type table of slis_listheader,         ls_header like line of lt_header.

   clear ls_header.   ls_header-typ = 'H'.   ls_header-info = 'Sales Document Item'.   append ls_header to lt_header.

   clear ls_header.   ls_header-typ = 'S'.   ls_header-info = 'VBAP Table'.   append ls_header to lt_header.

   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'     EXPORTING       IT_LIST_COMMENTARY       = lt_header[]       i_logo                   = 'Z630FM'.

endform.

PROGRAM22:

REPORT  Z630PMALV22.

type-pools slis.data : ls_layo type slis_layout_alv.

types : begin of ty_vbak,

Page 60: 630PMALV

            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,       ls_vbak type ty_vbak.

types : begin of ty_vbap,          vbeln type vbap-vbeln,          posnr type vbap-posnr,          matnr type vbap-matnr,          matkl type vbap-matkl,       end of ty_vbap.

data : lt_vbap type standard table of ty_vbap,       ls_vbap type ty_vbap.

data lt_fcat type table of slis_fieldcat_alv.

data lt_events type slis_t_event.

start-of-selection.* Initialize the ALV Blocked List     perform init.

* prepare First block     perform fldcatvbak.     perform getvbak.     perform appendvbak.

*  prepare second block     perform fldcatvbap.     perform getvbap.     perform appendvbap.

* Display blocked list   perform display.

FORM init .  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'    EXPORTING      I_CALLBACK_PROGRAM             = sy-repid.

Page 61: 630PMALV

ENDFORM.                    " init

FORM fldcatvbak .  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'   EXPORTING     I_PROGRAM_NAME               = sy-repid     I_STRUCTURE_NAME             = 'ZMYVBAK'    CHANGING      CT_FIELDCAT                  = lt_fcat[].ENDFORM.                    " fldcatvbak

FORM getvbak .  select vbeln erdat erzet ernam         from vbak into table lt_vbak         where vbeln in ('0000004970','0000004974').ENDFORM.                    " getvbak

FORM appendvbak .  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'    EXPORTING      IS_LAYOUT                        = ls_layo      IT_FIELDCAT                      = lt_fcat[]      I_TABNAME                        = 'LT_VBAK[]'      IT_EVENTS                        = lt_events[]    TABLES      T_OUTTAB                         = lt_vbak[].

ENDFORM.                    " appendvbak

FORM fldcatvbap .  refresh lt_fcat.  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'   EXPORTING     I_PROGRAM_NAME               = sy-repid     I_STRUCTURE_NAME             = 'ZMYVBAP'    CHANGING      CT_FIELDCAT                  = lt_fcat[].

ENDFORM.                    " fldcatvbap

FORM getvbap .  select vbeln posnr matnr matkl        into table lt_vbap         from vbap

Page 62: 630PMALV

         for all entries in lt_vbak         where vbeln = lt_vbak-vbeln.ENDFORM.                    " getvbap

FORM appendvbap .  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'    EXPORTING      IS_LAYOUT                        = ls_layo      IT_FIELDCAT                      = lt_fcat[]      I_TABNAME                        = 'LT_VBAP[]'      IT_EVENTS                        = lt_events[]    TABLES      T_OUTTAB                         = lt_vbap[].

ENDFORM.                    " appendvbap

FORM display .  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.ENDFORM.                    " display

PROGRAM23:

REPORT  Z630PMALV23.

TYPE-POOLS SLIS.

TYPES : BEGIN OF TY_VBAK,            VBELN TYPE VBAK-VBELN,            ERDAT TYPE VBAK-ERDAT,            ERZET TYPE VBAK-ERZET,            ERNAM TYPE VBAK-ERNAM,        END OF TY_VBAK.

DATA : LT_VBAK TYPE STANDARD TABLE OF TY_VBAK,       LS_VBAK TYPE TY_VBAK.

TYPES : BEGIN OF TY_VBAP,          VBELN TYPE VBAP-VBELN,          POSNR TYPE VBAP-POSNR,          MATNR TYPE VBAP-MATNR,          MATKL TYPE VBAP-MATKL,       END OF TY_VBAP.

DATA : LT_VBAP TYPE STANDARD TABLE OF TY_VBAP,       LS_VBAP TYPE TY_VBAP.

DATA LT_FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV.

Page 63: 630PMALV

DATA : LS_KEYINFO TYPE SLIS_KEYINFO_ALV.

START-OF-SELECTION.  PERFORM FLDCATVBAK.  PERFORM FLDCATVBAP.

  PERFORM KEYINFO.

  PERFORM GETVBAK.  PERFORM GETVBAP.

  PERFORM DISPLAY.

FORM FLDCATVBAK .  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'    EXPORTING      I_PROGRAM_NAME     = SY-REPID      I_INTERNAL_TABNAME = 'LT_VBAK[]'      I_STRUCTURE_NAME   = 'ZMYVBAK'    CHANGING      CT_FIELDCAT        = LT_FCAT[].

ENDFORM.                    " fldcatvbak

FORM FLDCATVBAP .  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'    EXPORTING      I_PROGRAM_NAME     = SY-REPID      I_INTERNAL_TABNAME = 'LT_VBAP[]'      I_STRUCTURE_NAME   = 'ZMYVBAP'    CHANGING      CT_FIELDCAT        = LT_FCAT[].ENDFORM.                    " fldcatvbap

FORM KEYINFO .  CLEAR LS_KEYINFO.  LS_KEYINFO-HEADER01 = 'VBELN'.  LS_KEYINFO-ITEM01 = 'VBELN'.  LS_KEYINFO-HEADER02 = ' '.  LS_KEYINFO-ITEM02 = 'POSNR'.ENDFORM.                    " keyinfo

FORM GETVBAK .  SELECT VBELN ERDAT ERZET ERNAM         FROM VBAK         INTO TABLE LT_VBAK

Page 64: 630PMALV

         WHERE VBELN >= '0000004970' AND VBELN <= '0000004974'.ENDFORM.                    " getvbak

FORM GETVBAP .  SELECT VBELN POSNR MATNR MATKL      FROM VBAP      INTO TABLE LT_VBAP      FOR ALL ENTRIES IN LT_VBAK      WHERE VBELN = LT_VBAK-VBELN.

ENDFORM.                    " getvbap

FORM DISPLAY .  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'    EXPORTING      I_CALLBACK_PROGRAM = SY-REPID      IT_FIELDCAT        = LT_FCAT[]      I_TABNAME_HEADER   = 'LT_VBAK[]'      I_TABNAME_ITEM     = 'LT_VBAP[]'      IS_KEYINFO         = LS_KEYINFO    TABLES      T_OUTTAB_HEADER    = LT_VBAK[]      T_OUTTAB_ITEM      = LT_VBAP[].ENDFORM.                    " display

PROGRAM24:

REPORT  Z630PMALV24.

data lv_vbeln type vbeln.

data : vbak_cont type ref to cl_gui_custom_container,   "" CLASS REFERANCE VARIABLE CREATION       vbak_grid type ref to cl_gui_alv_grid.

select-options so_vbeln for lv_vbeln.    ""SELECTION SCREEN CREATION

types : begin of ty_vbak,            product(10) type c,            vbeln type vbak-vbeln,            erdat type vbak-erdat,            erzet type vbak-erzet,            ernam type vbak-ernam,        end of ty_vbak.

data : lt_vbak type standard table of ty_vbak,        ls_vbak type ty_vbak.

data : lt_fcat type lvc_t_fcat,   ""USED FOR PREAPAIR FIELD CATALOG*       ls_fcat type lvc_s_fcat.

Page 65: 630PMALV

        ls_fcat like line of lt_fcat,        ls_layo type lvc_s_layo.      "" USED FOR LAYOUT PREAPARATION

data : lt_drop type lvc_t_drop,       ls_drop like line of lt_drop.

initialization.  so_vbeln-low = '4970'.  so_vbeln-high = '4975'.  append so_vbeln.

start-of-selection.   call screen 100.

MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'ABC'.if vbak_cont is initial.      """" CLASS OBJECT CREATION   CREATE OBJECT VBAK_CONT     EXPORTING       CONTAINER_NAME              = 'CUST1'.

    CREATE OBJECT VBAK_GRID      EXPORTING        I_PARENT          = vbak_cont.

    perform getvbak.    perform fldcat.    perform layout.    perform dropdown.    perform display.endif.ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.  case sy-ucomm.    when 'BACK'.      leave program.  endcase.ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM getvbak .  select vbeln erdat erzet ernam          from vbak into corresponding fields of table lt_vbak          where vbeln in so_vbeln.ENDFORM.                    " getvbak

FORM fldcat .

Page 66: 630PMALV

  clear ls_fcat.  ls_fcat-fieldname = 'PRODUCT'.  ls_fcat-col_pos = 1.  ls_fcat-coltext = 'Course Name'.  ls_fcat-outputlen = 12.  ls_fcat-drdn_hndl = 30.  ls_fcat-edit = 'X'.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'VBELN'.  ls_fcat-col_pos = 2.  ls_fcat-coltext = 'Sales Doc'.  ls_fcat-outputlen = 12.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERDAT'.  ls_fcat-col_pos = 3.  ls_fcat-coltext = 'Creation Date'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERZET'.  ls_fcat-col_pos = 4.  ls_fcat-coltext = 'Creation Time'.  ls_fcat-outputlen = 15.  append ls_fcat to lt_fcat.

  clear ls_fcat.  ls_fcat-fieldname = 'ERNAM'.  ls_fcat-col_pos = 5.  ls_fcat-coltext = 'Created by'.  ls_fcat-outputlen = 15. ls_fcat-emphasize = 'C314'.  append ls_fcat to lt_fcat.endform.

FORM layout .  clear ls_layo.  ls_layo-zebra = 'X'.     "" IT PROVIDES ALTERNATIVE COLOUR STRIP  ls_layo-grid_title = 'SALES DOCUMENT HEADER DATA'.       " IT PROVIDES TITLE TEXT BARENDFORM.                    " layout

Page 67: 630PMALV

FORM display .  CALL METHOD VBAK_GRID->SET_TABLE_FOR_FIRST_DISPLAY    EXPORTING      IS_LAYOUT                     = ls_layo    CHANGING      IT_OUTTAB                     = lt_vbak[]      IT_FIELDCATALOG               = lt_fcat[].ENDFORM.                    " display

FORM dropdown .  clear ls_drop.  ls_drop-handle = 30.  ls_drop-value = 'ABAP'.  append ls_drop to lt_drop.

  clear ls_drop.  ls_drop-handle = 30.  ls_drop-value = 'OOPS ABAP'.  append ls_drop to lt_drop.

  clear ls_drop.  ls_drop-handle = 30.  ls_drop-value = 'CROSS APPS'.  append ls_drop to lt_drop.

  clear ls_drop.  ls_drop-handle = 30.  ls_drop-value = 'WEBDYNPRO ABAP'.  append ls_drop to lt_drop.

  CALL METHOD VBAK_GRID->SET_DROP_DOWN_TABLE    EXPORTING      IT_DROP_DOWN       = lt_drop[].

ENDFORM.                    " dropdown

PROGRAM25:

Page 68: 630PMALV