eigentlich wollte ich nur ein paar Includes in einen TYPE-POOL überführen, damit ich nicht Probleme mit der mehrfachen includierung des gleichen Includes in einem Programm bekomme.
Bsp:
REPORT zzzz.
INCLUDE zKonstanten.
:
:
INCLUDE zKonstanten. <<<< Hier der Fehler, da die Konstanten bereits bekannt sind.
Das läßt sich übersetzen und ich bin die Sorgen los - dachte ich. Denn ein Kollege machte mir in etwa folgendes vor:
REPORT zzzz.
TYPE-POOLS: abap.
DATA: abap_true(20) VALUE 'LinkMichTrick'.
Obwohl im Type-Pool "abap_true" als Konstante definiert ist, kann ich es einfach neu definieren. Wir, mein Kollege und ich, halten das für sehr gefährlich und eigentlich auch für ungewöhnlich. Immerhin dachten wir, dass beide Definitionen im gleichen Sichtbarkeitsbereich liegen und eine doppelte Definition nicht ginge....
interessantes Phänomen und nette Falle. Danke für die Info.
Ich kann nur vermuten, dass es sich intern eben um zwei Bereiche handelt, nämlich um das Programm zzzz und der TYPE-POOL zkons im 'Programm' %_Czkons'...
Scheinbar sucht der Compiler erst im Rahmenprogramm nach dem Bezeichner und nur, wenn er ihn nicht findet, im entsprechenden Typepool.
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Sehr schön, so ist es zumindest dokumentiert. Mir war das so nicht bekannt und daher mein Post. Da ich die Verschattung von Typen nicht will, habe ich jetzt eine Klasse mit statischen Attributen gebastelt.
Da fällt mir ein, wie sieht es denn mit der Verschattung von Klassen aus? Hat da jemand schnell einen Link parat?