This is a test message to test the length of the message box.
Login
ABAP Obsolet Ranges und Kopfzeilen
Erstellt von Software-Heroes

ABAP Obsolet - Range und Kopfzeilen

Eine ordentliche Range zur Übergabe erzeugen? Tabellen mit oder ohne Kopfzeilen? Wir zeigen dir was noch geht und was du lieber sein lassen solltest.

Werbung

In dem heutigen Artikel geht es um einige Befehle die mit internen Tabellen zu tun haben. Deshalb haben wir die verschiedenen Varianten in einem Artikel zusammengefasst. Vor allem in vielen älteren Reports und Funktionnen der SAP wird man diese Funktionnen noch finden, sollte aber slbst auf die Nutzung verzichten.

 

WITH HEADER LINE

Der Zusatz erzeugt zusammen mit der Tabelle eine Kopfzeile, die unter dem gleichen Namen angesprochen werden kann. Das spart beim Loop den INTO Zusatz, bei einer Übergabe muss aber expliziet auf die Tabelle verwiesen werden, indem ein "[]" am Ende angehangen wird.

Im Beispiel einmal die Schleife und die Übergabe:

DATA:
  lt_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE.

LOOP AT lt_bkpf.
  " Do Something
ENDLOOP.

lo_app->main( lt_bkpf[] ).

 

Diese Weise sollte nicht mehr verwendet werden, da die Kopfzeile nicht direkt ersichtlich ist und in der modernen Entwicklung andere Entwickler nur verwirren könnte, die das Konstrukt nicht kennen. Damit Tabelle und Struktur sauber voneinader getrennt sind, wird eine Zeile auch expliziet deklariert. Mittlerweile kann auch die Inline-Deklaration verwendet werden.

DATA:
  lt_bkpf TYPE STANDARD TABLE OF bkpf.

LOOP AT lt_bkpf INTO DATA(ls_bkpf).
  " Do Something
ENDLOOP.

lo_app->main( lt_bkpf ).

 

RANGES

Du benötigst mal wieder eine Range für die Selektion, als Schnittstellen-Parameter oder zur Übergabe in einem Datenobjekt? Mit dem TYPE Zusatz kannst du in der modernen ABAP Sprache eine Tabelle vom Typ Range erzeugen. Die Tabelle hat keine Kopfzeile, wie es der Fall ist bei einer mit RANGES definierten Tabelle.

RANGES:
  lt_r_company_code FOR t001-bukrs.

DATA:
  lt_r_company_code TYPE RANGE OF t001-bukrs.

 

Willst du direkt das Ergebnis der Selektion in eine Range umwandeln, kannst du dies auch direkt im SELECT und per Inline-Deklaration machen. Dazu die Felder für SIGN und OPTION im Statement erzeugen und setzen, dann das Ergebnis in LOW und HIGH übernehmen. Dies ist ein einfacher, schneller Weg und spart die Konvertierung in einer zusätzlichen Schleife.

SELECT 'I' AS sign, 'EQ' AS option, bukrs AS low, bukrs AS high
  FROM t001
  INTO TABLE @DATA(lt_r_company_code).

 

OCCURS

Das Statement erzeugt eine Tabelle und allokiert dafür eine Anzahl von Zeilen im Speicher, auch wenn noch keine 10 Zeilen enthalten sind, wie es im Beispiel erwähnt wurde. Dieser Befehl sollte nicht mehr verwendet werden, weil bei der Definition nicht genau sichtbar ist, was hier erzeugt wird. Weder der Art der Tabelle ist bekannt, noch wurde ein Schlüssel definiert. In unserem Beispiel haben wir zu Verdeutlichung den Schlüssel ebenfalls weggelassen.

DATA:
  lt_bkpf LIKE t001 OCCURS 10.

DATA:
  lt_bkpf TYPE STANDARD TABLE OF t001.

 

Fazit

Bereits im moderneren OO-Kontext funktionieren viele der alten Befehle zur Definition nicht mehr. Wir wollen dir für einen sauberen Programmierstil aber auch ein paar Neuerungen in allen Bereichen mitgeben.


Enthaltene Themen:
ObsoletRANGEOCCURSWITH HEADER LINE
Kommentare (0)
Werbung

ABAP - Namenskonventionen

Kategorie - ABAP

Wie wichtig sind heutzutage noch die Einhaltung von Namenskonventionen oder überhaupt die Verwendung von Namenskonventionen im modernen ABAP Umfeld? Das wollen wir uns in diesem Artikel anschauen.

09.04.2021

ABAP - INSERT verwenden

Kategorie - ABAP

APPEND hat in ABAP bereits eine lange Geschichte, doch dieser wird in Zukunft immer weniger eine Rolle spielen. Wir zeigen dir wieso.

11.12.2020

ABAP Obsolet - Zuweisung und Berechnung

Kategorie - ABAP

Wie funktioniert das eigentlich mit den Zuweisungen und der Berechnung in ABAP? Hier erfährst du die aktuellen Sprachkonstrukte und was du vermeiden solltest.

26.06.2020

ABAP Obsolet - DESCRIBE

Kategorie - ABAP

Wieder haben wir für dich einen meist genutzten ABAP Begriff, für den es bereits eine neue Alternative gibt, dieses mal aber nicht nur Eine.

15.11.2019

ABAP Obsolet - TYPE-POOL

Kategorie - ABAP

Type Pools sind obsolet, doch die Verwendung geht weiter. Wie du in Zukunft am Besten damit umgehst, erfährst du heute hier.

23.08.2019

Wir verwenden Cookies für unsere Dienste und Funktionen. Mehr Informationen