EXIT_SAPLMEREQ_005 и BADI ME_PROCESS_REQ_CUST вызываются последовательно из метода process_user_exit класса lcl_req_item.
Code:
  METHOD process_user_exit.
    DATA: l_full_check      TYPE syst-calld,
          l_item_has_errors TYPE syst-calld,
          ls_data_new       TYPE mereq_item,
          ls_data_old       TYPE mereq_item,
          ls_data_persistent TYPE mereq_item,
          lt_cust_messages  TYPE mereq_t_bapiret2,
          l_badi_recheck    TYPE sy-calld,
          l_ce_recheck      TYPE sy-calld,
          l_recheck         TYPE sy-calld,
          ls_message        LIKE LINE OF lt_cust_messages,
          l_msgobj          TYPE REF TO if_message_obj_mm,
          l_msg_hdler       TYPE REF TO cl_message_handler_mm,
          l_dummy(1)        TYPE x,
          l_rc              TYPE sy-subrc.
*
* clear bit_broken_rules for the user-exit
*
    SET BIT my_offset_user_exit_005 OF
        me->my_state->broken_rules TO 0.
    IF sy-subrc NE 0.
      DO.
        CONCATENATE me->my_state->broken_rules l_dummy
          INTO me->my_state->broken_rules IN BYTE MODE. "unicode
        SET BIT my_offset_user_exit_005 OF
          me->my_state->broken_rules TO 0.
        IF sy-subrc IS INITIAL.
          EXIT.                        "from do
        ENDIF.
      ENDDO.
    ENDIF.
*
*     remove & set business object, context
*
    CALL METHOD cl_message_handler_mm=>get_handler
      IMPORTING
        ex_handler = l_msg_hdler.
    l_msgobj  ?= im_context->model.
    CALL METHOD l_msg_hdler->remove_by_bo
      EXPORTING
        im_business_obj          = l_msgobj
        im_context               = my_offset_user_exit_005
        im_include_child_objects = mmpur_no.
    CALL METHOD cl_message_mm=>set_current_business_obj
      EXPORTING
        im_business_obj = l_msgobj.
    CALL METHOD cl_message_mm=>set_current_context(
      my_offset_user_exit_005 ).
    IF im_context->scope EQ mmpur_scope_full.
      l_full_check = 'X'.
    ENDIF.
    IF im_success = mmpur_no.
      l_item_has_errors = 'X'.
    ENDIF.
    ex_success = mmpur_yes.
    ex_recheck = mmpur_no.
    MOVE-CORRESPONDING:
        me->my_state->item                   TO ls_data_new,
        im_context->item_before_checks->item TO ls_data_old,
        my_persistent_eban                   TO ls_data_persistent.
    IF NOT me->my_state->ref_item IS INITIAL.
      ls_data_new-ref_banfn =
      me->my_state->ref_item->my_state->header->my_state->header-banfn.
      ls_data_new-ref_bnfpo =
      me->my_state->ref_item->my_state->item-bnfpo.
    ENDIF.
* call IBS version of BAdI
    CALL FUNCTION 'MEREQBADI_PROCESS_ITEM'
      EXPORTING
        im_item       = me
        im_count      = my_iteration_count
        im_ibs        = mmpur_yes
        im_cust       = mmpur_no
        im_ref_item   = me->my_state->ref_item
      EXCEPTIONS
        error_message = 1
        OTHERS        = 2.
    IF NOT sy-subrc IS INITIAL.
      l_rc = sy-subrc.
    ENDIF.
    CALL METHOD set_firewall( mmpur_yes ).
*- BAdI ME_PROCESS_REQ_CUST-----------------------------------------*
    CALL FUNCTION 'MEREQBADI_PROCESS_ITEM'
      EXPORTING
        im_item       = me
        im_count      = my_iteration_count
        im_ibs        = mmpur_no
        im_cust       = mmpur_yes
        im_ref_item   = me->my_state->ref_item
      EXCEPTIONS
        error_message = 1
        OTHERS        = 2.
    IF NOT sy-subrc IS INITIAL.
      l_rc = sy-subrc.
    ENDIF.
    IF me->my_state->input_buffer_changed EQ mmpur_yes.
      l_badi_recheck = mmpur_yes.
    ENDIF.
    CALL CUSTOMER-FUNCTION '005'
      EXPORTING
        im_req_item           = me
        im_data_new           = ls_data_new
        im_data_old           = ls_data_old
        im_data_persistent    = ls_data_persistent
        im_full_check         = l_full_check
        im_item_has_errors    = l_item_has_errors
       IMPORTING
        ex_messages           = lt_cust_messages
        ex_recheck_item       = l_ce_recheck
       EXCEPTIONS
        error_message         = 1
        OTHERS                = 0.
    IF NOT sy-subrc IS INITIAL.
      l_rc = sy-subrc.
    ENDIF.
    CALL METHOD set_firewall( mmpur_no ).
    IF l_ce_recheck EQ mmpur_yes OR l_badi_recheck EQ mmpur_yes.
      l_recheck = mmpur_yes.
    ENDIF.
    IF NOT l_rc IS INITIAL.
      mmpur_metafield mmmfd_item_userexit.
*
* customer function triggered a message, store it in
* the log and do nothing
*
      mmpur_message_forced sy-msgty sy-msgid sy-msgno
        sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ex_success = mmpur_no.
    ELSEIF sy-subrc IS INITIAL AND
           NOT l_recheck IS INITIAL.
      ex_recheck = mmpur_yes.          "recheck !!!
    ENDIF.
    LOOP AT lt_cust_messages INTO ls_message.
      mmpur_message_forced ls_message-type ls_message-id
              ls_message-number
              ls_message-message_v1
              ls_message-message_v2
              ls_message-message_v3
              ls_message-message_v4.
      IF ls_message-type EQ 'A' OR
         ls_message-type EQ 'E'.
        ex_success = mmpur_no.
      ENDIF.
    ENDLOOP.
*
* set bit_broken_rules for the user-exit in case of error
*
    IF ex_success EQ mmpur_no.
      SET BIT my_offset_user_exit_005 OF
          me->my_state->broken_rules.
    ENDIF.
  ENDMETHOD.                    "lcl_req_item
Как видно из кода - для ошибок задается контекст 
Code:
    CALL METHOD cl_message_mm=>set_current_business_obj
      EXPORTING
        im_business_obj = l_msgobj.
    CALL METHOD cl_message_mm=>set_current_context(
      my_offset_user_exit_005 ).
и вызывается  
Code:
mmpur_message_forced
Попробуйте повторить логику для нужной позиции.