Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Cannot scroll when displaying 2 tables in a container split in 3 rows.

stinkfist
Discoverer
0 Likes
1,861

I have a container with 3 rows and 1 column.
I'm trying to display 2 tables in the last 2 rows and in the first row it will appear a string if have results in one query.

I all appear to work fine, but the screen freezs and i cant make scrool down or even select a line.

This is my full program I will apreciate the help.
Thank You

TABLES: zpp_batch_res_t,
ltak,
ltap.

DATA: o_splitter_main TYPE REF TO cl_gui_splitter_container,
o_container_top TYPE REF TO cl_gui_container,
o_container_middle TYPE REF TO cl_gui_container,
o_container_bottom TYPE REF TO cl_gui_container,
o_container_left TYPE REF TO cl_gui_container,
lv_batcheletricas TYPE string,
lv_batchstring TYPE string,
lv_textstring TYPE string,
lv_text TYPE sdydo_text_element.

CONSTANTS: lc_separator TYPE char1 VALUE ';',
lc_text TYPE string VALUE 'Estes BATCHS são de bicicletas elétrcas:',
lc_textWarning TYPE sdydo_text_element VALUE 'Atenção nos BATCH de bicicletas elétricas os movimentos de reforço não são considerados'.

SELECTION-SCREEN BEGIN OF BLOCK b01.

SELECT-OPTIONS so_batch FOR zpp_batch_res_t-batch NO INTERVALS.
SELECT-OPTIONS so_matnr FOR ltap-matnr NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b01.

START-OF-SELECTION.

*Query para saber se é um batch para bike elétrica
SELECT DISTINCT a~batch
FROM zpp_batch_of_t AS a
INNER JOIN afpo AS b ON b~aufnr EQ a~ofnr
INNER JOIN crhd AS c ON c~arbpl EQ b~verid
WHERE a~batch IN @so_batch
AND c~stand EQ 'ELETRICAS'
INTO TABLE @DATA(lt_verid).


* Vem de fora do SGA
SELECT DISTINCT a~batch, a~rsnum, b~benum, c~matnr, c~tanum, c~nista
FROM zpp_batch_res_t AS a
INNER JOIN ltak AS b ON b~benum EQ a~rsnum
INNER JOIN ltap AS c ON c~tanum EQ b~tanum
WHERE a~batch IN @so_batch
AND c~matnr IN @so_matnr
INTO TABLE @DATA(lt_batch).


* Vem do SGA
SELECT a~xblnr, b~matnr, SUM( b~menge ) AS menge, b~meins
FROM mkpf AS a
INNER JOIN mseg AS b ON b~mblnr EQ a~mblnr
WHERE a~xblnr IN @so_batch
AND ( b~bwart EQ '311' OR b~bwart EQ '312' )
AND b~matnr IN @so_matnr
AND b~xauto EQ @abap_false
GROUP BY a~xblnr, b~matnr, menge, b~meins
INTO TABLE @DATA(lt_sga).

IF lt_verid IS NOT INITIAL.

LOOP AT lt_verid ASSIGNING FIELD-SYMBOL(<batch>).
lv_batchstring = <batch>.
IF lv_batcheletricas IS NOT INITIAL.
lv_batcheletricas = lv_batcheletricas && lc_separator && lv_batchstring.
ELSE.
lv_batcheletricas = lv_batchstring.
ENDIF.
ENDLOOP.

* Set new splitter container
o_splitter_main = NEW #( parent = cl_gui_container=>default_screen
no_autodef_progid_dynnr = abap_true
rows = 3
columns = 1 ).

* get references of container 1, 2 & 2
o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
o_splitter_main->set_row_height( id = 1 height = 7 ).
o_container_top = o_splitter_main->get_container( row = 1 column = 1 ).
o_container_middle = o_splitter_main->get_container( row = 2 column = 1 ).
o_container_bottom = o_splitter_main->get_container( row = 3 column = 1 ).


* set dd_document (lt_verid)
DATA : o_alvgrid_top TYPE REF TO cl_dd_document.

