Code: Alles auswählen.
module USER_COMMAND_0100 input.
Ja, mich auch! Das ist das erste mal, dass ich davon gehört habebeterman hat geschrieben:In vielen Büchern gibt es Beispiele wie oben. Also MODULE werden in der Dynopro-Ablauflogik implementiert. Es irritiert mich.
Was hat nicht richtig funktioniert? Vielleicht können wir dir hier bei diesem Problem weiterhelfen.beterman hat geschrieben:Ich hatte vorher genau so gemacht, wie du beschrieben hast. Mein Programmablauf funktionierte aber nicht richtig.
Dann hättest Du den Fehler suchen müssen.beterman hat geschrieben:Ich hatte vorher genau so gemacht, wie du beschrieben hast. Mein Programmablauf funktionierte aber nicht richtig.
Code: Alles auswählen.
IF sy-subrc <> 0.
Also ich habe ja schon einige Bücher gelesen.Deswegen habe ich entschieden, wie oben zu programmieren. In vielen Büchern gibt es Beispiele wie oben. Also MODULE werden in der Dynopro-Ablauflogik implementiert. Es irritiert mich.
Code: Alles auswählen.
REPORT ZZ09_WS12_PRKT_4.
TABLES ZZ09_WS12_TAB31A.
TABLES ZZ09_WS12_TAB31B. * relevante Tabelle für Reiseinformationen
DATA ok_code TYPE sy-ucomm.
*ALV-Grid List
DATA: gs_layout TYPE lvc_s_layo,
refcont1 TYPE REF TO cl_gui_custom_container,
refgrid TYPE REF TO cl_gui_alv_grid.
* Interne Tabelle
DATA:
it_reisen TYPE STANDARD TABLE OF ZZ09_WS12_TAB31B.
* Struktur für Reisedatensatz
DATA wa_reise TYPE ZZ09_WS12_TAB31B.
CALL SCREEN '0100'.
INCLUDE ZZ09_WS12_PRKT_4_STATUS_010O03.
INCLUDE ZZ09_WS12_PRKT_4_GRIDLIST_0O03.
INCLUDE ZZ09_WS12_PRKT_4_STATUS_010O04.
INCLUDE ZZ09_WS12_PRKT_4_LOAD_DATA_O01.
INCLUDE ZZ09_WS12_PRKT_4_USER_COMMAI04.
INCLUDE ZZ09_WS12_PRKT_4_USER_COMMAI05.
INCLUDE ZZ09_WS12_PRKT_4_EXIT_COMMAI03.
Code: Alles auswählen.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE. " STATUS_0100 OUTPUT
Code: Alles auswählen.
MODULE GRIDLIST_0100 OUTPUT.
IF refcont1 IS INITIAL.
CREATE OBJECT refcont1
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT refgrid
EXPORTING
i_parent = refcont1.
CALL METHOD refgrid->set_table_for_first_display
EXPORTING i_structure_name = 'ZZ09_WS12_TAB31B'
is_layout = gs_layout
CHANGING it_outtab = it_reisen.
CALL METHOD refgrid->set_toolbar_interactive.
ELSE.
* Hole Daten und transfer in Interne Tabelle
IF NOT ZZ09_WS12_TAB31B-COMP IS INITIAL.
SELECT * FROM ZZ09_WS12_TAB31B INTO TABLE it_reisen WHERE comp = ZZ09_WS12_TAB31B-COMP.
ENDIF.
* Bei Änderungen muss die Tabelle aktualisiert werden
CALL METHOD refgrid->refresh_table_display.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = refgrid.
ENDMODULE. " GRIDLIST_0100 OUTPUT
Code: Alles auswählen.
MODULE STATUS_0101 OUTPUT.
SET PF-STATUS '0101'.
SET TITLEBAR '0101'.
ENDMODULE. " STATUS_0101 OUTPUT
Code: Alles auswählen.
MODULE LOAD_DATA_0101 OUTPUT.
SELECT SINGLE * FROM ZZ09_WS12_TAB31B INTO wa_reise WHERE REISENR = ZZ09_WS12_TAB31B-REISENR.
MOVE-CORRESPONDING wa_reise TO ZZ09_WS12_TAB31B.
ENDMODULE. " LOAD_DATA_0101 OUTPUT
Code: Alles auswählen.
MODULE USER_COMMAND_0101 INPUT.
SELECT SINGLE * FROM ZZ09_WS12_TAB31B INTO wa_reise WHERE REISENR = ZZ09_WS12_TAB31B-REISENR.
IF ok_code = 'EXIT'.
SET SCREEN '0'.
ENDIF.
IF ok_code = 'BOOK' AND NOT wa_reise-STATUS = 2.
UPDATE ZZ09_WS12_TAB31B SET STATUS = 1.
ENDIF.
IF ok_code = 'CANCEL' AND wa_reise-STATUS = 1.
UPDATE ZZ09_WS12_TAB31B SET STATUS = 2.
ENDIF.
CLEAR ok_code.
ENDMODULE. " USER_COMMAND_0101 INPUT
Code: Alles auswählen.
MODULE USER_COMMAND_0100 INPUT.
* Reisedetail Steuerung
IF ok_code = 'MODIFY' AND NOT ZZ09_WS12_TAB31B-REISENR IS INITIAL.
* Transaktion sperren (Sperrobjekt)
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
CALL SCREEN '0101' STARTING AT 10 10.
ENDIF.
ENDIF.
CLEAR ok_code.
ENDMODULE. " USER_COMMAND_0100 INPUT
Code: Alles auswählen.
MODULE EXIT_COMMAND_0100 INPUT.
IF ok_code = 'EXIT'.
LEAVE TO SCREEN 0.
SET SCREEN 0.
ENDIF.
CLEAR ok_code.
ENDMODULE. " EXIT_COMMAND_0100 INPUT