quarta-feira, 10 de outubro de 2018

NO RFC SÓ SÃO PERMITIDAS TABELAS COM ESTRUTURAS SIMPLES DE LINHAS

Deparei-me com o seguinte problema, executar uma função no sistema A consultando os dados do sistema B.

Precisei chamar, no sistema A, a função CBIH_WA30_WA_CREATE com os dados disponíveis no sistema B via RFC.



Por padrão esta função não é RFC e ao copiá-la e marcar como RFC recebi a seguinte mensagem:

NO RFC SÓ SÃO PERMITIDAS TABELAS COM ESTRUTURAS SIMPLES DE LINHAS
"Only tables with simple line structure are allowed in RFC"




A solução para o problema foi usar o simple transformation.

 Solução:

Na RFC, criar um parâmetro IMPORTING ou EXPORTING passando um XML (STRING) quer será transformado pelo CALL TRANSFORMATION



Código na RFC

    CALL TRANSFORMATION zqmst_cihwa_wa_api_tab_type
      SOURCE cihwa_wa_api_tab_type 
lit_x_api_wka_tab
      RESULT XML e_xml_api_wka_tab
.


Código no programa que chamou a RFC

CALL TRANSFORMATION zqmst_cihwa_wa_api_tab_type
SOURCE XML g_workarea
RESULT cihwa_wa_api_tab_type = t_workarea.


O TRANSFORMATION será do tipo ST

Como criar o root com a estrutura complexa


No WIZARD, utilizar um ROOT do mesmo tipo da tabela que é passada no tables da function original. No exemplo acima, utilizar o CIHWA_WA_API_TAB_TYPE.



Clicar com o botão direito abaixo do ROOT > Insert new root e colar a estrutura CIHWA_WA_API_TAB_TYPE



Depois é preciso arrastar o root criado no painel da esquerda, soltar no painel da direita e ativar.





Nenhum comentário:

Postar um comentário