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.