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: 

Insert into vbpa function module

former_member2492
Active Participant
0 Kudos

I am in user exit USEREXIT_FILL_VBRK_VBRP

and I want to insert into a record in vbpa but for a different partner:

Select SINGLE *
from vbpa
where vbeln eq @vbrp-vbeln
INTO table @data(lt_vbpa).
READ TABLE lt_vbpa INTO data(ls_vbpa) with key parvw = 'PY'.
IF sy-subrc ne 0.
READ TABLE lt_vbpa INTO data(ls_vb) with key parvw = 'SE'.
IF sy-subrc eq 0.
ls_vb-parvw = 'PY'.
>>>>>insert record into vbpa but with a different partner
ENDIF.
ENDIF.

What function module can I use,or can do it in other way?

Thank you

1 ACCEPTED SOLUTION

former_member2492
Active Participant
0 Kudos

To add change the partner you add one with the following code. Dont forget to BAPI_TRANSACTION_COMMIT

              ls_bapisdh1x-updateflag = 'U'.
ls_partner-partn_role = ls_vb-parvw.
ls_partner-partn_numb = ls_vb-kunnr.
ls_partner-itm_number = ls_vb-posnr.
ls_partner-unload_pt = ls_vb-ablad.
ls_partner-country = ls_vb-land1.
ls_partner-address = ls_vb-adrnr.
ls_partner-priv_addr = ls_vb-adrnp.
ls_partner-transpzone = ls_vb-lzone.
ls_partner-vat_reg_no = ls_vb-stceg.
APPEND ls_partner to lt_partners.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = ls_vb-vbeln
order_header_inx = ls_bapisdh1x
TABLES
return = lt_return
PARTNERS = lt_partners.
14 REPLIES 14

FredericGirod
Active Contributor
0 Kudos

It is really strange to update a business table without using a business transaction to do it.

former_member2492
Active Participant
0 Kudos

I want to insert a record for a different partner but not update any record. frdric.girod

FredericGirod
Active Contributor
0 Kudos

You change the content of the table as you create a new entry. Are you sure SAP do nothing when a new partner is inserted ? sure ?

former_member2492
Active Participant
0 Kudos

no idea what it does. I've just been assigned this task. frdric.girod

FredericGirod
Active Contributor
0 Kudos

did you try BAPI_SALESORDER_CHANGE ? (tables PARTNER_CHANGES )

former_member2492
Active Participant
0 Kudos

I'll try it right now frdric.girod

former_member2492
Active Participant
0 Kudos

dont know why it says

  • FB call: insufficient parameters

I'm filling:

            ls_bapisdh1x-updateflag = 'U'.
ls_bapisdh1x-SALES_ORG = 'X'.
ls_bapisdh1x-DISTR_CHAN = 'X'.
ls_bapisdh1x-DIVISION = 'X'.
ls_bapisdh1x-PURCH_NO_C = 'X'.
ls_bapisdh1x-CUST_GROUP = 'X'.

ls_partnerchanges-DOCUMENT = ls_vb-vbeln.

ls_partnerchanges-DOCUMENT = ls_vb-vbeln.
ls_partnerchanges-ITM_NUMBER = ls_vb-POSNR.
ls_partnerchanges-UPDATEFLAG = 'I'.
ls_partnerchanges-PARTN_ROLE = ls_vb-PARVW.
ls_partnerchanges-P_NUMB_OLD = ls_vb-kunnr.
ls_partnerchanges-P_NUMB_NEW = ls_vb-kunnr.

am I missing anything?

frdric.girod

FredericGirod
Active Contributor
0 Kudos

when you have structure like ls_bapisdh1x, it is to indicate what you would like to change. For me you should not populate it

former_member2492
Active Participant
0 Kudos

frdric.girod this is a must ls_bapisdh1x-updateflag = 'U'. but for some reason there are

  • FB call: insufficient parameters

dont know why

SimoneMilesi
Active Contributor
0 Kudos

Hello Jonathan,

let's do a step back: why do you need that additional record? To save it in the invoice?
In this case you should work at the SAVE event instead that in creation.

Simone

former_member2492
Active Participant
0 Kudos

simone.milesi somehow I managed to make it work by filling only the partners and not partner changes table in the bapi .are you saying this is wrong and I should make the changes in the save?

former_member2492
Active Participant

thank you frdric.girod somehow I managed to make it work. if you post the asnwer with the bapi I will accept as an answer.

The changes should have been made in vf01,so its okay.

thank you everyone

FredericGirod
Active Contributor
0 Kudos

post your code, it will be better answer

former_member2492
Active Participant
0 Kudos

To add change the partner you add one with the following code. Dont forget to BAPI_TRANSACTION_COMMIT

              ls_bapisdh1x-updateflag = 'U'.
ls_partner-partn_role = ls_vb-parvw.
ls_partner-partn_numb = ls_vb-kunnr.
ls_partner-itm_number = ls_vb-posnr.
ls_partner-unload_pt = ls_vb-ablad.
ls_partner-country = ls_vb-land1.
ls_partner-address = ls_vb-adrnr.
ls_partner-priv_addr = ls_vb-adrnp.
ls_partner-transpzone = ls_vb-lzone.
ls_partner-vat_reg_no = ls_vb-stceg.
APPEND ls_partner to lt_partners.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = ls_vb-vbeln
order_header_inx = ls_bapisdh1x
TABLES
return = lt_return
PARTNERS = lt_partners.