"WRITE" wird übersprungen.

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

"WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) » 28.09.2017 11:33
Hallo Liebes ABAP Forum,

Mein Problem ist, dass mein "WRITE: /'.......'." Befehl übersprungen wird,
ich habe mehrere Wege versucht dies zu lösen, komme jedoch nicht drauf.

Bitte habt gnade mit mir, ich lerne erst seit einer Woche ABAP. :)

Hier der Quellcode:

PARAMETER: gv_sys TYPE i.
DATA: gv_eingabe TYPE i.

WRITE:/'Bitte geben sie eine Zahl für das entsprechende System Feld ein: ',gv_eingabe,
/'1 = sy-mandt',
/'2 = sy-uname',
/'3 = sy-langu',
/'4 = sy-datum',
/'5 = sy-uzeit',
/'6 = sy-tcode',
/'7 = sy-repid',
/'8 = sy-index',
/'9 = sy-subrc'.

MOVE gv_eingabe TO gv_sys.

IF gv_sys = 1.
WRITE sy-mandt.
ENDIF.
IF gv_sys = 2.
WRITE sy-uname.
ENDIF.
IF gv_sys = 3.
WRITE sy-langu.
ENDIF.
IF gv_sys = 4.
WRITE sy-datum.
ENDIF.
IF gv_sys = 5.
WRITE sy-uzeit.
ENDIF.
IF gv_sys = 6.
WRITE sy-tcode.
ENDIF.
IF gv_sys = 7.
WRITE sy-repid.
ENDIF.
IF gv_sys = 8.
WRITE sy-index.
ENDIF.
IF gv_sys = 9.
WRITE sy-subrc.
ENDIF.


Vielen Dank für ihre Antworten.

PS: Wenn ich das Programm ausführe, kommt immer zuerst die Eingabe in Verbindung mit dem PARAMETER WERT.
gv_sys ____


Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1436 / 156 / 329 ) » 28.09.2017 11:39
Na ja, Du schreibst erst:

PARAMETER: gv_sys TYPE i.

und später:

MOVE gv_eingabe TO gv_sys.

Was denkst Du, was mit dem vom Benutzer in den Parameter gv_sys eingegebenen Wert bei diesem MOVE passiert? ;-)

gv_eingabe deklarierst Du per DATA ohne Defaultwert, damit ist es zunächst mal 0. Dann gibst Du es mit einem (sinnlosen) Write aus, was nichts daran ändert, dass es 0 ist.

Du solltest Dir übrigens angewöhnen, mit dem Debugger zu arbeiten (Breakpoints setzen oder gleich von Anfang an mit Debugger ausführen). Dann wirst Du solche Fragen nicht mehr stellen, weil Du selbst sehen wirst, was im Programm passiert.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) » 28.09.2017 11:46
Wie wurdest du den Quellcode deiner Meinung nach verbessern?

Mfg

Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1436 / 156 / 329 ) » 28.09.2017 12:07
Die Variable gv_eingabe ersatzlos aus dem Programm entfernen, die dient keinem erkennbaren Zweck.

Da WRITE nur bei Ergebnisbildern funktioniert, nicht aber beim Selektionsbild, den ersten Write gleichfalls entfernen und bei Bedarf durch Zeilen der Form

SELECTION-SCREEN COMMENT 1(80) TEXT-K01. SKIP.
SELECTION-SCREEN COMMENT 1(80) TEXT-K02. SKIP.
SELECTION-SCREEN COMMENT 1(80) TEXT-K03. SKIP.
...

ersetzen, wobei Du die Textzeilen K01, K02, ... dann bei den Textsymbolen des Reports definierst. (in der Quellcodeansicht der SE38 Menü Springen -> Textelemente)

Der MOVE fliegt auch ersatzlos raus, und dann funktioniert das.

Am besten, Du schreibst vor dem IF-Befehl noch den Befehl

START-OF-SELECTION.

Der ist zwar in vielen Fällen nicht obligatorisch, doch manchmal führt sein Fehlen doch zu seltsamen Effekten, und auch optisch trennt er den Selektionsbildbereich von dem Code, der bei Programmausführung abgearbeitet wird.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1436 / 156 / 329 ) » 28.09.2017 12:14
Ach ja, und die endlose IF-Kette würde ich durch einen CASE-Befehl ersetzen.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) » 28.09.2017 13:23
Ich habe mein Quellcode jetzt so verändert:

