viernes, agosto 24, 2012

Devolver mensajes de error estándar de proxies

Cuando se definen interfaces con Fault Message Type, para rellenar la estructura estándar cuando se han producido errores existe el siguiente método:
  
  data: standard_data type zpi_exchange_fault_data,
        detail_data   type zpi_exchange_log_data,
        ls_return     type bapiret2.




  clear standard_data.
  standard_data-fault_text   = 'Ha ocurrido una excepción'(001).

    loop at gt_return  into ls_return.

      call method cl_proxy_fault=>get_fault_detail
        exporting
          msgty    = ls_return-type
          msgid    = ls_return-id
          msgno    = ls_return-number
          msgv1    = ls_return-message_v1
          msgv2    = ls_return-message_v2
          msgv3    = ls_return-message_v3
          msgv4    = ls_return-message_v4
        importing
          severity = detail_data-severity
          text     = detail_data-text
          url      = detail_data-url
          id       = detail_data-id.
      append detail_data to standard_data-fault_detail[].

    endloop.

    raise exception type zpi_cx_fmt_ecc_factura
      exporting
        automatic_retry = abap_false
        no_retry        = abap_true
        standard        = standard_data.


Para poder ver la descripción del mensaje a través del explorador. Será necesario tener activo el servicio /sap/xi/docu_apperror en la tx: SICF.

No hay comentarios: