Archivo

Entradas Etiquetadas ‘Webservice ABAP’

Consumir Webservice con SAP / ABAP

Miércoles, 18 de Marzo de 2009 Nessy 6 comentarios

Un ejemplo simple de como consumir Webservice (hecho en .NET) con SAP / ABAP, ya que los ejemplos encontrados en la web en general no me resultaron muy didáctico.

El Webservice a titulo de ejemplo tiene los sigientes parametros: title y details.

REPORT zwebconsume.

DATA: http_client TYPE REF TO if_http_client .

DATA: w_string TYPE string ,
w_result
TYPE string ,
r_str
TYPE string .

DATA: result_tab TYPE TABLE OF string.

START-OF-SELECTION .
CLEAR w_string .
w_string = 'http://urlhost/Logs/main.asmx/SetLog'.

CALL METHOD cl_http_client=>create_by_url
EXPORTING
url                = w_string
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found =
1
plugin_not_active  =
2
internal_error     =
3
OTHERS = 4.

CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME =
'~request_method'
VALUE = 'POST'.

CALL METHOD http_client->REQUEST->SET_FORM_FIELD
EXPORTING
NAME =
'title'
VALUE = 'Mail sistema'.

CALL METHOD http_client->REQUEST->SET_FORM_FIELD
EXPORTING
NAME =
'details'
VALUE = 'Funcion 1234'.

CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure =
1
http_invalid_state         =
2.

CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure =
1
http_invalid_state         =
2
http_processing_failed     =
3.
CLEAR w_result .
w_result = http_client->response->get_cdata( ).

REFRESH result_tab .
SPLIT w_result AT cl_abap_char_utilities=>cr_lf INTO TABLE
result_tab .

READ TABLE result_tab INTO r_str INDEX 2.

Lo que hay que tener en cuenta es que el envio de parametros se efectua con REQUEST->SET_FORM_FIELD y no con REQUEST->SET_DATA ya que este es para enviar todo el encabezado.

Tambien la invocación siguiente es para pasar los parametros por el metodo POST:

CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME =
'~request_method'
VALUE = 'POST'.