- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Clase genérica para WS
- CLASS Cl_MY_WS DEFINITION.
- PUBLIC SECTION.
- CONSTANTS: ws_error_system_fault TYPE i VALUE '99'.
- *--[ Esto se cambiará dependiendo del servicio
- DATA: ws_obj TYPE REF TO zavlco_si_avl_cp_piae_verifica, " #CHANGE Ver constructor
- ws_output TYPE zavlmt_avl_piae_obtener_reque1, " #CHANGE Parámetros del WS
- ws_input TYPE zavlmt_avl_piae_obtener_respo1, " #CHANGE Parámetros del WS
- ws_msgid TYPE string,
- ws_error_text TYPE string,
- ws_error_text_long TYPE string,
- ws_xml_request TYPE string,
- ws_xml_response TYPE string,
- ws_xml_exception TYPE string,
- ws_error TYPE sysubrc,
- ws_extra_data type xfeld.
- METHODS: ws_data_load,
- ws_main,
- ws_call RETURNING VALUE(p_ret) TYPE i,
- ws_return_OK,
- ws_return_KO,
- constructor.
- PROTECTED SECTION.
- PRIVATE SECTION.
- ENDCLASS.
- CLASS cl_my_ws IMPLEMENTATION.
- METHOD constructor.
- *--[ Pos si se quiere meter en un método y reutilizar
- CLEAR: ws_error, ws_output, ws_input, ws_msgid, ws_error_text,
- ws_error_text_long, ws_xml_request, ws_xml_response,
- ws_xml_exception, ws_extra_data.
- ws_obj = NEW zavlco_si_avl_cp_piae_verifica( ). "<-- Se crea el objeto
- ENDMETHOD.
- METHOD ws_main.
- ws_data_load( ).
- IF ws_Call( ) IS INITIAL.
- ws_return_ok( ).
- ELSE.
- ws_return_KO( ).
- ENDIF.
- ENDMETHOD.
- METHOD ws_data_load.
- ENDMETHOD.
- METHOD ws_call.
- DATA: lr_proxy_basis TYPE REF TO if_proxy_basis,
- lr_prot_payload TYPE REF TO if_wsprotocol_payload,
- lo_protocol TYPE REF TO if_wsprotocol_message_id,
- lo_server_context TYPE REF TO if_ws_server_context.
- DATA: lv_msgid TYPE sxmsmguid.
- DATA: lv_msgid_string TYPE string.
- DATA: payload_OBJ TYPE REF TO if_ws_payload.
- lr_proxy_basis ?= ws_obj.
- lr_prot_payload ?= lr_proxy_basis->get_protocol( if_wsprotocol=>payload ).
- lr_prot_payload->announce_payload_consumption( ).
- lr_prot_payload->set_extended_xml_handling( extended_xml_handling = abap_true ).
- CLEAR p_ret.
- DATA: l_catch_sf TYPE REF TO cx_ai_system_fault.
- TRY.
- CALL METHOD ws_obj->o_obtener_sync " #CHANGE <-- Método al que llamaremos
- EXPORTING
- output = ws_output "<-- Parámetros de salida
- IMPORTING
- input = ws_input. "<-- Parámetros de entrada
- CATCH cx_ai_system_fault INTO l_catch_sf.
- ws_error_text = l_catch_sf->get_text( ).
- ws_error_text_long = l_catch_sf->get_longtext( ).
- ws_error = p_ret = ws_error_system_fault.
- ENDTRY.
- check not ws_extra_data is INITIAL. "<-- Para debuging
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Descargamos los XML de comunicación por si queremos tratarlos
- TRY.
- payload_OBJ ?= lr_prot_payload->get_sent_request_payload( ).
- ws_xml_request = payload_OBJ->get_xml_text( ).
- CATCH cx_ai_system_fault.
- ENDTRY.
- TRY.
- payload_OBJ ?= lr_prot_payload->get_sent_exception_payload( ).
- ws_xml_exception = payload_OBJ->get_xml_text( ).
- CATCH cx_ai_system_fault.
- ENDTRY.
- TRY.
- payload_OBJ ?= lr_prot_payload->get_sent_response_payload( ).
- ws_xml_response = payload_OBJ->get_xml_text( ).
- CATCH cx_ai_system_fault.
- ENDTRY.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Obtenemos el MSGID de la llamada
- TRY.
- lo_protocol ?= lr_proxy_basis->get_protocol( if_wsprotocol=>message_id ).
- DATA(msgid) = lo_protocol->get_message_id( ).
- ws_msgid = msgid.
- CATCH cx_ai_system_fault.
- ENDTRY.
- ENDMETHOD.
- METHOD ws_return_OK.
- ENDMETHOD.
- METHOD ws_return_KO.
- ENDMETHOD.
- ENDCLASS.
- end-of-SELECTION.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Ejemplo de USO
- DATA: my_ws TYPE REF TO Cl_MY_WS.
- my_ws = NEW Cl_MY_WS( ).
- my_ws->ws_main( ).
Última modificación de la página el 21 January 2022 a las 07h45
Powered by
PmWiki