"WRITE" wird übersprungen.


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

"WRITE" wird übersprungen.

Beitragvon Django90 » 28.09.2017, 10: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 ____
Django90
ForumUser
 
Beiträge: 27
Registriert: 21.09.2017, 13:03
Dank erhalten: 0 mal
Ich bin: sonstiges

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: "WRITE" wird übersprungen.

Beitragvon DeathAndPain » 28.09.2017, 10: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.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
Django90
DeathAndPain
Expert
 
Beiträge: 641
Registriert: 05.05.2006, 10:14
Dank erhalten: 149 mal
Ich bin: Entwickler/in

Re: "WRITE" wird übersprungen.

Beitragvon Django90 » 28.09.2017, 10:46

Wie wurdest du den Quellcode deiner Meinung nach verbessern?

Mfg
Django90
ForumUser
 
Beiträge: 27
Registriert: 21.09.2017, 13:03
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: "WRITE" wird übersprungen.

Beitragvon DeathAndPain » 28.09.2017, 11: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.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
Django90
DeathAndPain
Expert
 
Beiträge: 641
Registriert: 05.05.2006, 10:14
Dank erhalten: 149 mal
Ich bin: Entwickler/in

Re: "WRITE" wird übersprungen.

Beitragvon DeathAndPain » 28.09.2017, 11:14

Ach ja, und die endlose IF-Kette würde ich durch einen CASE-Befehl ersetzen.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
Django90
DeathAndPain
Expert
 
Beiträge: 641
Registriert: 05.05.2006, 10:14
Dank erhalten: 149 mal
Ich bin: Entwickler/in

Re: "WRITE" wird übersprungen.

Beitragvon Django90 » 28.09.2017, 12: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.
Django90
ForumUser
 
Beiträge: 27
Registriert: 21.09.2017, 13:03
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: "WRITE" wird übersprungen.

Beitragvon DeathAndPain » 28.09.2017, 13: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.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
Django90
DeathAndPain
Expert
 
Beiträge: 641
Registriert: 05.05.2006, 10:14
Dank erhalten: 149 mal
Ich bin: Entwickler/in

Re: "WRITE" wird übersprungen.

Beitragvon ewx » 28.09.2017, 13:28

Django90 hat geschrieben:SELECTION-SCREEN COMMENT 1(80) text-001. SKIP.

Code: Alles auswählen
SELECTION-SCREEN COMMENT /1(80) text-001.
                         ^
 

Für diese Nachricht hat ewx einen Dank bekommen :
Django90
ewx
Top Expert
 
Beiträge: 3657
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 272 mal

Re: "WRITE" wird übersprungen.

Beitragvon Django90 » 28.09.2017, 14:05

Vielen Dank!

Hat alles nach eurer Hilfestellung super geklappt. :)
Django90
ForumUser
 
Beiträge: 27
Registriert: 21.09.2017, 13:03
Dank erhalten: 0 mal
Ich bin: sonstiges


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
gelöst Zeichenprüfung
vor 18 Stunden von ralf.wenzel 7 Antw.
Smart Forms: Andere LETZTE SEITE in n-seitigem Formular
vor 2 Tagen von a-dead-trousers 1 Antw.
Performance-Problem bei Aufruf einer SAP-Klasse
Gestern von DeathAndPain 2 Antw.
gelöst ALV: Doppelte Toolbar
vor 3 Tagen von a-dead-trousers 3 Antw.
gelöst ALV: Dropdown und F4 Hilfe
vor 4 Tagen von Legxis 2 Antw.

  Ähnliche Beiträge beta
Nur ein Datensatz wird angezeigt.
28.08.2003, 11:44 von Tinalein 3 Antw.
Liste wird im abgeschnitten
14.11.2003, 13:43 von cubarr 1 Antw.
Bei MAX wird der Feldinhalt gelöscht?
30.03.2006, 14:20 von Lily 7 Antw.
gelöst ID wird immer mit ausgegeben
05.06.2014, 13:27 von Dyrdek 3 Antw.
PDF wird falsch gedruckt
06.02.2018, 12:20 von a-dead-trousers 23 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder