Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Need to update partner for a PM notification

Former Member
0 Kudos

Hi,

I have to populate partner for a given notification (IW21 & IW22) from a Z table when partner is blank and tried to save. For this I am using 'BAPI_ALM_NOTIF_DATA_MODIFY'. I am passing

1. Notification number to BAPI2080_NOTHDRE import structure.

2. PARTN_ROLE, PARTN_ROLE_OLD, PARTNER and PARTNER_OLD in BAPI2080_NOTPARTNRI.

3. PARTN_ROLE, PARTN_ROLE_OLD, PARTNER and PARTNER_OLD in BAPI2080_NOTPARTNRI_X.

Here with above inputs passed to BAPI,

a) I am getting 'Partner Maintenance Cancelled' in BAPIRET2.

b) I am getting export parameters from BAPI, if there is already some partner for that notification but the

partner I am giving using BAPI is not reflecting in the transaction.

Please Help.

3 REPLIES 3

Former Member
0 Kudos

To update the partners you need to use the following FM:

CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'

EXPORTING

input = 'WE'

IMPORTING

output = wl_partner-partn_role.

wl_partner-partner = '0012345'.

APPEND wl_partner TO tl_partner.

Its also recommended to use the code below after the use of this bapi.

CALL FUNCTION 'BAPI_ALM_NOTIF_SAVE'

EXPORTING

number = wl_export-notif_no.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

I hope it helps.

Former Member
0 Kudos

Thanks Bruno

0 Kudos

Although this is an old post, but I faced similar issue and after some struggle wrote below code to update Sold to party on a notification in all scenarios.

Hope thisshould be helpful for others looking at same issue.

    DATA: lt_old_partner  TYPE TABLE OF bapi2080_notpartnre,

          lt_upd_partner  TYPE TABLE OF bapi2080_notpartnri,

          lt_upd_partnerx TYPE TABLE OF bapi2080_notpartnri_x,

          ls_old_partner  TYPE bapi2080_notpartnre,

          ls_upd_partner  TYPE bapi2080_notpartnri,

          ls_upd_partnerx TYPE bapi2080_notpartnri_x,

          lt_return       TYPE TABLE OF bapiret2.

    CALL FUNCTION 'BAPI_ALM_NOTIF_GET_DETAIL'

      EXPORTING

        number      = iv_notif

      TABLES

        notifpartnr = lt_old_partner.

* Check if a sold to party already exists.

    READ TABLE lt_old_partner

      INTO ls_old_partner

      WITH KEY partn_role = 'AG'

      TRANSPORTING ALL FIELDS.

    IF sy-subrc <> 0.

      READ TABLE lt_old_partner

        INTO ls_old_partner

        WITH KEY partn_role = 'SP'

        TRANSPORTING ALL FIELDS.

    ENDIF.


* Update Sold to Party information.

    ls_upd_partner-partn_role = 'AG'.

    ls_upd_partner-partner = iv_gpart.

    ls_upd_partnerx-partn_role = abap_true.

    ls_upd_partnerx-partner = abap_true.

* Fill old Partner information if available.

    ls_upd_partner-partn_role_old = ls_old_partner-partn_role.

    ls_upd_partner-partner_old = ls_old_partner-partner.

    ls_upd_partnerx-partn_role_old = ls_old_partner-partn_role.

    ls_upd_partnerx-partner_old = ls_old_partner-partner.

    APPEND: ls_upd_partner to lt_upd_partner,

            ls_upd_partnerx to lt_upd_partnerx.

    IF ls_old_partner IS NOT INITIAL.

      " Update only if already existing Partner Id & supplied one are different.

      IF ls_old_partner-partner <> iv_gpart.

        CALL FUNCTION 'BAPI_ALM_NOTIF_DATA_MODIFY'

          EXPORTING

            number        = iv_notif

          TABLES

            notifpartnr   = lt_upd_partner

            notifpartnr_x = lt_upd_partnerx

            return        = lt_return.

      ENDIF.

    ELSE.

      CALL FUNCTION 'BAPI_ALM_NOTIF_DATA_ADD'

        EXPORTING

          number      = iv_notif

        TABLES

          notifpartnr = lt_upd_partner

          return      = lt_return.

    ENDIF.

    READ TABLE lt_return

      WITH KEY type = 'E'

      TRANSPORTING NO FIELDS.

    IF sy-subrc IS NOT INITIAL. " Update Sucessful

      CALL FUNCTION 'BAPI_ALM_NOTIF_SAVE'

        EXPORTING

          number = iv_notif.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

        EXPORTING

          wait = gc_x.

      rv_updated = abap_true.

    ELSE.

      rv_updated = abap_false.

    ENDIF.