You are on page 1of 5

http://www.saptechnical.com/Tutorials/ALV/Internal/Index.

htm
http://www.saptechnical.com/Tutorials/ALV/ALVMainPage.htm
Splitter Container - cl_gui_splitter_container
NOTE: As part of screen design create a screen with screen numbers 0100. Also create a menu named
MYMENU with Functional Keys BACK, CANCEL, and EXIT with respective function codes.
To the screen 0100:
Add the menu MYMENU and in the PAI section of the screen provide appropriate code to handle the
functionality for BACK, CANCEL, and EXIT. See MODULE user_command_0100 INPUT in the
code below. To the layout of this screen add a customer control and name it CCONT.
Flow logic of screen 0100:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.

REPORT yalv_oop_split.
TYPES: BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
ort01 TYPE kna1-ort01,
land1 TYPE kna1-land1,
pstlz TYPE kna1-pstlz,
END OF ty_kna1,
BEGIN OF ty_vbak,
kunnr TYPE vbak-kunnr,
vbeln TYPE vbak-vbeln,
netwr TYPE vbak-netwr,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
netwr TYPE vbap-netwr,
END OF ty_vbap.
DATA: r_ccontainer TYPE REF TO cl_gui_custom_container,
r_splitter1 TYPE REF TO cl_gui_splitter_container,
r_splitter2 TYPE REF TO cl_gui_splitter_container,
r_container1 TYPE REF TO cl_gui_container,
r_container2 TYPE REF TO cl_gui_container,
r_container3 TYPE REF TO cl_gui_container,
r_grid_kna1 TYPE REF TO cl_gui_alv_grid,
r_grid_vbak TYPE REF TO cl_gui_alv_grid,
r_grid_vbap TYPE REF TO cl_gui_alv_grid,
t_kna1 TYPE TABLE OF ty_kna1,
t_vbak TYPE TABLE OF ty_vbak,

t_vbap TYPE TABLE OF ty_vbap,


t_fcat_kna1 TYPE lvc_t_fcat,
t_fcat_vbak TYPE lvc_t_fcat,
t_fcat_vbap TYPE lvc_t_fcat.
START-OF-SELECTION.
SELECT kunnr
name1
ort01
land1
pstlz
FROM kna1 INTO TABLE t_kna1
UP TO 20 ROWS.
SELECT kunnr
vbeln
netwr
INTO TABLE t_vbak
FROM vbak
UP TO 20 ROWS.
SELECT vbeln
posnr
matnr
netwr
INTO TABLE t_vbap
FROM vbap
UP TO 20 ROWS.
CALL SCREEN '0100'.
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MYMENU'.
PERFORM display_alv.
ENDMODULE.
" STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
IF sy-ucomm = 'BACK' OR sy-ucomm = 'CANCEL' OR sy-ucomm = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
" USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*&
Form display_alv
*&---------------------------------------------------------------------*
FORM display_alv .
*& Creating the main container and associating it with Custom Container
*& with name CCONT
CREATE OBJECT r_ccontainer
EXPORTING
container_name
= 'CCONT'.

*& splitting the main container into 1 row & 2 coloum


CREATE OBJECT r_splitter1
EXPORTING
parent = r_ccontainer
rows = 1
columns = 2.
*& getting the reference for the splited container (row 1 & col 1
*& r_container1)
CALL METHOD r_splitter1->get_container
EXPORTING
row
=1
column = 1
RECEIVING
container = r_container1.
*& getting the reference for the splited container (row 1 & col 2
*& r_container2)
CALL METHOD r_splitter1->get_container
EXPORTING
row
=1
column = 2
RECEIVING
container = r_container2.
*& splitting the 2nd coloum container (r_container2) in to 2 rows & 1 column
CREATE OBJECT r_splitter2
EXPORTING
parent = r_container2
rows = 2
columns = 1.
*& getting the reference for the splited r_container2
*& In the second container row 1 & col 1 - r_container2
CALL METHOD r_splitter2->get_container
EXPORTING
row
=1
column = 1
RECEIVING
container = r_container2.
*& Getting the reference for the splited r_container2
*& In the second container row 2 & col 1 - r_container3
CALL METHOD r_splitter2->get_container
EXPORTING
row
=2
column = 1
RECEIVING
container = r_container3.
*& populating t_kna1 internal table to the r_container1
PERFORM populate_kna1_fcat.
CREATE OBJECT r_grid_kna1
EXPORTING
i_parent = r_container1.
CALL METHOD r_grid_kna1->set_table_for_first_display

