Nesse post nós iremos consumir o webservice CurrencyConvertor do site WebserviceX, que permite obter a cotação de uma determinada moeda com relação a outra.
Antes de iniciar vamos precisar informações com relação ao serviço que iremos consumir:
Endpoint: http://www.webservicex.net/CurrencyConvertor.asmx (Certifique-se de que o servidor SAP é capaz de acessar esse endereço)
SoapAction: http://www.webserviceX.NET/ConversionRate (Define qual método do serviço está sendo chamado)
Um Exemplo de request:
Primeiro utilizamos os parâmetro de tela para montar um string em formato XML SOAP:
Em seguida o objeto http_client é instanciado com base nas informações do endpoint:
O host nada mais que o endereço do servidor, pode ser url ou IP.
O service é a porta utilizada no endpoint normalmente 80 para HTTP e 443 para HTTPS.
Em scheme podemos utilizar cl_http_client=>schemetype_http ou cl_http_client=>schemetype_https dependendo do protocolo do endpoint.
Se o servidor acessa o endpoint através de proxy você deve especificar o endereço e a porta do servidor proxy. Mas atenção nesse caso será necessário fazer a autenticação no servidor proxy, informando o usuário e a senha, em outro post vou ensinar a fazer a autenticação via ABAP.
Em seguida são configurados alguns campos do cabeçalho da request utilizando o form f_set_header_field. Atenção especial aos campos SOAPAction e ~request_uri pois obviamente eles irão variar de acordo com o serviço e método.
Em seguida o XML montando no início é passado para o corpo da request (juntamente com o tamanho calculado para o mesmo), ela é enviada e a resposta é lida.
Agora nós temos um XML com o valor que nós precisamos, podemos utilizar substring, as classes de XML do ABAP, ou qualquer outro meio para obter valor, nesse exemplo estou utilizando um programa XSLT, mas obviamente exigem um certo conhecimento da linguagem XSLT. Em outro post vou falar mais desse tipo de programa.
Para esse exemplo foi criado o programa XSLT ZCURRENCY_CONVERTOR com o código abaixo:
Para executar um programa XSLT devemos utilizar o comando CALL TRANSFORMATION passado o XML e o(s) campo(s) e/ou estrutura(s) a serem preenchidas.
O comando foi circundado com try catch genérico para evitar possíveis DUMPs durante a transformação.Em outro post vou falar mais sobre tratamento de excessões com try. catch.
Testando o programa
![]() |
Tela de Seleção |
![]() |
Resultado |
Exemplo Completo: