Code: Alles auswählen.
module STATUS_0001 output.
set pf-status 'STATUS_0001'.
set titlebar 'STATUS_0001'.
if custom_container1 is initial.
* create a custom container control for our ALV Control
create object custom_container1
exporting
container_name = 'CUST_CONT'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc ne 0.
* add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
titel = sy-repid
txt2 = sy-subrc
txt1 = 'Container1 could not be created!'.
endif.
endif.
* create an instance of salv control
perform display_all_tables.
call method custom_container1->link
exporting
repid = sy-repid
dynnr = '0001'
* container =
exceptions
cntl_error = 1
cntl_system_error = 2
lifetime_dynpro_dynpro_link = 3
others = 4.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
Code: Alles auswählen.
form display_all_tables.
data:
lo_events type ref to cl_salv_events_table,
lo_columns type ref to cl_salv_columns_table,
lo_column type ref to cl_salv_column_table,
gr_layout type ref to cl_salv_layout.
data: lr_color_col type lvc_s_colo.
data g_f_grid type ref to cl_salv_form_layout_grid.
try.
call method cl_salv_table=>factory
exporting
r_container = custom_container1
container_name = 'CUST_CONT'
importing
r_salv_table = lo_table
changing
t_table = g_s_resulttable.
lo_events = lo_table->get_event( ).
set handler demo=>on_double_click for lo_events.
.
.
.
.
lo_table->display( ).
endform.
tatsächlich, ALV erscheint, wenn ich den Container weglasse. Ich habe mich an dieses Wikia-dead-trousers hat geschrieben:hi!
Ich glaub du musst die Custom-Container-Klasse komplett weglassen. Das macht meines Wissens alles der SALV.
lg ADT
Die Schnittstelle kann eigentlich nicht wirklich weiterhelfen. Ich habe es jetzt hin bekommen, allerdings musste ich einiges 'tricksen' bis es funktionierte.a-dead-trousers hat geschrieben:Schau dir einfach mal die Schnittstelle von CL_SALV_TABLE=>FACTORY an.
Das sollte eigentlich alles erklären.
Code: Alles auswählen.
module status_0001 output.
set pf-status 'STATUS_0001'.
set titlebar 'STATUS_0001'.
if custom_container1 is initial.
* create a custom container control for our ALV Control
create object custom_container1
exporting
container_name = 'MY_CC'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc ne 0.
* add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
titel = sy-repid
txt2 = sy-subrc
txt1 = 'Container1 could not be created!'.
endif.
* create an instance of salv control
perform display_all_tables.
call method custom_container1->link
exporting
repid = sy-repid
dynnr = '0001'
* container =
exceptions
cntl_error = 1
cntl_system_error = 2
lifetime_dynpro_dynpro_link = 3
others = 4.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
else.
lo_table->refresh( ).
endif.
endmodule.
Code: Alles auswählen.
module status_0002 output.
data lf_layout type LVC_S_LAYO.
lf_layout-info_fname = 'LINECOLOR'.
set pf-status 'STATUS_0002'.
set titlebar 'STATUS_0002'.
create object custom_container2
exporting
container_name = 'MY_CC2'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc ne 0.
* add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
titel = sy-repid
txt2 = sy-subrc
txt1 = 'Container2 could not be created!'.
endif.
create object grid_alv
exporting
* i_parent = cl_gui_custom_container=>screen0.
i_parent = custom_container2.
call method grid_alv->set_table_for_first_display
exporting
i_structure_name = gf_current_table
is_layout = lf_layout
changing
it_outtab = <complete>.
endmodule. " STATUS_0002 OUTPUT
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Spookykid
Ne, das ist so gewollt, dass ich zuerst die klasse cl_gui_alv_grid und dann cl_salv_table verwende. Dürfte ja eigentlich kein Problem darstellen, oder?Unit605 hat geschrieben:Kann es sein, daß Du da irgendetwas durcheinandergewürfelt hast?
Es gibt auf der Seite von Deinem Link zwei Reports: ZUS_SDN_TWO_ALV_GRIDS und ZUS_SDN_TWO_SALV_GRIDS.
Code: Alles auswählen.
module user_command_0002 input.
case ok_code.
when 'INFO'.
call function 'DSYS_SHOW_FOR_F1HELP'
exporting
dokclass = 'RE'
dokname = 'ZP1_LANGUAGE_ANALYZER'
short_text = 'X'
exceptions
others = 1.
clear ok_code.
when 'BACK'.
custom_container2->free( ).
clear ok_code.
set screen 0001.
when 'EXIT'.
leave program.
endcase.
So habe ich das auch getan. Ich fand es nur etwas merkwürdig, dass ich zuvor im Screen ein CC Element anlegen muss. Hatte Beispiele zum docking_container gelesen und dort ist das halt nicht notwendig.a-dead-trousers hat geschrieben:hi!
Ganz einfach:
Du brauchst 2 dynpros mit jeweils einem CustomContainer. Zu beiden instanzierst du ein Objekt der Klasse CL_GUI_CUSTOM_CONTAINER. Lass das mit dem LINK-Aufruf weg (hat bei mir nur immer zu Problemen geführt). Die Instanzen der Klasse übergibst du in der Factory-Methode des SALV mit dem Parameter R_CONTAINER.
bei Doppelklcik musst du dann nur das 2te Dynpro mittels CALL SCREEN aufrufen. Fertig.
lg ADT
Code: Alles auswählen.
module user_command_0002 input.
case ok_code.
when 'INFO'.
call function 'DSYS_SHOW_FOR_F1HELP'
exporting
dokclass = 'RE'
dokname = 'ZP1_LANGUAGE_ANALYZER'
short_text = 'X'
exceptions
others = 1.
clear ok_code.
custom_container2->free( ).
when 'BACK'.
custom_container2->free( ).
set screen 0001.
when 'EXIT'.
leave program.
endcase.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Spookykid