2023 Nov 30 1:39 PM
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.
2023 Nov 30 3:07 PM
The system seems to haye any problems with
o_splitter_main->set_mode( mode = o_splitter_main->mode_relative ).
2023 Nov 30 5:03 PM
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.
2023 Dec 01 9:59 AM
2023 Dec 04 11:20 AM
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
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |