打印SAP ABAP web service call完整的payload

66 阅读1分钟

测试用的webservice是执行一个简单的将两个整数相加的操作.
[外链图片转存失败(img-6UAKiAlM-1562210533998)(user-images.githubusercontent.com/5669954/272…)]

下面的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.

clipboard4