Etiquetas

20120921

ABAP Tips: Mensaje de Error de una RFC a Bapiret2

Un método útil para esa parte del CALL FUNCTION, cuando el SY-SUBRC es distinto de 0, pasarla directamente a una estructura de tipo BAPIRET2.
En este ejemplo se utiliza para la llamada una Función de OM que permite obtener el siguiente número disponible para la creación de objetos, que también es bastante útil.


CALL FUNCTION 'RH_GET_NEXT_NUMBER'
  EXPORTING
    action = 'GIVE'
    ext_number = l_objid
    otype = 'D'
    plvar = '01'
  IMPORTING
    number = l_objid
  EXCEPTIONS
    invalid_action = 1
    number_must_be_zero = 2
    invalid_object = 3
    no_external_interval_found = 4
    no_internal_interval_found = 5
    invalid_number = 6
    no_more_numbers_available = 7
    OTHERS = 8.

IF sy-subrc <> 0.
  PERFORM get_message USING sy-msgty sy-msgid sy-msgno
                            sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
                   CHANGING e_return.
ENDIF.


*&---------------------------------------------------------------------*
*& Form get_message
*&---------------------------------------------------------------------*
FORM get_message USING type id num m1 m2 m3 m4
              CHANGING e_ret STRUCTURE bapiret2.

  CALL FUNCTION 'BALW_BAPIRETURN_GET2'
    EXPORTING
      type = type
      cl = id
      number = num
      par1 = m1
      par2 = m2
      par3 = m3
      par4 = m4
    IMPORTING
      return = e_ret.

ENDFORM. " get_message