* create object and data for Top of Page summary
CREATE OBJECT o_alvgrid_top
EXPORTING
background_color = o_alvgrid_top->col_background_level2.

CONCATENATE lc_text lv_batchstring INTO lv_textString SEPARATED BY space.
lv_text = lv_textstring.
o_alvgrid_top->add_text( EXPORTING
text = lv_text
sap_fontsize = o_alvgrid_top->medium
sap_color = o_alvgrid_top->list_key_inv
sap_emphasis = o_alvgrid_top->strong ).


o_alvgrid_top->new_line( ).
o_alvgrid_top->add_text( EXPORTING
text = lc_textWarning
sap_fontsize = o_alvgrid_top->medium
sap_color = o_alvgrid_top->list_negative_inv
sap_emphasis = o_alvgrid_top->strong ).

* show dd_document
o_alvgrid_top->display_document( EXPORTING
parent = o_container_top ).


* set SALV_Table 1 (lt_batch) - middle container
DATA: o_salv_middle TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_middle
IMPORTING
r_salv_table = o_salv_middle
CHANGING
t_table = lt_batch ).

* default settings SALV table
o_salv_middle->get_functions( )->set_all( abap_true ).
o_salv_middle->get_columns( )->set_optimize( abap_true ).
o_salv_middle->get_display_settings( )->set_list_header( 'Fora do SGA' ).
o_salv_middle->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_middle->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid middle
o_salv_middle->display( ).



* set SALV_Table 2 (lt_sga) - bottom container
DATA: o_salv_bottom TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_bottom
IMPORTING
r_salv_table = o_salv_bottom
CHANGING
t_table = lt_sga ).

* default settings SALV table
o_salv_bottom->get_functions( )->set_all( abap_true ).
o_salv_bottom->get_columns( )->set_optimize( abap_true ).
o_salv_bottom->get_display_settings( )->set_list_header( 'A partir do SGA' ).
o_salv_bottom->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_bottom->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid bottom
o_salv_bottom->display( ).


* Force the default screen output
WRITE: space.

ELSE.
* Set new splitter container
o_splitter_main = NEW #( parent = cl_gui_container=>default_screen
no_autodef_progid_dynnr = abap_true
rows = 2
columns = 1 ).

* get references of container 1, 2 & 2
o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
o_container_top = o_splitter_main->get_container( row = 1 column = 1 ).
o_container_bottom = o_splitter_main->get_container( row = 2 column = 1 ).

* set SALV_Table 1 (lt_batch) - middle container
DATA: o_salv_top TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_top
IMPORTING
r_salv_table = o_salv_top
CHANGING
t_table = lt_batch ).

* default settings SALV table
o_salv_top->get_functions( )->set_all( abap_true ).
o_salv_top->get_columns( )->set_optimize( abap_true ).
o_salv_top->get_display_settings( )->set_list_header( 'Fora do SGA' ).
o_salv_top->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_top->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid middle
o_salv_top->display( ).



* set SALV_Table 2 (lt_sga) - bottom container

cl_salv_table=>factory( EXPORTING
r_container = o_container_bottom
IMPORTING
r_salv_table = o_salv_bottom
CHANGING
t_table = lt_sga ).

* default settings SALV table
o_salv_bottom->get_functions( )->set_all( abap_true ).
o_salv_bottom->get_columns( )->set_optimize( abap_true ).
o_salv_bottom->get_display_settings( )->set_list_header( 'A partir do SGA' ).
o_salv_bottom->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_bottom->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid bottom
o_salv_bottom->display( ).


* Force the default screen output
WRITE: space.

ENDIF.

I have a container with 3 rows and 1 column.
I'm trying to display 2 tables in the last 2 rows and in the first row it will appear a string if have results in one query.

I all appear to work fine, but the screen freezs and i cant make scrool down or even select a line.

This is my full program I will apreciate the help.
Thank You

TABLES: zpp_batch_res_t,
ltak,
ltap.

