ich arbeite mich noch in ABAP ein und versuche duch "Code" - Lesen ein Feeling zu entwicklen. Ich sehe immer wieder mal Coding-Zeile, in von der SAP ausgelieferten ABAP - Programmen, wie diese:
IF 1 = 2. MESSAGE e009(r3). ENDIF.
Message xxx ist mir klar, aber was soll der Ausdruck "1 = 2" bewirken? kann doch nie Wahr sein - oder?
Hallo TPAU,
vergiss solche Zeilen, das sind Überbleibsel aus der Entwicklung, während deren mal diese Meldung kommen sollte und mal nicht und mit der IF Abfrage eine einfache Möglichkeit zum Auffinden solcher Stellen gegeben ist. Besser als mit einem Kommentar (Bei meinen Programmen mache ich das manchmal ähnlich).
diese Schreibweise hat (für mich) einen sehr guten und wichtigen Grund. Nur so ist die Verwendung der Meldung über einen Verwendungsnachweis auffindbar, wenn sie z.B. in einem BAPI sonst nur in die BAPIRET2-Struktur oder im Application Log geschrieben wird.
Ich habe schon häufger erlebt, dass man zu einer Fehlermeldung den Ursprung herausbekommen wollte, dies aber wegen rein dynamische Verwendung nicht über den Verwendungsnachweis möglich war. Daher war man dann gezwungen, sich im Debugger durchzuhangeln, was in manchen Fällen äußert kompliziert und zeitintensiv war.
PS:
ich bevorzuge zu MESSAGE die Variante mit dem Zusatz INTO, weil man sich dadurch den IF sparen kann und nebenbei auch die SY-MSG* Felder gesetzt werden. (ja, statt dessen braucht man ein Ausgabefeld, was aber mit einer einfachen Stringvariablen kein Problem darstellt. Abgesehen davon kann man den String dann auch an BAPIRET2-MESSAGE zuweisen...)
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Kurzer Kommentar:
wird meines Wissens auch bei Aufruf von Funktionsbausteinen verwendet.
Anwendungsbeispiel: man kann z.B. im FS-CD kundeneigene Fubas zu bestimmten Zeitpunkten reinhängen (tabellengesteuert, Customizing). Da der Name dem SAP vorher nicht bekannt ist und der Aufruf dynamisch erfolgt, könnte man den Aufrufzeitpunkt nicht ohne weiteres feststellen.
Als Vorlage gibt es aber Sample-Bausteine. Und die werden bisweilen in so einer "If 1 = 2"-Konstruktion aufgerufen, d.h., de facto nie, aber darüber kann man per Verwendungsnachweis die Aufrufstellen finden.
Gruß,
Frank