cancel
Showing results for 
Search instead for 
Did you mean: 

Update Rejection note in Invoice using Program

nishantbansal91
Active Contributor
0 Kudos

Hi,

We have one requirement to Reject & Approve the invoice using the POWL report. I have completed all the approval process, but while in rejection we have done one enhancement in invoice that invoice can't be rejected without entering the value in the Reason for rejection. I have called the method in this following sequence. There is no exception but Reason for rejection doesn't updated.

/SAPSRM/IF_PDO_DO_LONGTEXT~ADD_LONGTEXT

/SAPSRM/IF_PDO_DO_LONGTEXT~UPDATE_LONGTEXT_BUFFER

/SAPSRM/IF_PDO_BASE~SUBMIT_UPDATE

Give me some suggestion how i can achieve this.

Regards,

Nishant

Accepted Solutions (1)

Accepted Solutions (1)

konstantin_anikeev
Active Contributor
0 Kudos

Hi Nishant,

have you checked the note 1791491?

In case Text Schemas are OK, please provide you complete code.

Regards

Konstantin

nishantbansal91
Active Contributor
0 Kudos

Hi,

I want to update the Rejection Note from Program in APPROVAL mode.

Below is the i wrote for update the REJECTION NOTE .

data     lV_USER_TYPE TYPE BBP_IV_USER_TYPE VALUE 'PROFI' .

             lv_mode = 'APPROVAL'.

             lv_decision = 'REJECTED'.

             lv_objecttype  = /sapsrm/if_pdo_obj_types_c=>gc_pdo_invoice.

       TRY.

         CALL METHOD /sapsrm/cl_pdo_bo_inv_adv=>get_inv_adv_instance

           EXPORTING

             iv_header_guid = I_GUID

             iv_wiid        = I_IV_WIID

             iv_mode        = lv_mode

             iv_subtype     = IV_SUBTYPE"ls_header_INV-subtype'

             iv_user_ID     = I_APPROVER

             iv_user_type   = lV_USER_TYPE

           RECEIVING

             ro_instance    = lr_inv_adv.

       CATCH /sapsrm/cx_pdo_no_authorizatio .

       CATCH /sapsrm/cx_pdo_parameter_error .

       CATCH /sapsrm/cx_pdo_status_error .

       CATCH /sapsrm/cx_pdo_incons_user .

       CATCH /sapsrm/cx_pdo_abort .

       CATCH /sapsrm/cx_pdo_lock_failed .

       CATCH /sapsrm/cx_pdo_error .

       CATCH /sapsrm/cx_pdo_be_comm_error .

     ENDTRY.

data lr_message TYPE REF TO /SAPSRM/IF_PDO_MSG_CONSUMER.

data lo_pdo_notes        TYPE REF TO /sapsrm/if_pdo_do_longtext.

data lr_message_update TYPE REF TO /SAPSRM/CL_PDO_MSG.

DATA:   lx_abort            TYPE REF TO /sapsrm/cx_pdo_abort.

CREATE OBJECT lr_message_update.

lr_message ?= lr_message_update.

lo_pdo_notes ?= LR_INV_ADV.

IF lr_inv_adv IS BOUND.

TRY.

*  TRY.

   CALL METHOD lo_pdo_notes->add_longtext

     EXPORTING

     iv_p_guid          = I_GUID

     iv_tdid            = 'NOTE'

     iv_tdspras         = SY-LANGU

     iv_tdformat        = 'X'

     iv_text_preview    = 'Reason For Reject'.

*     CHANGING

*      co_message_handler =

*      .

    CATCH /sapsrm/cx_pdo_abort .

   ENDTRY.

TRY.

CALL METHOD lo_pdo_notes->update_longtext

   EXPORTING

     iv_p_guid          = I_GUID

     iv_tdid            = 'NOTE'

     iv_tdspras         = SY-LANGU

     iv_tdformat        = 'X'

     iv_text_preview    = 'Reason For Reject'

*  CHANGING

*    co_message_handler = lr_message

     .

       CATCH /sapsrm/cx_pdo_abort INTO lx_abort  .

*          mo_cll_message_handler->set_abort( io_pdo_abort_exception = lx_abort ).

       ENDTRY.

TRY.

DATA TEXT_ID TYPE TDID VALUE 'RREJ'.

CALL METHOD lo_pdo_notes->update_longtext

   EXPORTING

     iv_p_guid          = I_GUID

     iv_tdid            = TEXT_ID

     iv_tdspras         = SY-LANGU

     iv_tdformat        = 'X'

     iv_text_preview    = 'Price Difference'

*  CHANGING

*    co_message_handler = lr_message

     .

       CATCH /sapsrm/cx_pdo_abort INTO lx_abort  .

*          mo_cll_message_handler->set_a1bort( io_pdo_abort_exception = lx_abort ).

       ENDTRY.

CALL METHOD lr_inv_adv->/SAPSRM/IF_PDO_BASE~submit_update( ).

*  CHANGING

*    co_message_handler = lr_message

     .

  CATCH /sapsrm/cx_pdo_wrong_mode .

  CATCH /sapsrm/cx_pdo_abort .

ENDTRY.

         CALL FUNCTION '/SAPSRM/FU_WF_RFC_DECISION'

           EXPORTING

             iv_header_guid = I_GUID

             iv_mode        = lv_MODE

             iv_botype      = lv_OBJECTTYPE

             iv_wiid        = I_IV_WIID

             iv_decision    = lv_DECISION

             iv_approver    = I_APPROVER

           IMPORTING

             return_code    = return_code

           TABLES

             message_lines  = lt_message

           EXCEPTIONS

             error_in_pdo   = 1

             OTHERS         = 2.

         IF sy-subrc <> 0.

* Implement suitable error handling here

         ENDIF.

After execute this function module i got message REJECTION NOTE IS MANDATORY.

Regards,

Nishant

Answers (0)