DATA: o_splitter_main TYPE REF TO cl_gui_splitter_container,
o_container_top TYPE REF TO cl_gui_container,
o_container_middle TYPE REF TO cl_gui_container,
o_container_bottom TYPE REF TO cl_gui_container,
o_container_left TYPE REF TO cl_gui_container,
lv_batcheletricas TYPE string,
lv_batchstring TYPE string,
lv_textstring TYPE string,
lv_text TYPE sdydo_text_element.

CONSTANTS: lc_separator TYPE char1 VALUE ';',
lc_text TYPE string VALUE 'Estes BATCHS são de bicicletas elétrcas:',
lc_textWarning TYPE sdydo_text_element VALUE 'Atenção nos BATCH de bicicletas elétricas os movimentos de reforço não são considerados'.

SELECTION-SCREEN BEGIN OF BLOCK b01.

SELECT-OPTIONS so_batch FOR zpp_batch_res_t-batch NO INTERVALS.
SELECT-OPTIONS so_matnr FOR ltap-matnr NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b01.

START-OF-SELECTION.

*Query para saber se é um batch para bike elétrica
SELECT DISTINCT a~batch
FROM zpp_batch_of_t AS a
INNER JOIN afpo AS b ON b~aufnr EQ a~ofnr
INNER JOIN crhd AS c ON c~arbpl EQ b~verid
WHERE a~batch IN @so_batch
AND c~stand EQ 'ELETRICAS'
INTO TABLE @DATA(lt_verid).


* Vem de fora do SGA
SELECT DISTINCT a~batch, a~rsnum, b~benum, c~matnr, c~tanum, c~nista
FROM zpp_batch_res_t AS a
INNER JOIN ltak AS b ON b~benum EQ a~rsnum
INNER JOIN ltap AS c ON c~tanum EQ b~tanum
WHERE a~batch IN @so_batch
AND c~matnr IN @so_matnr
INTO TABLE @DATA(lt_batch).


* Vem do SGA
SELECT a~xblnr, b~matnr, SUM( b~menge ) AS menge, b~meins
FROM mkpf AS a
INNER JOIN mseg AS b ON b~mblnr EQ a~mblnr
WHERE a~xblnr IN @so_batch
AND ( b~bwart EQ '311' OR b~bwart EQ '312' )
AND b~matnr IN @so_matnr
AND b~xauto EQ @abap_false
GROUP BY a~xblnr, b~matnr, menge, b~meins
INTO TABLE @DATA(lt_sga).

IF lt_verid IS NOT INITIAL.

LOOP AT lt_verid ASSIGNING FIELD-SYMBOL(<batch>).
lv_batchstring = <batch>.
IF lv_batcheletricas IS NOT INITIAL.
lv_batcheletricas = lv_batcheletricas && lc_separator && lv_batchstring.
ELSE.
lv_batcheletricas = lv_batchstring.
ENDIF.
ENDLOOP.

* Set new splitter container
o_splitter_main = NEW #( parent = cl_gui_container=>default_screen
no_autodef_progid_dynnr = abap_true
rows = 3
columns = 1 ).

* get references of container 1, 2 & 2
o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
o_splitter_main->set_row_height( id = 1 height = 7 ).
o_container_top = o_splitter_main->get_container( row = 1 column = 1 ).
o_container_middle = o_splitter_main->get_container( row = 2 column = 1 ).
o_container_bottom = o_splitter_main->get_container( row = 3 column = 1 ).


* set dd_document (lt_verid)
DATA : o_alvgrid_top TYPE REF TO cl_dd_document.

* create object and data for Top of Page summary
CREATE OBJECT o_alvgrid_top
EXPORTING
background_color = o_alvgrid_top->col_background_level2.

CONCATENATE lc_text lv_batchstring INTO lv_textString SEPARATED BY space.
lv_text = lv_textstring.
o_alvgrid_top->add_text( EXPORTING
text = lv_text
sap_fontsize = o_alvgrid_top->medium
sap_color = o_alvgrid_top->list_key_inv
sap_emphasis = o_alvgrid_top->strong ).


