"
Apoiado por

Erro de sintaxe ao retornar tabela num método

Quando, num método de uma classe, crias um parâmetro de retorno que é um TABLE TYPE baseado num tipo declarado na própria classe, às vezes aparece um erro que diz:

“Os parâmetros RETURNING devem ser completamente tipificados.”

O misterioso é que isto só acontece no parâmetro de retorno. Se usares o EXPORTING em vez do RETURNING já funciona.

A definição do tipo usado no parâmetro é, por exemplo assim:


 TYPES: BEGIN OF ty_s_info,
           kunnr TYPE kunnr,
           name1 TYPE name1,
         END OF ty_s_info,
         ty_t_info TYPE STANDARD TABLE OF ty_s_info.

Durante muito tempo não percebi o que isto queria dizer e a minha solução foi usar EXPORTING ou definir a TABLE TYPE necessária na SE11. E assim já não tinha problemas. Mas no outro dia fartei-me disso, irritei-me, os meus olhos raiaram de sangue, dei um murro no ecrã e decidi tentar ir mais a fundo nesta questão.

Para dizer a verdade não tive de ir muito fundo porque é simples.

É que de facto, na perspectiva do SAP, a tabela TY_T_INFO não está completamente definida. Falta definir a chave. A solução é fazer algo deste tipo:


TYPES: ty_t_info TYPE SORTED TABLE OF ty_s_info WITH UNIQUE KEY kunnr.

E pronto, acabou-se o erro.

Obrigado a C.G. Megee pela foto.

O Abapinho saúda-vos.

Um comentário a “Erro de sintaxe ao retornar tabela num método”

  1. Malves Diz:

    Thank you for the info. Simple explanation, easy to understand. I’d like to add if you don’t want to create a sorted table with a defined key but a standard table with a ‘generic’ key, you could:

    TYPES: ty_t_info TYPE TABLE OF ty_s_info WITH DEFAULT KEY.

    Cheers!

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).