PARAMETER gv_sys TYPE i.

SELECTION-SCREEN COMMENT 1(80) text-001. SKIP.
SELECTION-SCREEN COMMENT 2(80) text-002. SKIP.
SELECTION-SCREEN COMMENT 3(80) text-003. SKIP.
SELECTION-SCREEN COMMENT 4(80) text-004. SKIP.
SELECTION-SCREEN COMMENT 5(80) text-005. SKIP.
SELECTION-SCREEN COMMENT 6(80) text-006. SKIP.
SELECTION-SCREEN COMMENT 7(80) text-007. SKIP.
SELECTION-SCREEN COMMENT 8(80) text-008. SKIP.
SELECTION-SCREEN COMMENT 9(80) text-009. SKIP.

START-OF-SELECTION.

CASE sy-mandt.
WHEN 1.
WRITE sy-mandt.
WHEN 2.
WRITE sy-uname.
WHEN 3.
WRITE sy-langu.
WHEN 4.
WRITE sy-datum.
WHEN 5.
WRITE sy-uzeit.
WHEN 6.
WRITE sy-tcode.
WHEN 7.
WRITE sy-repid.
WHEN 8.
WRITE sy-index.
WHEN 9.
WRITE sy-subrc.
ENDCASE.


Wenn ich jetzt das Programm starte, bekomme ich eine Fehlermeldung. "Fehler beim Generieren des Selektionsbilds "1000" des Reports "!0F_..."
In jeder Text Zeile ist die entsprechende Information.
Bsp: 1. sy-mandt

Ich brauch ja auch noch irgendwie eine Input Eingabe bei den SELECTION-SCREEN COMMENT, damit ich die Zahl der CASE Schleife zuordnen kann.

Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1436 / 156 / 329 ) » 28.09.2017 14:00
Wenn ich jetzt das Programm starte, bekomme ich eine Fehlermeldung. "Fehler beim Generieren des Selektionsbilds "1000" des Reports "!0F_..."
Die kriegst Du weg, wenn Du nach dem PARAMETER-Befehl auch noch einen SKIP. einfügst. SAP macht vor SELECTION-SCREEN COMMENT von sich aus keinen Zeilenumbruch und versucht sonst, den Kommentartext der nächsten Zeile über Deinen bereits auf den Bildschirm ausgegebenen Parameter zu klatschen.

Aus demselben Grund habe ich auch hinter jedem SELECTION-SCREEN COMMENT einen SKIP empfohlen.
Ich brauch ja auch noch irgendwie eine Input Eingabe bei den SELECTION-SCREEN COMMENT, damit ich die Zahl der CASE Schleife zuordnen kann.
Seufz. Dazu ist der PARAMETER-Befehl da, wobei diese Schreibung veraltet ist und die SAP empfiehlt, stattdessen PARAMETERS zu schreiben (was aber keinen Einfluss auf die Funktionsweise hat). Oder wozu hattest Du den PARAMETER-Befehl in Deinen Quellcode geschrieben?

Dementsprechend solltest Du den eingegebenen Parameter auch nutzen und anstelle des offensichtlich sinnlosen

CASE sy-mandt.

lieber

CASE gv_sys.

schreiben.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von ewx (Top Expert / 4261 / 200 / 454 ) » 28.09.2017 14:28
Django90 hat geschrieben: SELECTION-SCREEN COMMENT 1(80) text-001. SKIP.

Code: Alles auswählen.

SELECTION-SCREEN COMMENT /1(80) text-001.
                         ^

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) » 28.09.2017 15:05
Vielen Dank!

Hat alles nach eurer Hilfestellung super geklappt. :)

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Wieso brauche ich hier Klammern?
vor einer Stunde von IHe 2 / 21
SD-Konditionen auslesen
vor einer Stunde von Geggo74 1 / 13
SapScript Frage
Gestern von a-dead-trousers 2 / 54

Vergleichbare Themen

Die Elseif-Anweisung wird übersprungen
von TurgutOz » 16.09.2020 17:50
write ... under
von Gast » 19.04.2005 15:40
WRITE zebra
von hmaxi96 » 25.01.2016 14:34
Write Uhrzeit
von ABAP_BEGINNER » 04.06.2010 14:50
select und write
von eddi89 » 11.08.2009 19:40