Die Erklärung in INCLUDE wird im Hauptprogramm nicht anerkannt

Nov 10 2020

Ich schreibe einen Bericht, der viele Datenstrukturen mit vielen Unterfeldern enthält. Um zu vermeiden, dass mein Code überladen wird, habe ich ihn an ein Include ausgelagert, das direkt nach der REPORT-Anweisung gefolgt von den DATA-Definitionen enthalten ist.

Nun mein Problem: Wenn Sie einen in INCLUDE definierten Typ als Datentyp für meine Variablen verwenden, sagt der ABAP-Compiler, dass der Typ nicht definiert ist. Selbst wenn die Code-Vervollständigung mir die Typen aus dem Include zeigt, wenn Strg + Space bei Verwendung von Eclipse gedrückt wird.

einschließen:

*&---------------------------------------------------------------------*
*& Include          Z_MY_REPORT01_INCLUDE
*&---------------------------------------------------------------------*
types:
    begin of first_long_datastructure,
        field01 type string,
        field02 type string,
        ....
        fieldnn type string,
    end of first_long_datastructure,
    
    begin of second_long_datastructure
        field01 type string,
        field02 type string,
        ...
        fieldnn type string,
    end of second_long_datastructure.

Bericht:

*&---------------------------------------------------------------------*
*& Report Z_MY_REPORT01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_MY_REPORT01.

include Z_MY_REPORT01_INCLUDE.

data:
    lt_first_long_ds    type    first_long_datastructure,
    lt_second_long_ds   type    second_long_datastructure,
    lv_counter          type    i.

In diesem Fall ist der Typ first_long_datastructure "nicht definiert". Wenn ich den Inhalt der Include-Datei in meine Quellcode-Datei einfüge und die unnötige Include-Anweisung entferne, beschwert sich der Compiler nicht mehr.

Antworten

4 JózsefSzikszai Nov 10 2020 at 16:59

Um diese Art von seltsamem Verhalten zu verhindern, befolgen Sie diese Richtlinien:

  • Fügen Sie alle Ihre Datendeklarationen in einem Include zusammen.
  • Nennen Sie dies include ..._ TOP
  • Fügen Sie die REPORT-Anweisung in das TOP-Include ein.

Das Hauptprogramm sieht also so aus:

INCLUDE z..._top.
INCLUDE z..._F01.
...

Das TOP-Include sieht folgendermaßen aus:

REPORT Z...

* Data declarations...