Code: Alles auswählen.
SET PARAMETER ID 'XUS' FIELD Usr01-bname.
CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
Erste Möglichkeit ist CALL TRANSACTION mit BatchInput.5Jacken hat geschrieben:Aber die Transaktion "SU01" schreitet nur durch Drücken eines Buttons oder durch Drücken von "F7 (Anzeigen)" weiter.
Code: Alles auswählen.
if i = 0.
Simuliere hier einen Tastendruck.
endif.
Nicht ganz. Denn um das gewünschte Verhalten zu erreichen muss { options-dismode | mode } auf 'E' gesetzt werden.black_adept hat geschrieben:die Antwort von JHM ist absolut ausreichend [...]
Oder Modus "N" verwenden und erst wenn man auf dem Zieldynpro angekommen ist auf "E" oder "A" umschalten was ich für sauberer halte.ewx hat geschrieben:Nicht ganz. Denn um das gewünschte Verhalten zu erreichen muss { options-dismode | mode } auf 'E' gesetzt werden.black_adept hat geschrieben:die Antwort von JHM ist absolut ausreichend [...]
Du verwirrst mich...black_adept hat geschrieben: Oder Modus "N" verwenden und erst wenn man auf dem Zieldynpro angekommen ist auf "E" oder "A" umschalten was ich für sauberer halte.
Demo: Bei echt unerwartetem Fehler ( z.B. User gesperrt ) gibt es eine Fehlermeldung, ansonsten wird der User auf den Zielbildschirm geführt und dort dann auf Modus "E" umgeschaltet, was dann sofort zum Anzeigen des Zieldynros führt.ewx hat geschrieben:Bist du dir sicher, dass du den Mode zwischendurch wechseln kannst?
Code: Alles auswählen.
DATA: ls_opt TYPE ctu_params,
lt_messages TYPE STANDARD TABLE OF bdcmsgcoll,
ls_message LIKE LINE OF lt_messages,
worst_message LIKE ls_message.
PERFORM bdc_dynpro USING 'SAPLSUU5' '0050'.
PERFORM bdc_field USING 'USR02-BNAME' p_uname.
PERFORM bdc_field USING 'BDC_OKCODE' '=CHAN'.
PERFORM bdc_dynpro USING 'SAPLSUU5' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE' '/bde'. " Umschalten auf Modus "E"
PERFORM bdc_dynpro USING 'SAPLSUU5' '0050'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EBACK'.
ls_opt-dismode = 'N'.
ls_opt-updmode = 'S'.
CALL TRANSACTION 'SU01' USING bdcdata OPTIONS FROM ls_opt MESSAGES INTO lt_messages.
IF sy-subrc <> 0.
MESSAGE 'Error - Reason follows in next message' TYPE 'I'.
LOOP AT lt_messages INTO ls_message.
IF worst_message IS INITIAL.
worst_message = ls_message.
ENDIF.
IF ls_message-msgtyp = 'E' OR
ls_message-msgtyp = 'A' OR
ls_message-msgtyp = 'X'.
worst_message = ls_message.
EXIT.
ENDIF.
ENDLOOP.
MESSAGE ID worst_message-msgid TYPE 'I' NUMBER worst_message-msgnr
WITH worst_message-msgv1 worst_message-msgv2 worst_message-msgv3 worst_message-msgv4.
ENDIF.