Erro de sintaxe ao retornar tabela num método

images/thumbnail.jpg - Thumbnail

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.