BAPI – Modification des offres (SD)
Bonjour,
Pour modifier les offres client (VA22), on peut utiliser la BAPI : BAPI_CUSTOMERQUOTATION_CHANGE
Exemple :
On veut ajouter un motif de refus dans tous les postes d’un offre wv_vbeln.
DATA : ws_headerx TYPE bapisdh1x,
wt_return TYPE TABLE OF bapiret2,
ws_return TYPE bapiret2,
wt_item TYPE TABLE OF bapisditm,
ws_item TYPE bapisditm,
wt_itemx TYPE TABLE OF bapisditmx,
ws_itemx TYPE bapisditmx.
DATA : wt_vbap TYPE TABLE OF vbap,
ws_vbap TYPE vbap.
SELECT * INTO TABLE wt_vbap
FROM vbap
WHERE vbeln = wv_vbeln.
IF sy-dbcnt > 0.
ws_headerx-updateflag = ‘U’.
LOOP AT wt_vbap INTO ws_vbap.
CLEAR ws_item.
CLEAR ws_itemx.
* N° de poste
MOVE ws_vbap-posnr TO ws_item-itm_number.
MOVE ws_vbap-posnr TO ws_itemx-itm_number.
move ws_vbap-matnr to ws_item-material.
ws_itemx-material = ‘X’.
* Motif de refus
IF wv_step IS NOT INITIAL.
ws_item-reason_rej = ‘XX’.
ELSE.
ws_item-reason_rej = ‘YY’.
ENDIF.
ws_itemx-reason_rej = ‘X’.
APPEND ws_item TO wt_item.
APPEND ws_itemx TO wt_itemx.
ENDLOOP.
CALL FUNCTION ‘BAPI_CUSTOMERQUOTATION_CHANGE’
EXPORTING
salesdocument = wv_vbeln
quotation_header_inx = ws_headerx
TABLES
return = wt_return
quotation_item_in = wt_item
quotation_item_inx = wt_itemx .
Ne pas oublier BAPI_TRANSACTION_COMMIT