Declaração em INCLUDE não é reconhecida no programa principal
Estou escrevendo um relatório que contém muitas estruturas de dados com muitos subcampos. Para evitar bagunçar meu código, eu o terceirizei para um Include que é incluído diretamente após a instrução REPORT, seguida pelas definições de DATA.
Agora meu problema: ao usar um tipo definido no INCLUDE como tipo de dados para minhas variáveis o compilador ABAP diz que o tipo não está definido. Mesmo quando o codecompletion mostra os tipos de include ao pressionar Strg + Space ao usar Eclipse.
incluir:
*&---------------------------------------------------------------------*
*& 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.
relatório:
*&---------------------------------------------------------------------*
*& 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.
Neste caso, o tipo first_long_datastructure "não está definido". Quando colo o conteúdo do arquivo de inclusão em meu arquivo fonte e removo a instrução de inclusão desnecessária, o compilador não está mais reclamando.
Respostas
Para evitar esse tipo de comportamento estranho, siga estas diretrizes:
- Coloque todas as suas declarações de dados em um include.
- Nomeie este include ..._ TOP
- Coloque a instrução REPORT no TOP include.
Portanto, o programa principal será semelhante a:
INCLUDE z..._top.
INCLUDE z..._F01.
...
O TOP include será semelhante a:
REPORT Z...
* Data declarations...