05-15-2009 6:27 PM
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.
05-15-2009 7:41 PM
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.
06-09-2009 11:28 AM
03-10-2016 8:03 PM
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.