P. 1
Step by Step Guide on BADI Multiple Use Implementation

Step by Step Guide on BADI Multiple Use Implementation

|Views: 0|Likes:
Published by Kishore Reddy

More info:

Published by: Kishore Reddy on Jan 01, 2013
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less







Step by Step guide on BADI Multiple use implementation
Email ThisBlogThis!Share to TwitterShare to Facebook
Step 1  Enter a BADI Definition name and Click on the CREATE button.

Enter a short description and under the TYPE section choose if you wish to have multiple implementation or a Filter object to the BADI. See F1 help on the multiple use and Filter to find more details

Click on Save and create a TP

Step 2  Define the Interface Use the menu GOTO  INTERFACE or simply double click on the interface name under the interface tab.

.Enter the method name and define the methods parameters in the interface.

.Select the method and click on the parameters button to enter the parameters for the method.

Click on Save and return back to the initial screen. . Follow the steps above to enter more methods if you wish too.

.Parameters for the second method.

.Click on save and activate to activate the custom BADI.

In our case the system adjusted the parameters for the methods. It changed the Exporting parameter to the Changing parameters .If there is any inconsistencies in the BADI definition and the interface definition the system will throw a warning message as shown below Based on the selection the system will automatically adjust the BADI definition or interface.

.Step 3  Create the Implementation for the BADI. You can either go to TCode SE19 or use the menu option Implementation  Create as shown in the screen shot below.

Enter the name of the BADI implementation you wish to create and click on the continue button. On the next screen enter a description for the implementation and click on the save button and create TP subsequently. .

Click on the interface tab .

. Write the code to achieve the functionality of the method.And double click on the method you wish to implement in the current BADI implementation.

.Click on the execute button to test the method.

Now click on the execute button against the method to execute the functionality.On the next screen click on the Edit Interface view button or the display icon next to the ZIF_EX_MYBADI node. .

.Enter the required parameters and click on execute to see the results or the output or the outcome of the method execution.

.Similarly finish the coding for the other methods.

Once done do the testing and see if it works fine .




Return to the main screen and activate the implementation of the BADI. . We will now proceed to write a simple program.Once the testing is done. We have not done MULTIPLE IMPLENTATION so far. So far what we have seen is only ONE IMPLEMENTATION of the BADI.

To call the method you can use the PATTERN option as shown below from the ABAP editor. Call to the method CL_EXITHANDLER to get the implementation name of the BADI 3. 1. Using the instance. call the method which has been implemented for the BADI.As seen above the program is very simple and has the following components. Data declaration (Type ref and any other data variables as required) 2. .

Do a CTRL + F6 to get the pattern button or click on the PATTERN button from the application tool bar. On the next screen enter the class name and the method to be called as shown below . Select the ABAP OBJECT patterns radiobutton and click on the continue button.

In the above case we changed the EXIT_NAME and the INSTANCE parameters. . Click on the continue button. Make changes as required and pass the respective parameters.It does not matter whether you are calling the static method or the instance method.

Now call the method from the interface using the interface reference l_BADI_INSTANCE as shown below Enter the parameters required and any additional code required for the report. .

Go to SE19 and enter a new name and click on the create button .Run the report and you will get the output as shown below Now lets go back and create a new IMPLEMENTATION in SE19 as we have enabled MULTIPLE USE in the BADI DEFINITION.

And click on the continue button.And when asked for the definition enter the same definition name. .

Enter a meaningful description and save and activate the second implementation. . Next double click on the method you wish to implement and write the code.

So we first go to the implementation 1 and place a break point as shown below. Save and activate the method and then return to the main screen and activate the implantation again. Now try to go to each of the implementation and place a breakpoint at the methods.As seen above in the second implementation we have hard coded the value for the email id instead of getting the value from the tables. And similarly go to the second implementation and place a breakpoint on the method as shown below .

. You will notice that the program will stop at both the breakpoints as the system triggers all the implementations if there is more than one for a multiple use BADI. Go to SE38 and execute the program developed in earlier steps.Once done.

.Now if you check the value of the variable emailed then you will notice that the emailed is fetched from the database.

Now click F7 till you reach to the next breakpoint or the next implementation .

the value of email-id will be overwritten as shown below.So if you see from the above screen. Now if you execute one step. . The cursor is at the second implementation and the value of the email-id is still available in the second implementation.

And once you execute completely you get the output of the report. .

However this sequence is dynamic and there is no guarantee that this sequence will be maintained all the time. .PLEASE NOTE: in our case the system first executed the FIRST BADI IMPLEMENTATION and later it executed the SECOND BADI IMPLENETATION.

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->