*&---------------------------------------------------------------------*
*& Report Z_SPLIT_CONTAINER_ALV
*&
*&---------------------------------------------------------------------*
REPORT Z_SPLIT_CONTAINER_ALV.
DATA : lcl_custom TYPE REF TO cl_gui_custom_container.
DATA : lcl_split TYPE REF TO cl_gui_splitter_container.
DATA : lcl_con1 TYPE REF TO cl_gui_container.
DATA : lcl_con2 TYPE REF TO cl_gui_container.
DATA : lcl_con3 TYPE REF TO cl_gui_container.
DATA : lcl_con4 TYPE REF TO cl_gui_container.
DATA : gcl_dd_doc TYPE REF TO cl_dd_document.
DATA : gr_functions TYPE REF TO cl_salv_functions.
DATA : gr_salv TYPE REF TO cl_salv_table,
gr_salv2 TYPE REF TO cl_salv_table,
gr_salv3 TYPE REF TO cl_salv_table,
gr_salv4 TYPE REF TO cl_salv_table,
lr_exp TYPE REF TO cx_root,
lv_text TYPE string.
TYPES:BEGIN OF ty_table3,
g_belnr TYPE bkpf-belnr, "pra
g_bukrs TYPE bkpf-bukrs,"pra
sbelnr TYPE bkpf-belnr,"pra
rbukrs TYPE bkpf-bukrs,"pra
rbelnr TYPE bkpf-belnr,"pra
rstblg TYPE bkpf-stblg,"pra
pernr TYPE pa0001-pernr,
name(30) TYPE c,
begda TYPE dats,
endda TYPE dats,
END OF ty_table3.
DATA : BEGIN OF ty_alv3.
INCLUDE TYPE ty_table3.
DATA : END OF ty_alv3.
DATA : gt_display3 LIKE TABLE OF ty_alv3,
gs_display3 LIKE ty_alv3.
TYPES:BEGIN OF ty_table2,
pernr TYPE pa0002-pernr,
nachn TYPE pa0002-nachn,
vorna type pa0002-vorna,
GESCH type pa0002-GESCH,
GBDAT type pa0002-GBDAT,
begda TYPE dats,
endda TYPE dats,
END OF ty_table2.
DATA : BEGIN OF ty_alv2.
INCLUDE TYPE ty_table2.
DATA : END OF ty_alv2.
DATA : gt_display2 LIKE TABLE OF ty_alv2,
gs_display2 LIKE ty_alv2.
DATA : gt_display4 LIKE TABLE OF bseg,
gs_display4 LIKE bseg.
START-OF-SELECTION.
PERFORM fill_internal_tables.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZSTAT'.
SET TITLEBAR 'ZTITLE'.
CREATE OBJECT lcl_custom
EXPORTING
* parent = parent
container_name = 'SPLIT'
* style = style
* lifetime = lifetime_default
* repid = repid
* dynnr = dynnr
* no_autodef_progid_dynnr = no_autodef_progid_dynnr
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
*Split the container into 4
CREATE OBJECT lcl_split
EXPORTING
parent = lcl_custom
rows = 4
columns = 1
* no_autodef_progid_dynnr = no_autodef_progid_dynnr
* name = name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3
.
*1st window
CALL METHOD lcl_split->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = lcl_con1.
CALL METHOD lcl_split->set_row_height
EXPORTING
id = 1
height = 3.
IF gcl_dd_doc IS INITIAL.
CREATE OBJECT gcl_dd_doc.
ENDIF.
PERFORM built_header CHANGING gcl_dd_doc.
CALL METHOD gcl_dd_doc->merge_document.
CALL METHOD gcl_dd_doc->display_document
EXPORTING
parent = lcl_con1
EXCEPTIONS
html_display_error = 1.
*2nd window
CALL METHOD lcl_split->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = lcl_con4.
CALL METHOD lcl_split->set_row_height
EXPORTING
id = 2
height = 3.
TRY.
"Factory Method for display the ALV
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = lcl_con4
IMPORTING
r_salv_table = gr_salv4
CHANGING
t_table = gt_display3.
CATCH cx_salv_msg INTO lr_exp.
lv_text = lr_exp->get_text( ).
ENDTRY.
gr_salv4->display( ).
*3rd window
CALL METHOD lcl_split->get_container
EXPORTING
row = 3
column = 1
RECEIVING
container = lcl_con2.
CALL METHOD lcl_split->set_row_height
EXPORTING
id = 3
height = 22.
TRY.
"Factory Method for display the ALV
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = lcl_con2
IMPORTING
r_salv_table = gr_salv2
CHANGING
t_table = gt_display2.
gr_functions = gr_salv2->get_functions( ).
gr_functions->set_all( abap_true ).
CATCH cx_salv_msg INTO lr_exp.
lv_text = lr_exp->get_text( ).
ENDTRY.
gr_salv2->display( ).
*4th window
CALL METHOD lcl_split->get_container
EXPORTING
row = 4
column = 1
RECEIVING
container = lcl_con3.
CALL METHOD lcl_split->set_row_height
EXPORTING
id = 4
height = 21.
TRY.
"Factory Method for display the ALV
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = lcl_con3
IMPORTING
r_salv_table = gr_salv3
CHANGING
t_table = gt_display4.
gr_functions = gr_salv3->get_functions( ).
gr_functions->set_all( abap_true ).
CATCH cx_salv_msg INTO lr_exp.
lv_text = lr_exp->get_text( ).
ENDTRY.
gr_salv3->display( ).
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form built_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM built_header CHANGING ps_cl_dd_doc TYPE REF TO cl_dd_document.
DATA : lcl_ta TYPE REF TO cl_dd_table_element,
lcl_col1 TYPE REF TO cl_dd_area,
lcl_col2 TYPE REF TO cl_dd_area,
lcl_col3 TYPE REF TO cl_dd_area,
lv_text TYPE sdydo_text_element,
lcl_form TYPE REF TO cl_dd_form_area.
CALL METHOD ps_cl_dd_doc->add_table
EXPORTING
no_of_columns = 3
width = '100%'
cell_background_transparent = space
IMPORTING
table = lcl_ta.
*Set the columns
CALL METHOD lcl_ta->add_column
EXPORTING
width = '30%'
IMPORTING
column = lcl_col1.
CALL METHOD lcl_ta->add_column
EXPORTING
width = '30%'
IMPORTING
column = lcl_col2.
CALL METHOD lcl_ta->add_column
EXPORTING
width = '40%'
IMPORTING
column = lcl_col3.
lv_text = 'First Field'.
CALL METHOD lcl_col1->add_text
EXPORTING
text = lv_text
sap_emphasis = cl_dd_area=>table_heading."strong.
lv_text = 'Second Field'.
CALL METHOD lcl_col2->add_text
EXPORTING
text = lv_text
sap_emphasis = cl_dd_area=>table_heading.
lv_text = 'Third Field'.
CALL METHOD lcl_col3->add_text
EXPORTING
text = lv_text
sap_emphasis = cl_dd_area=>table_heading.
CLEAR:lv_text.
CALL METHOD ps_cl_dd_doc->add_table
EXPORTING
no_of_columns = 3
width = '100%'
cell_background_transparent = space
IMPORTING
table = lcl_ta.
ENDFORM. " built_header
*&---------------------------------------------------------------------*
*& Form fill_internal_tables
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fill_internal_tables .
SELECT pernr nachn vorna GESCH gbdat begda endda FROM pa0002
INTO TABLE gt_display2
UP TO 20 ROWS.
gs_display4-bukrs = '0112'.
gs_display4-belnr = '1090807060'.
gs_display4-gjahr = '2010'.
DO 20 TIMES.
APPEND gs_display4 TO gt_display4.
ENDDO.
ENDFORM. " fill_internal_tables
Thank you
ReplyDelete