cancel
Showing results for 
Search instead for 
Did you mean: 

Convert preferred vendor to fixed vendor

Former Member
0 Kudos

Hi,

I'm trying to convert a preferred vendor to fixed vender using BAdI BBP_DOC_CHANGE_BADI.

I use the following coding:

LS_HEADER = ES_HEADER.

LT_ITEM[] = ET_ITEM[].

LT_ACCOUNT[] = ET_ACCOUNT[].

LT_PARTNER[] = ET_PARTNER[].

LT_ORGDATA[] = ET_ORGDATA[].

LT_HCF[] = ET_HCF[].

LT_ICF[] = ET_ICF[].

if sy-tcode = 'BBPSC08'. "Completion Workflow

  • item data

loop at et_item into ls_item.

  • Jörg Sina, IP#DDDDDDDD, TA:

  • Section: Put your BBP_SC_CHANGE logic here

READ TABLE lt_partner INTO ls_partner

WITH KEY partner_fct = '00000039' "Partnerfkt. '39' = wunschlieferant

p_guid = ls_item-guid.

lv_idx = sy-tabix.

if sy-subrc = 0.

ls_partner-partner_fct = '00000019'. "Partnerfkt. '19' = fester lieferant

  • append ls_partner to lt_partner.

modify lt_partner index lv_idx from ls_partner.

  • ls_msg-p_guid = ls_item-guid.

  • ls_msg-msgty = 'I'.

  • ls_msg-arbgb = 'ZEBP'.

  • ls_msg-msgnr = '011'.

  • append ls_msg to et_msg.

endif.

endloop.

endif.

*Interface: Move Local Data to Export/Changing Interface

ES_HEADER = LS_HEADER.

ET_ITEM[] = LT_ITEM[].

ET_ACCOUNT[] = LT_ACCOUNT[].

ET_PARTNER[] = LT_PARTNER[].

ET_ORGDATA[] = LT_ORGDATA[].

ET_HCF[] = LT_HCF[].

ET_ICF[] = LT_ICF[].

When the partner is changed from 39 to 19 the following message appears:

BBP:PD(144): Partner function may not be changed

I've tried out the coding given as example in several postings in this forum..

Maybe anybody can help.

Regards

Joerg

Accepted Solutions (1)

Accepted Solutions (1)

yann_bouillut
Active Contributor
0 Kudos

Hi,

Here is a sample code i used and it works.

method IF_EX_BBP_DOC_CHANGE_BADI~BBP_SC_CHANGE .

Constants : c_vendor type BBP_PDS_PARTNER-PARTNER_FCT

value '00000019',

c_preferred_vend type BBP_PDS_PARTNER-PARTNER_FCT

value '00000039'.

Data : ls_partner type BBP_PDS_PARTNER.

*Read Table it_partner into ls_partner With key PARTNER_FCT = c_vendor.

*

*If sy-subrc NE 0.

Loop at it_partner into ls_partner

where PARTNER_FCT Eq c_preferred_vend.

Move c_vendor To Ls_partner-PARTNER_FCT.

Modify it_partner from ls_partner index sy-tabix.

Endloop.

*Endif.

et_partner[] = it_partner[].

ET_ORGDATA[] = IT_ORGDATA[].

ET_ITEM[] = IT_ITEM[].

ES_HEADER = IS_HEADER.

ET_ACCOUNT[] = IT_ACCOUNT[].

*break ybo

*IT_PARTNER

*ET_PARTNER[]

endmethod.

Kind regards,

Yann

Former Member
0 Kudos

Hello Yann,

I've tried this coding earlier and get the the same results: BBP_PD(144).

Any ideas?

Regards,

Joerg

yann_bouillut
Active Contributor
0 Kudos

Hi,

What about OSS note 962474 ?

Kind regards,

Yann

Former Member
0 Kudos

HI,

- I've already implemented this note...

Same results

Regards,

Joerg

Former Member
0 Kudos

Hi,

I've found a solution that works.

Instead of converting the BUP Item I create a new one.

loop at et_item into ls_item.

  • Section: Put your BBP_SC_CHANGE logic here

READ TABLE lt_partner INTO ls_partner

WITH KEY partner_fct = '00000039' "Partnerfkt. '39' = wunschlieferant

p_guid = ls_item-guid.

lv_idx = sy-tabix.

if sy-subrc = 0.

READ TABLE lt_partner INTO ls_partner

WITH KEY partner_fct = '00000019' "Partnerfkt. '39' = wunschlieferant

p_guid = ls_item-guid.

if sy-subrc <> 0.

ls_partner-partner_fct = '00000019'. "Partnerfkt. '19' = fester lieferant

append ls_partner to lt_partner.

endif.

endif.

endloop.

endif.

thx

Joerg

Answers (0)