INCLUDE'daki beyan ana programda tanınmıyor

Nov 10 2020

Birçok alt alanı olan birçok veri yapısı içeren bir rapor yazıyorum. Kodumun dağınıklığını önlemek için, doğrudan REPORT ifadesinden sonra eklenen ve ardından DATA tanımları olan bir Dahil Et'e dış kaynak sağladım.

Şimdi benim sorunum: INCLUDE'da tanımlanan bir türü değişkenlerim için veri türü olarak kullanırken, ABAP derleyicisi türün tanımlı olmadığını söylüyor. Eclipse kullanırken Strg + Space tuşuna basıldığında kod tamamlama bana include'deki türleri gösterdiğinde bile.

Dahil etmek:

*&---------------------------------------------------------------------*
*& 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.

bildiri:

*&---------------------------------------------------------------------*
*& 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.

Bu durumda, first_long_datastructure türü "tanımlı değil". Dahil etme dosyasının içeriğini kaynak kod dosyama yapıştırdığımda ve gereksiz include ifadesini kaldırdığımda, derleyici artık şikayet etmiyor.

Yanıtlar

4 JózsefSzikszai Nov 10 2020 at 16:59

Bu tür garip davranışları önlemek için şu yönergeleri izleyin:

  • Tüm veri beyannamelerinizi tek bir içeriye koyun.
  • Buna dahil olarak isim verin ..._ TOP
  • REPORT ifadesini TOP içerisine koyun.

Yani ana program şöyle görünecek:

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

ÜST şunları içerir:

REPORT Z...

* Data declarations...