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: 

Multiple same BADI implemented

bolivs22
Participant
0 Kudos

I implemented a BADI ZME_PROCESS_PO_CUST. in DEV system it is working properly but after transporting to QAS the BADI is not called. when I check in SXC_EXIT table there is already implemented BADI but different name ZMM_PROCESS_PO_CUST and different code.I tried to put a break-point for these two but both of these badi is not called.

why the implemented badi is not called both is already active . is it because the ZMM_PROCESS_PO_CUST is already implemented ? if yes but why in dev system, the implemented badi is working?

the only objects i have in DEV System

class -> ZCL_IM_ME_PROCESS_PO_CUST

Enhancement Implementation -> ZME_PROCESS_PO_CUST

Business Add Ins -> ZME_PROCESS_PO_CUST

15 REPLIES 15

matt
Active Contributor

ZME_PROCESS_PO_CUST is an own developed BADI so we can't give you specific help. You need to check its definition and implementation in QAS and DEV. E.g. is it defined as a multiple use BADI?

former_member736527
Active Participant
0 Kudos

Since this is a custom BAdI, I am not sure what customizations your system has. Some generic things to check.

1) Check if the transport has moved correctly to QAS. Also, check whether all the customizing transports have moved too.

2) Check the properties(Regarding multiple use ) / implementation is active or not in SE18.

3) Put a breakpoint at CL_EXITHANDLER and GET BADI to check whether your BAdI is getting triggered.

I think the OP means the implementation ZME_PROCESS_PO_CUST if the standard BAdI ME_PROCESS_PO_CUST. It is just a typo I guess.

0 Kudos

about the Multiple Use check box , I tried but changing it is not allowed after transport

i know i can change it if i unrelease the transport and delete the object in the transport using RDDIT076 then create new transport but i am not allowed to unrelease the transport

do you know other ways to change it to multiple use?

btw thanks for the answer

0 Kudos

all objects are also moved to ccq

Changing the BADI definition into multiple use is a SAP modification that is not preferred and most IT teams do not allow.

You might create a customer BADI definition and set multiple use. Then create a single SAP BADI implementation that does call the customer BADI definition that allow multiple implementation. More easy would be to merge the 2 existing BADI implementations into a single one.

0 Kudos

jack.graus2 A custom multiple use BADI seems the best solution in my view.

0 Kudos

Why matthew.billingham? I'm not much used to those things, but if the standard one is not multi, why to create a custom one? If it's because readability, you just must (you will do it anyways) to cut your implementation in pieces and call them the same way you'd call multiple implementations.

What am I missing?

vicen.lozano The advantage is that you decouple the implementations from the main BADI and each other. If you want another implementation, you can just add it, without changing the main BADI or anything else.

0 Kudos

But you need to mess with a standard SAP thing... I don't like it. If the BAdI was "multi", then I'd go for multiple implementations, but for a standard single one... not sure.

Anyways, thanks for the answer, mate.

DominikTylczyn
Active Contributor

matthew.billingham I think the OP means the implementation ZME_PROCESS_PO_CUST if the standard BAdI ME_PROCESS_PO_CUST. It is just a typo I guess.

bolivs22
Participant
0 Kudos

yes the badi definition is ME_PROCESS_PO_CUST and the badi implementation name is ZMM_PROCESS_PO_CUST

bolivs22
Participant
0 Kudos

ZMM_PROCESS_PO_CUST and ZME_PROCESS_PO_CUST is the implementation name

raymond_giuseppi
Active Contributor

The BAdI ME_PROCESS_PO_CUST doesn't allow multiple use, check its definition with SE18 (the box Multiple Use is not checked)

  • You have to deactivate the old implementation to activate yours (or merge the codes of both class in a single implenting class)
  • Check in development system if the old implentation was (implicitly) deactivated.

Sandra_Rossi
Active Contributor
0 Kudos

bolivs22 Did you see Matthew question? Please answer. Hopefully Raymond has checked for you.