CHANGING
it_outtab
= t_kna1
it_fieldcatalog = t_fcat_kna1.
*populating t_vbak internal table to the r_container2
PERFORM populate_vbak_fcat.
CREATE OBJECT r_grid_vbak
EXPORTING
i_parent = r_container2.
CALL METHOD r_grid_vbak->set_table_for_first_display
CHANGING
it_outtab
= t_vbak
it_fieldcatalog = t_fcat_vbak.
*populating t_vbap internal table to the r_container3
PERFORM populate_vbap_fcat.
CREATE OBJECT r_grid_vbap
EXPORTING
i_parent = r_container3.
CALL METHOD r_grid_vbap->set_table_for_first_display
CHANGING
it_outtab
= t_vbap
it_fieldcatalog = t_fcat_vbap.
ENDFORM.

" display_alv

*&---------------------------------------------------------------------*
*&
Form populate_kna1_fcat
*&---------------------------------------------------------------------*
FORM populate_kna1_fcat .
DATA: ls_fcat TYPE lvc_s_fcat.
REFRESH t_fcat_kna1.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-coltext = 'Customer'.
APPEND ls_fcat TO t_fcat_kna1.
CLEAR ls_fcat.
ls_fcat-fieldname = 'NAME1'.
ls_fcat-coltext = 'Customer Name'.
APPEND ls_fcat TO t_fcat_kna1.
CLEAR ls_fcat.
ls_fcat-fieldname = 'ORT01'.
ls_fcat-coltext = 'City'.
APPEND ls_fcat TO t_fcat_kna1.
CLEAR ls_fcat.
ls_fcat-fieldname = 'LAND1'.
ls_fcat-coltext = 'Country'.
APPEND ls_fcat TO t_fcat_kna1.
CLEAR ls_fcat.
ls_fcat-fieldname = 'PSTLZ'.

ls_fcat-coltext = 'P Code'.


APPEND ls_fcat TO t_fcat_kna1.
CLEAR ls_fcat.
ENDFORM.
"populate_kna1_fcat
*&---------------------------------------------------------------------*
*&
Form populate_vbak_fcat
*&---------------------------------------------------------------------*
FORM populate_vbak_fcat .
DATA: ls_fcat TYPE lvc_s_fcat.
REFRESH t_fcat_vbak.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-coltext = 'Customer'.
APPEND ls_fcat TO t_fcat_vbak.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VBELN'.
ls_fcat-coltext = 'Order Num.'.
APPEND ls_fcat TO t_fcat_vbak.
CLEAR ls_fcat.
ls_fcat-fieldname = 'NETWR'.
ls_fcat-coltext = 'Net Value'.
APPEND ls_fcat TO t_fcat_vbak.
CLEAR ls_fcat.
ENDFORM.
"populate_vbak_fcat
*&---------------------------------------------------------------------*
*&
Form populate_vbap_fcat
*&---------------------------------------------------------------------*
FORM populate_vbap_fcat .
DATA: ls_fcat TYPE lvc_s_fcat.
REFRESH t_fcat_vbak.
ls_fcat-fieldname = 'VBELN'.
ls_fcat-coltext = 'Order Num.'.
APPEND ls_fcat TO t_fcat_vbap.
CLEAR ls_fcat.
ls_fcat-fieldname = 'POSNR'.
ls_fcat-coltext = 'Doc Item'.
APPEND ls_fcat TO t_fcat_vbap.
CLEAR ls_fcat.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-coltext = 'Material Num'.
APPEND ls_fcat TO t_fcat_vbap.
CLEAR ls_fcat.
ls_fcat-fieldname = 'NETWR'.
ls_fcat-coltext = 'Net Value'.
APPEND ls_fcat TO t_fcat_vbap.
CLEAR ls_fcat.
ENDFORM.
" populate_vbap_fcat

You might also like