Hi,
Ich bastel gerade an einem Programm, in welcher ich ähnlich zur "MIGO"-Transaktion ein Haupt-Dynpro habe, welches sowohl Eingabebildschirm, als auch Ausgabebildschirm ist. Dazu biete ich ein Texteingabefeld in welchem der Benutzer eine Bestellnummer eingibt und die Datenselektion mit 'Enter' starten kann.
Im PAI Modul frage ich dazu sy-ucom ab und starte im Anschluss die Datenselektion. Zu diesem Zeitpunkt kann ich bereits die Ausgabefelder auf dem Dynpro füllen.
Im PBO Module setze ich die Titelleiste mit "SET TITLEBAR" aktiv, sodass der Benutzer auch gleich die vorher eingegebene Bestellnummer im Titel wiederfindet (analog zur MIGO).
Jetzt stoße ich allerdings auf das Problem, dass ich das Texteingabefeld, in welchem der Benutzer zuvor die Bestellnummer eingegeben hat nicht mehr clearen kann.
Der Hintergrund ist, dass ich das Feld für eine erneute Freigabe bereinigen möchte.
Code: Alles auswählen.
MODULE pai_2000 INPUT.
CASE ok_code.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
**Starte Selektion wenn "ENTER" oder "OK BUTTON" bestätigt wurde.
IF sy-ucomm = 'SEL_DATA' AND d_po_number <> ''.
PERFORM pruefe_bestellnummer.
clear d_po_number. "Funktioniert nicht
ENDIF.
CLEAR ok_code.
ENDMODULE.
Code: Alles auswählen.
MODULE pbo_2000 OUTPUT.
clear d_po_number. "Funktioniert hier auch nicht
SET PF-STATUS 'MAIN2000'.
SET TITLEBAR 'MAIN2000E' of Program 'ZRM3000' with d_po_number '101'.
ENDMODULE.
Zum Zeitpunkt der INITIALIZATION kann ich die Felder frei vor belegen. Allerdings ist nach Benutzereingabe das Dynpro ja schon aufgerufen und die Initialisierung längst abgeschlossen. Ich habe irgendwie einen Knoten im Kopf.
Ich möchte also ein Feld zur Eingabe anbieten, nach einem 'ENTER' den Feldwert übernehmen und ihn anschließend im Dynpro wieder entfernen.
Hier der IST-Zustand:
Und der SOLL-Zustand:
LG Level