Dear HIREN K.CHITALIA,
Nice meeting you through forum.
I have an requirement to update the Delivery text for the particular PR and for particular line item
I tried with a function module BAPI_PR_CHANGE for delivery text change for PR with PR number and PRITEMTEXT structure by passing PR no, line item no, Text id & Text_line parameters, while executing, the return parameter it shows that the 'Purchase requisition changed' but its not getting reflected in the transaction (ME52N).
Please let me know where i'm missing .
Thanks,
Senthil.
Hi Hiren,
I know its been very long time since you posted this query I recently came across the same requirement and have done the below coding which solves this issue. Please go through the below code for appending a new line iten in PR.
REPORT ztest1234.
PARAMETERS : p_banfn TYPE vbep-banfn OBLIGATORY.
DATA:
prheader LIKE bapimereqheader, "ok
prheaderx LIKE bapimereqheaderx, "ok
testrun TYPE bapiflag-bapiflag, "ok
prnumber TYPE bapimereqheader-preq_no,
prheaderexp LIKE bapimereqheader, "ok
return LIKE bapiret2 OCCURS 0, "ok
pritem LIKE bapimereqitem OCCURS 0, "ok
pritemx LIKE bapimereqitemx OCCURS 0, "ok
wa_pritemx TYPE bapimereqitemx,
praccount LIKE bapimereqaccount OCCURS 0, "ok
praccountproitsegment LIKE bapimereqaccountprofitseg OCCURS 0, "ok
praccountx LIKE bapimereqaccountx OCCURS 0,
praddrdelivery LIKE bapimerqaddrdelivery OCCURS 0,
pritemtext LIKE bapimereqitemtext OCCURS 0,
prheadertext LIKE bapimereqheadtext OCCURS 0,
iv_banfn TYPE eban-banfn. "OK
DATA: pritem1 TYPE bapimereqitemimp OCCURS 0 WITH HEADER LINE. "ok
DATA: wa_pritem TYPE bapimereqitem.
DATA : lv_linecnt TYPE n.
iv_banfn = p_banfn.
CALL FUNCTION 'BAPI_PR_GETDETAIL'
EXPORTING
number = iv_banfn
account_assignment = 'X'
item_text = 'X'
header_text = 'X'
delivery_address = 'X'
* serial_numbers = serial_numbers
* sc_components = components
version = 'X'"version
* services = services
IMPORTING
prheader = prheader
TABLES
* allversions = allversions
* extensionout = extensionout
prheadertext = prheadertext
pritemtext = pritemtext
praddrdelivery = praddrdelivery
praccount = praccount
* serialnumbers = serialnumbers
* prcomponents = prcomponents
* serviceoutline = serviceoutline
* servicelines = servicelines
* servicelimit = servicelimit
* servicecontractlimits = servicecontractlimits
* serviceaccount = serviceaccount
* servicelongtexts = servicelongtexts
pritem = pritem
return = return
EXCEPTIONS
OTHERS = 0.
CLEAR : wa_pritem.
LOOP AT pritem INTO wa_pritem.
MOVE-CORRESPONDING wa_pritem TO pritem1.
APPEND pritem1.
CLEAR : wa_pritem, pritem1.
ENDLOOP.
prheaderx-preq_no = 'X'.
prheaderx-item_intvl = 'X'.
CLEAR : lv_linecnt.
DESCRIBE TABLE pritem LINES lv_linecnt.
CLEAR : wa_pritem.
READ TABLE pritem INTO wa_pritem INDEX 1.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING wa_pritem TO pritem1.
pritem1-preq_item = lv_linecnt + 1.
APPEND pritem1.
ENDIF.
wa_pritemx-preq_item = lv_linecnt + 1.
wa_pritemx-preq_itemx = 'X'.
wa_pritemx-material = 'X'.
wa_pritemx-plant = 'X'.
wa_pritemx-store_loc = 'X'.
wa_pritemx-pur_group = 'X'.
wa_pritemx-quantity = 'X'.
wa_pritemx-unit = 'X'.
wa_pritemx-del_datcat_ext = 'X'.
wa_pritemx-deliv_date = 'X'.
wa_pritemx-fixed_vend = 'X'.
wa_pritemx-preq_price = 'X'.
wa_pritemx-price_unit = 'X'.
wa_pritemx-purch_org = 'X'.
wa_pritemx-vend_mat = 'X'.
APPEND wa_pritemx TO pritemx.
CALL FUNCTION 'BAPI_PR_CHANGE'
EXPORTING
number = iv_banfn
* prheader = prheader
* prheaderx = prheaderx
* testrun = testrun
*IMPORTING
* prheaderexp = prheaderexp
TABLES
* prheadertext = prheadertext
* extensionin = extensionin
* extensionout = extensionout
* allversions = allversions
* pritemtext = pritemtext
* praddrdelivery = praddrdelivery
* praccountx = praccountx
* praccountproitsegment = praccountproitsegment
* praccount = praccount
* serialnumber = serialnumber
* serialnumberx = serialnumberx
* prcomponents = prcomponents
* prcomponentsx = prcomponentsx
* pritemsource = pritemsource
* pritemexp = pritemexp
pritemx = pritemx
pritem = pritem1
* prversion = prversion
* prversionx = prversionx
return = return
* serviceoutline = serviceoutline
* serviceoutlinex = serviceoutlinex
* servicelines = servicelines
* servicelinesx = servicelinesx
* servicelimit = servicelimit
* servicelimitx = servicelimitx
* servicecontractlimits = servicecontractlimits
* servicecontractlimitsx = servicecontractlimitsx
* serviceaccount = serviceaccount
* serviceaccountx = serviceaccountx
* servicelongtexts = servicelongtexts
EXCEPTIONS
OTHERS = 01.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WRITE :/ 'LineItem', pritem1-preq_item, 'Created for PR', p_banfn.
Hi,
For adding a new line item to Purchase Requisition, You must use BAPI_PR_CHANGE( it just performs like an Enjoy transaction) & then BAPI_TRANSACTION_COMMIT.
While coding better use BAPI_PR_GETDETAIL to populate the data.
BAPI_REQUISITION_CHANGE is only meant for changing the data for the existing line items and header, but this couldn't create a new line item.
Regards,
Prakash
Add a comment