Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report Z_RW_TEST
*&
*&---------------------------------------------------------------------*
*& Warum wird bei Auswahl von 'POPUP' keine Tabelle angezeigt?
*&---------------------------------------------------------------------*
REPORT z_rw_test.
DATA:
data TYPE STANDARD TABLE OF seocompo,
container TYPE REF TO cl_gui_container,
salv TYPE REF TO cl_salv_table.
PARAMETERS:
normal RADIOBUTTON GROUP con,
popup RADIOBUTTON GROUP con.
CASE abap_true.
WHEN normal.
DATA(custom_container) = NEW cl_gui_custom_container(
container_name = 'CONTAINER'
repid = sy-repid
dynnr = '100'
).
container = custom_container.
WHEN popup.
DATA(popup_container) = NEW cl_gui_custom_container(
container_name = 'CONTAINER'
repid = sy-repid
dynnr = '100'
).
container = popup_container.
WHEN OTHERS.
ENDCASE.
SELECT * FROM seocompo
INTO TABLE data
UP TO 10 ROWS.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = container
container_name = 'CONTAINER'
IMPORTING
r_salv_table = salv
CHANGING
t_table = data
).
salv->display( ).
IF popup EQ abap_true.
CALL SCREEN 100 STARTING AT 1 1.
ELSE.
CALL SCREEN 100.
ENDIF.
MODULE status_0100 OUTPUT.
IF popup EQ abap_true.
SET PF-STATUS 'TEST_POPUP'.
ELSE.
SET PF-STATUS 'TEST'.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
IF sy-ucomm EQ 'ABORT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
Code: Alles auswählen.
DATA:
data TYPE STANDARD TABLE OF seocompo,
container TYPE REF TO cl_gui_container,
salv TYPE REF TO cl_salv_table.
DATA create_container TYPE flag VALUE 'X'.
PARAMETERS:
normal RADIOBUTTON GROUP con,
popup RADIOBUTTON GROUP con.
SELECT * FROM seocompo
INTO TABLE data
UP TO 10 ROWS.
IF popup EQ abap_true.
CALL SCREEN 110 STARTING AT 1 1. "<<<<<< Modales Dialogfenster
* MODULE PBO UND PAI wie 100
*
ELSE.
CALL SCREEN 100.
ENDIF.
MODULE status_0100 OUTPUT.
IF popup EQ abap_true.
SET PF-STATUS 'TEST_POPUP'.
ELSE.
SET PF-STATUS 'TEST'.
ENDIF.
IF create_container = 'X'.
CASE abap_true.
WHEN normal.
DATA(custom_container) = NEW cl_gui_custom_container(
container_name = 'CONTAINER'
repid = sy-repid
dynnr = '100'
).
container = custom_container.
WHEN popup.
DATA(popup_container) = NEW cl_gui_custom_container(
container_name = 'CONTAINER'
repid = sy-repid
dynnr = '0110'
).
container = popup_container.
WHEN OTHERS.
ENDCASE.
cl_salv_table=>factory( EXPORTING list_display = if_salv_c_bool_sap=>false
r_container = container
container_name = 'CONTAINER'
IMPORTING r_salv_table = salv
CHANGING t_table = data ).
salv->display( ).
clear create_container.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
IF sy-ucomm EQ 'ABORT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
Folgende Benutzer bedankten sich beim Autor edwin für den Beitrag:
ralf.wenzel
Weil der Popup-Level aus irgendeinem Grund wichtig ist. Ich habe auch nie verstanden, warum.ralf.wenzel hat geschrieben: ↑27.03.2020 08:14Das zweite Dynpro brauchts übrigens nicht - aber man möge mir erklären, warum so viel Zeugs in das PBO muss. Da will ich es nämlich gar nicht haben.
Interessant ist, dass sich das nur aufs Popup auswirkt, sowohl Fullscreen als auch Darstellung im Container oder Docking Container geht problemlos mit meinem Programm - nur Popup nicht.
Mit eingeschränkter Funktionalität. Versuch mal mit "add_function" einen Button zur Toolbar hinzuzufügen. Zum Beispiel.a-dead-trousers hat geschrieben: ↑27.03.2020 16:44Muss es denn ein "eigenes" Dynpro sein?
cl_salv_table hat doch von sich aus eine "Popup"-Funktion.
Klar, weil die Buttons im jeweiligen GUI-Status eingefügt werden müssen, den man mit SET_SCREEN_STATUS festlegt.ralf.wenzel hat geschrieben: ↑27.03.2020 17:50Mit eingeschränkter Funktionalität. Versuch mal mit "add_function" einen Button zur Toolbar hinzuzufügen. Zum Beispiel.
Mit den "dynamischen" Funktionscodes im GUI-Status könnte man sowas ähnliches bewerkstelligen. Zwar nicht unbegrenzt (max. 18?) aber dafür weitgehend kompatibel zu deinem Framework sowie ich das verstanden habe. Du musst nur einen "Wrapper" schreiben der die statischen Funktionscodes des GUI-Status in jene umwandelt die deine Subscriber verwenden. Das ist dann sowas ähnliches wie das Toolbar Control arbeitet (FCODE %_GC xx yy => SAVE). Wie man das SET PF-STATUS sauber in dein Objekt-Framework eingliedern kann, überlass ich deiner Phantasie. 😉ralf.wenzel hat geschrieben: ↑28.03.2020 09:28Ich wünschte nur, mit der Toolbar vom Dynpro ginge das ähnlich, aber da habe ich noch keinen Weg gefunden, mit diesem recht einfachen Weg (mit hoher Kapselung, massiver Wiederverwendung, etc.) „meinen“ Mechanismus wiederzuverwenden.
Shit. Da hast du natürlich recht.ralf.wenzel hat geschrieben: ↑30.03.2020 13:44Das Problem ist: Wenn ich "Dummy-Funktionscodes" in einem Status definiere (F01, F02, ....) muss ich die hart mit einer Funktionstaste verdrahten. Das ist aber ungünstig, weil "Detail" sollte immer F2 haben, egal wo in der Toolbar das Icon dafür ist. Die Position des Icons mit der Funktionstaste zu belegen, ist die denkbar schlechteste Lösung.
Oder habe ich dich falsch verstanden?