ralf.wenzel hat geschrieben:Miss hat geschrieben:Hallo,
1. Was bedeutet eigentlich die eckige Klammer hier.
IF gt_buchliste[] IS NOT INITIAL.
Select....
merci
Dass der verantwortliche Programmierer eine ABAP-Schulung braucht *fg Das hat man zu Zeiten gemacht, als man noch Tabellen "with header line" deklariert hat und header line und Tabellenkörper nicht anders unterscheiden konnte. Das ist lange (sehr lange!) obsolet und Work Areas braucht eh kein Mensch (weil man viel besser mit Feldsymbolen oder Referenzen arbeiten kann
Nicht wirklich.Der Code könnte auch schon uralt sein.
Es kann auch Gründe geben, itabs mit Kopfzeile zu benutzen.
SELECT-OPTIONS sind z.B. immer itabs mit Kopfzeile.
Auch an einen RFC-Funktionsbaustein per TABLES-Parameter übergebene itab hat eine Kopfzeile (und bei RFC-Aufruf würde eine Übergabe einer itab als EXPORTING- oder CHANGING-Parameter Performance-Nachteile haben.)
Außerdem könnte es ein Nicht-RFC-Funktionsbaustein sein, dessen Schnittstelle aber von SAP oder von einem AddOn-Anbieter vorgegeben ist, und dessen Name aus einer Customizing-Tabelle gelesen wird.
Zweitens kann man, wie schon von anderen erwähnt, auch itab[] schreiben, wenn man itabs ohne Kopfzeile verwendet.
Ich mache das auch oft. Insbesondere in einem Umfeld, in dem andere Entwickler noch itabs mit Kopfzeilen verwenden.
Einerseits sieht man schon an dieser einen Anweisung, dass hier ein itab-Body geprüft wird.Zweitens hat man damit eine minimale Absicherung gegen Fehler, die entstehen, wenn ein nachfolgender Entwickler meint, die Definition der itab in eine itab mit Kopfzeile zu ändern, weil er beim LOOP das INTO ... oder ASSIGNING ... "sparen" will. (Nicht dass man sich gegen alle Programmierfehler absichern könnte, aber wenn es so einfach geht wie hier...)
Und außerdem ist itab[] immer noch besser als itab-*sys*, was man nich gelegentlich noch findet und ein nicht wirklich dokumentiertes Feature war, um vor SAP-Release 3.0 den itab-Body anzusprechen.
Seit 3.0 gibt es m.E. die Syntax itab[].
Frank