o_alvgrid_top->new_line( ).
o_alvgrid_top->add_text( EXPORTING
text = lc_textWarning
sap_fontsize = o_alvgrid_top->medium
sap_color = o_alvgrid_top->list_negative_inv
sap_emphasis = o_alvgrid_top->strong ).

* show dd_document
o_alvgrid_top->display_document( EXPORTING
parent = o_container_top ).


* set SALV_Table 1 (lt_batch) - middle container
DATA: o_salv_middle TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_middle
IMPORTING
r_salv_table = o_salv_middle
CHANGING
t_table = lt_batch ).

* default settings SALV table
o_salv_middle->get_functions( )->set_all( abap_true ).
o_salv_middle->get_columns( )->set_optimize( abap_true ).
o_salv_middle->get_display_settings( )->set_list_header( 'Fora do SGA' ).
o_salv_middle->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_middle->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid middle
o_salv_middle->display( ).



* set SALV_Table 2 (lt_sga) - bottom container
DATA: o_salv_bottom TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_bottom
IMPORTING
r_salv_table = o_salv_bottom
CHANGING
t_table = lt_sga ).

* default settings SALV table
o_salv_bottom->get_functions( )->set_all( abap_true ).
o_salv_bottom->get_columns( )->set_optimize( abap_true ).
o_salv_bottom->get_display_settings( )->set_list_header( 'A partir do SGA' ).
o_salv_bottom->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_bottom->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid bottom
o_salv_bottom->display( ).


* Force the default screen output
WRITE: space.

ELSE.
* Set new splitter container
o_splitter_main = NEW #( parent = cl_gui_container=>default_screen
no_autodef_progid_dynnr = abap_true
rows = 2
columns = 1 ).

* get references of container 1, 2 & 2
o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
o_container_top = o_splitter_main->get_container( row = 1 column = 1 ).
o_container_bottom = o_splitter_main->get_container( row = 2 column = 1 ).

* set SALV_Table 1 (lt_batch) - middle container
DATA: o_salv_top TYPE REF TO cl_salv_table.

cl_salv_table=>factory( EXPORTING
r_container = o_container_top
IMPORTING
r_salv_table = o_salv_top
CHANGING
t_table = lt_batch ).

* default settings SALV table
o_salv_top->get_functions( )->set_all( abap_true ).
o_salv_top->get_columns( )->set_optimize( abap_true ).
o_salv_top->get_display_settings( )->set_list_header( 'Fora do SGA' ).
o_salv_top->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_top->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid middle
o_salv_top->display( ).



* set SALV_Table 2 (lt_sga) - bottom container

cl_salv_table=>factory( EXPORTING
r_container = o_container_bottom
IMPORTING
r_salv_table = o_salv_bottom
CHANGING
t_table = lt_sga ).

* default settings SALV table
o_salv_bottom->get_functions( )->set_all( abap_true ).
o_salv_bottom->get_columns( )->set_optimize( abap_true ).
o_salv_bottom->get_display_settings( )->set_list_header( 'A partir do SGA' ).
o_salv_bottom->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv_bottom->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* show SALV-Grid bottom
o_salv_bottom->display( ).


* Force the default screen output
WRITE: space.

ENDIF.
4 REPLIES 4
Read only

jens_michaelsen
Participant
1,800

The system seems to haye any problems with

o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
Read only

Sandra_Rossi
Active Contributor
0 Likes
1,800

I see that you spent some time to (try to) make it a minimal reproducible example to get a faster assistance.

If you can do a last change to your code to replace your custom table zpp_batch_res_t, I would be happy to quickly look at it.

Read only

stinkfist
Discoverer
0 Likes
1,800

Thank You, I change to mode_absulute and solve the problem.

Read only

jens_michaelsen
Participant
0 Likes
1,800

With method SET_MODE of cl_gui_splitter_container you can toggle the control between design mode and run mode. All you need is another method called SET_ROW_MODE