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: 

How to create Service PR using BAPI_PR_CREATE?

gary07a
Explorer
0 Kudos

How to create Service PR using BAPI_PR_CREATE?

Please send the complete working code as I am able to create the PR with ITem but for PR, it is giving error "Enter only one true account assignment Message no. KI249".

4 REPLIES 4

Sandra_Rossi
Active Contributor
0 Kudos

Here is how to work with BAPI, usually you have one BAPI_*_GETDETAIL and one BAPI_*_CREATE:

  1. Create the object manually (ask someone at your location if you can't do it yourself)
  2. Create a program which reads this object via BAPI_*_GETDETAIL and see all the values of the exported parameters
  3. Create a program which creates a copy of this object via BAPI_*_CREATE by passing the values of the BAPI_*_GETDETAIL exported parameters

Good luck!

Sandra_Rossi
Active Contributor
0 Kudos

And of course, refer to the SAP documentation and to SAP notes like 1950319 - BAPI_PR_CREATE: Template for creating service PR - SAP for Me.

gary07a
Explorer
0 Kudos

Hi Sandra,

Can you please help where I am doing wrong in the below code.. I am getting this error - "Enter only one true account assignment"


gs_header-pr_type = 'NB'."
gs_headerx-pr_type = 'X'.

CLEAR: ls_item.
ls_item-preq_item = '00010'.
ls_item-PURCH_ORG = wa_output-ekorg.
ls_item-pur_group = wa_output-ekgrp."
ls_item-short_text = 'PR Text'.
ls_item-plant = wa_output-werks.
ls_item-quantity = wa_output-menge.
ls_item-DES_VENDOR = wa_output-lifnr.
ls_item-FIXED_VEND = wa_output-lifnr.
ls_item-matl_group = wa_output-matkl."
ls_item-item_cat = '9'.
ls_item-acctasscat = 'N'.
ls_item-pckg_no = '0000000001'."
APPEND ls_item to lt_item.

CLEAR: ls_itemx.
ls_itemx-preq_item = '00010'.
ls_itemx-PURCH_ORG = 'X'.
ls_itemx-preq_itemx = 'X'.
ls_itemx-pur_group = 'X'."
ls_itemx-short_text = 'X'."
ls_itemx-plant = 'X'."
ls_itemx-quantity = 'X'.
ls_itemx-DES_VENDOR = 'X'.
ls_itemx-FIXED_VEND = 'X'.
ls_itemx-matl_group = 'X'."
ls_itemx-item_cat = 'X'."
ls_itemx-acctasscat = 'X'."
ls_itemx-pckg_no = 'X'."
APPEND ls_itemx to lt_itemx.

CLEAR: ls_account.
ls_account-preq_item = '00010'.
ls_account-serial_no = '01'.
*account-quantity = '0.955'.
ls_account-CO_AREA = 'SBCC'.
*ls_account-gl_account = wa_output-kstar.
*ls_account-costcenter = wa_output-kstar.
ls_account-NETWORK = wa_output-aufnr.
ls_account-activity = wa_output-vornr.
ls_account-wbs_element = wa_output-posid.
*account-profit_ctr = '9999999999'.
APPEND ls_account to lt_account.

CLEAR: ls_accountx.
ls_accountx-preq_item = '00010'.
ls_accountx-serial_no = '01'.
ls_accountx-preq_itemx = 'X'.
ls_accountx-serial_nox = 'X'.
ls_accountx-CO_AREA = 'X'.
*accountx-quantity = 'X'.
*accountx-distr_perc = 'X'.
*ls_accountx-gl_account = 'X'.
ls_accountx-wbs_element = 'X'.
*ls_accountx-costcenter = 'X'.
ls_accountx-NETWORK = 'X'.
ls_accountx-activity = 'X'.
*accountx-co_area = 'X'.
*accountx-profit_ctr = 'X'.
APPEND ls_accountx to lt_accountx.

CLEAR: ls_service.
ls_service-doc_item = '00010'.
*ls_service-outline = '0000000001'.
ls_service-srv_line = '0000000010'.
ls_service-short_text = wa_output-ktext1.
ls_service-quantity = wa_output-menge.
ls_service-uom = wa_output-meins.
ls_service-gross_price = wa_output-tbtwr.
ls_service-currency = 'SAR'.
*service-matl_group = 'AS07'."物料组
APPEND ls_service to lt_service.

CLEAR: ls_servicex.
ls_servicex-doc_item = '00010'.
*ls_servicex-outline = '0000000001'.
ls_servicex-srv_line = '0000000010'.
ls_servicex-short_text = 'X'.
ls_servicex-quantity = 'X'.
ls_servicex-uom = 'X'.
ls_servicex-gross_price = 'X'.
ls_servicex-currency = 'X'.
*servicex-matl_group = 'X'.
APPEND ls_servicex to lt_servicex.

CLEAR: ls_serviceaccount.
ls_serviceaccount-doc_item = '00010'.
ls_serviceaccount-outline = '0000000001'.
ls_serviceaccount-srv_line = '0000000010'.
ls_serviceaccount-serial_no = '01'.
ls_serviceaccount-serial_no_item = '01'.
ls_serviceaccount-percent = '100'.
APPEND ls_serviceaccount To lt_serviceaccount.

CLEAR: ls_serviceaccountx.
ls_serviceaccountx-doc_item = '00010'.
ls_serviceaccountx-outline = '0000000001'.
ls_serviceaccountx-srv_line = '0000000010'.
ls_serviceaccountx-serial_no = '01'.
ls_serviceaccountx-serial_no_item = 'X'.
ls_serviceaccountx-percent = 'X'.
APPEND ls_serviceaccountx To lt_serviceaccountx.

CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
prheader = gs_header
prheaderx = gs_headerx
* TESTRUN =
IMPORTING
number = lv_preq_no
* PRHEADEREXP =
tables
return = lt_return
pritem = lt_item
PRITEMX = lt_itemx
* PRITEMEXP =
* PRITEMSOURCE =
PRACCOUNT = lt_account
* PRACCOUNTPROITSEGMENT =
PRACCOUNTX = lt_accountx
SERVICELINES = lt_service
SERVICELINESX = lt_servicex
SERVICEACCOUNT = lt_serviceaccount
SERVICEACCOUNTX = lt_serviceaccountx
.

READ TABLE lt_return INTO wa_return WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.

Sandra_Rossi
Active Contributor
0 Kudos

Do what I said.

Good luck.