天天看点

打印SAP ABAP web service call完整的payload

测试用的webservice是执行一个简单的将两个整数相加的操作.

[外链图片转存失败(img-6UAKiAlM-1562210533998)(https://user-images.githubusercontent.com/5669954/27282442-439c6500-54f0-11e7-86a9-dd3b727e3c89.png)]

下面的report 不仅显示webservice 调用结果4, 并且能显示出完整的web service response payload:

REPORT zdoc_ws_test.

DATA: lo_proxy  TYPE REF TO co_zweb_add_21,

     ls_input  TYPE zweb_add_operation,

     ls_output TYPE zweb_add_operationresponse.

TRY.

   CREATE OBJECT lo_proxy EXPORTING logical_port_name = 'ZJERRY3'.

   ls_input-iv_op1 = 1.

   ls_input-iv_op2 = 3.

   lo_proxy->zweb_add_operation( EXPORTING input = ls_input IMPORTING output = ls_output ).

 CATCH cx_root INTO DATA(cx_root).

   WRITE / cx_root->get_text( ).

   RETURN.

ENDTRY.

WRITE: / 'result:' , ls_output-ev_result.

DATA: lo_payload_protocol TYPE REF TO if_wsprotocol_payload.

DATA: lo_payload          TYPE REF TO if_ws_payload.

DATA: lo_payload_handler TYPE REF TO if_ws_payload_handler,

     lt_request_data    TYPE prx_t_param,

     ls_request_data    TYPE prx_s_param.

lo_payload_protocol ?= lo_proxy->get_protocol( if_wsprotocol=>payload ).

lo_payload_handler = lo_payload_protocol->get_payload_handler( ).

ls_request_data-name = 'OUTPUT'.

GET REFERENCE OF ls_output INTO ls_request_data-value.

APPEND ls_request_data TO lt_request_data.

lo_payload = lo_payload_handler->get_payload_from_response_data( lt_request_data ).

DATA(lv_payload) = lo_payload->get_xml_text( ).

WRITE: / 'Payload:' , lv_payload.

继续阅读