Application Development and Automation 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: 
Read only

BADI

Former Member
0 Likes
2,272

Hi Friends..

Can any body let me know example of screen or menu enhancement using BADI. I just want a requirement in which screen or menu enhancement is there.I just want a t-code or BADI name in which we can do screen enhancement.

This just update my knowledge.

I am sure of Reward points.

Thanks in Advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,170

hi Jak,

Function Code and Screen Enhancements

Use

The main use of BAdIs is to enhance ABAP programs using object plug-ins. For reasons of compatibility, and to be able to use the classic means for designing a user interface for an ABAP-based SAP system (GUI status and screens,) menu enhancements and screen enhancements were adopted almost unchanged from the classic BAdIs into the BAdIs of the new enhancement concept. These enhancements represent a concept that is independent of enhancements through object plug-ins and they are not supported using special ABAP statements.

Features

Function Code Enhancements

Menu enhancements have been adopted under the new name “Function Code Enhancements“, whereby the classic concept has been kept in its entirety. The use of the ABAP statements GET BADI und CALL BADI is not necessary. The runtime environment inserts the implementation of a function code enhancement automatically during program regeneration.

Screen Enhancements

In the case of screen enhancements, the class concept has been adopted – with the following exceptions:

キ The previous call to the method CL_EXITHANDLER=>GET_PROG_AND_DYNP_FOR_SUBSCR, has been replaced by the call CL_ENH_BADI_RUNTIME_FUNCTIONS=>GET_PROG_AND_DYNP_FOR_SUBSCR with the same interface.

キ The methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN will no longer be generated. You can create your own BAdI methods for data transport and call them using CALL BADI.

キ You no longer need to call the CL_EXITHANDLER=>SET_INSTANCE_FOR_SUBSCREENS and CL_EXITHANDLER=>GET_INSTANCE_FOR_SUBSCREENS methods. These methods are now unnecessary as they only place the BAdI reference in a temporary storage.

SET_INSTANCE_FOR_SUBSCREENS is no longer necessary.

GET_INSTANCE_FOR_SUBSCREENS can, if necessary, be replaced by GET BADI.

<b>check this link for further details</b>

http://help.sap.com/saphelp_erp2005/helpdata/en/c1/133442d692af04e10000000a1550b0/frameset.htm

http://help.sap.com/saphelp_erp2005/helpdata/en/32/a83942424dac04e10000000a1550b0/frameset.htm

Regards,

Santosh P

hi Jak,

Function Code and Screen Enhancements

Use

The main use of BAdIs is to enhance ABAP programs using object plug-ins. For reasons of compatibility, and to be able to use the classic means for designing a user interface for an ABAP-based SAP system (GUI status and screens,) menu enhancements and screen enhancements were adopted almost unchanged from the classic BAdIs into the BAdIs of the new enhancement concept. These enhancements represent a concept that is independent of enhancements through object plug-ins and they are not supported using special ABAP statements.

Features

Function Code Enhancements

Menu enhancements have been adopted under the new name “Function Code Enhancements“, whereby the classic concept has been kept in its entirety. The use of the ABAP statements GET BADI und CALL BADI is not necessary. The runtime environment inserts the implementation of a function code enhancement automatically during program regeneration.

Screen Enhancements

In the case of screen enhancements, the class concept has been adopted – with the following exceptions:

&#65399; The previous call to the method CL_EXITHANDLER=>GET_PROG_AND_DYNP_FOR_SUBSCR, has been replaced by the call CL_ENH_BADI_RUNTIME_FUNCTIONS=>GET_PROG_AND_DYNP_FOR_SUBSCR with the same interface.

&#65399; The methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN will no longer be generated. You can create your own BAdI methods for data transport and call them using CALL BADI.

&#65399; You no longer need to call the CL_EXITHANDLER=>SET_INSTANCE_FOR_SUBSCREENS and CL_EXITHANDLER=>GET_INSTANCE_FOR_SUBSCREENS methods. These methods are now unnecessary as they only place the BAdI reference in a temporary storage.

SET_INSTANCE_FOR_SUBSCREENS is no longer necessary.

GET_INSTANCE_FOR_SUBSCREENS can, if necessary, be replaced by GET BADI.

<b>check this link for further details</b>

http://help.sap.com/saphelp_erp2005/helpdata/en/c1/133442d692af04e10000000a1550b0/frameset.htm

http://help.sap.com/saphelp_erp2005/helpdata/en/32/a83942424dac04e10000000a1550b0/frameset.htm

Regards,

Santosh P

14 REPLIES 14
Read only

Former Member
0 Likes
2,171

hi Jak,

Function Code and Screen Enhancements

Use

The main use of BAdIs is to enhance ABAP programs using object plug-ins. For reasons of compatibility, and to be able to use the classic means for designing a user interface for an ABAP-based SAP system (GUI status and screens,) menu enhancements and screen enhancements were adopted almost unchanged from the classic BAdIs into the BAdIs of the new enhancement concept. These enhancements represent a concept that is independent of enhancements through object plug-ins and they are not supported using special ABAP statements.

Features

Function Code Enhancements

Menu enhancements have been adopted under the new name “Function Code Enhancements“, whereby the classic concept has been kept in its entirety. The use of the ABAP statements GET BADI und CALL BADI is not necessary. The runtime environment inserts the implementation of a function code enhancement automatically during program regeneration.

Screen Enhancements

In the case of screen enhancements, the class concept has been adopted – with the following exceptions:

&#65399; The previous call to the method CL_EXITHANDLER=>GET_PROG_AND_DYNP_FOR_SUBSCR, has been replaced by the call CL_ENH_BADI_RUNTIME_FUNCTIONS=>GET_PROG_AND_DYNP_FOR_SUBSCR with the same interface.

&#65399; The methods PUT_DATA_TO_SCREEN and GET_DATA_FROM_SCREEN will no longer be generated. You can create your own BAdI methods for data transport and call them using CALL BADI.

&#65399; You no longer need to call the CL_EXITHANDLER=>SET_INSTANCE_FOR_SUBSCREENS and CL_EXITHANDLER=>GET_INSTANCE_FOR_SUBSCREENS methods. These methods are now unnecessary as they only place the BAdI reference in a temporary storage.

SET_INSTANCE_FOR_SUBSCREENS is no longer necessary.

GET_INSTANCE_FOR_SUBSCREENS can, if necessary, be replaced by GET BADI.

<b>check this link for further details</b>

http://help.sap.com/saphelp_erp2005/helpdata/en/c1/133442d692af04e10000000a1550b0/frameset.htm

http://help.sap.com/saphelp_erp2005/helpdata/en/32/a83942424dac04e10000000a1550b0/frameset.htm

Regards,

Santosh P

Read only

Former Member
0 Likes
2,170

Hi Jak,

Refer to the link

<a href="http://help.sap.com/saphelp_erp2005/helpdata/en/6a/8b14e5340d11d5b3ba0050dae02d7c/frameset.htm">http://help.sap.com/saphelp_erp2005/helpdata/en/6a/8b14e5340d11d5b3ba0050dae02d7c/frameset.htm</a>

and

<a href="http://help.sap.com/saphelp_erp2005/helpdata/en/c1/133442d692af04e10000000a1550b0/frameset.htm">Function code and Screen Enhancements</a>

Lokesh

Message was edited by: Lokesh Aggarwal

Read only

Former Member
0 Likes
2,170

hi jai,

<b>Implementing Business Add-Ins (BADI)</b>

The use of object orientated code within SAP has lead to new method of enhancing standard SAP code called

Business Add-Ins or BADI's for short. Although the implementation concept is based on classes, methods and

inheritance you do not really have to understand this fully to implement a BADI. Simply think of methods

as a function module with the same import and export parameters and follow the simple instructions below.

Steps:

1. Execute Business Add-In(BADI) transaction SE18

2. Enter BADI name i.e. HRPBSGB_HESA_NISR and press the display

button

3. Select menu option Implementation->Create

4. Give implementation a name such as Z_HRPBSGB_HESA_NISR

5. You can now make any changes you require to the BADI within this

implementation, for example choose the Interface tab

6. Double click on the method you want to change, you can now enter

any code you require.

7. Please note to find out what import and export parameters a

method has got return the original BADI definition

(i.e. HRPBSGB_HESA_NISR) and double click on the method name

for example within HRPBSGB_HESA_NISR contract is a method

8. When changes have been made activate the implementation

check this link..it has some more info about implementations of screen and menu exits using BADI

http://help.sap.com/saphelp_47x200/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm

Message was edited by: Ashok Kumar Prithiviraj

Read only

Former Member
0 Likes
2,170

Hi Jak,

for example you take this BADI <b>LE_SHP_TAB_CUST_OVER</b> this is used in Delivery transaction for user defined screens. you go to SE18 and see the sample implementation of the BADI.

if you want to add your own implementation use SE19 and create a Ztype and then implement all the methods..

http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm

regards

vijay

Read only

0 Likes
2,170

Hi Vijay,

Thanks a lot...

This BADI LE_SHP_TAB_CUST_OVER is for screen or for menu enhancement..

Thanks&Regards

Read only

0 Likes
2,170

Hi Jak,

it is for used for Customer Screen, it is a tab page. here you can show your own data, and item details etc.

if you go to SE18 you can find about it, it is related to Screen .

regards

vijay

Read only

0 Likes
2,170

Hi Vijay

Thank you..

DO you have any step by step procedure for creating screen enhancement BADI..I am not getting any thing just by reading documentation..

Your help is highly appreciated..

Thanks in Advance..

Read only

0 Likes
2,170

Hi Jak,

Refer this link

<a href="http://dctcspd2/saphelp/EN/ee/a1d548892b11d295d60000e82de14a/frameset.htm">Step by step procedure to create a BADI</a>

<a href="http://dctcspd2/saphelp/EN/ee/a1d548892b11d295d60000e82de14a/frameset.htm">http://dctcspd2/saphelp/EN/ee/a1d548892b11d295d60000e82de14a/frameset.htm</a>

I think this is the best and simplest documents available online.

OR

Goto se18 -> find the BADI definition -> take any example... Go through the interface, see all the methods available.

Goto se19 -> Create an implementation of the BADI.

You can also see the example implementation of the BADI to get an idea of how you should code....

Also Refer to the application help of the transactions Se18 and Se19.

Hope it helps...

Lokesh

pls. reward appropriate points

Message was edited by: Lokesh Aggarwal

Read only

0 Likes
2,170

<b>Implementing Screen Enhancements</b>

For general information on how to implement Business Add-Ins, refer to the section <b>Implementing Business Add-Ins</b>.

The user of the screen enhancement should perform the following steps:

...

1. Create a screen of the Subscreen type. Arrange the required fields on the screen.

2. Write the program for the screen by creating either a module pool or a function group. The program could have the following contents, for example:

Topinclude:

DATA: exit TYPE REF TO if_ex_badi_screen,

flight TYPE sflight.

TABLES sflview.

At PBO time:

MODULE status_0100 OUTPUT.

IF exit IS INITIAL.

CALL METHOD cl_exithandler=>get_instance_for_subscreens

CHANGING

instance = exit

EXCEPTIONS

OTHERS = 6.

...

ENDIF.

CALL METHOD exit->get_data_from_screen

IMPORTING

flight = flight

EXCEPTIONS

reserved = 1

OTHERS = 2.

...

SELECT SINGLE * FROM sflview

WHERE carrid = flight-carrid AND

connid = flight-connid AND

fldate = flight-fldate.

..

ENDMODULE.

At PAI time:

If data has been changed, the method PUT_DATA_TO_SCREEN is called at PAI.

MODULE user_command_0100 INPUT.

CALL METHOD exit->put_data_to_screen

EXPORTING

flight = flight

EXCEPTIONS

reserved = 1

OTHERS = 2.

IF sy-subrc <> 0.

...

ENDMODULE.

3. Choose the Subscreens tab. Enter the name of the called program and of the subscreen.

4. Choose the Interfaces tab.

If required, add any lines necessary to the sample code.

<b>for implementing BADI see my previous post</b>

<b>reward if useful</b>

Read only

0 Likes
2,170

Hi,

First find out the BADI .

Go to SE19 , now create the Implementation

Specify Z*

click on Create.....

it will ask you the definition Name. Give Descriptions.

now click on the tab Interface.

now double click on each method and implement.

for the above Badi.

ACTIVATE_TAB_PAGE

this is the implementation..

method IF_EX_LE_SHP_TAB_CUST_OVER~ACTIVATE_TAB_PAGE .
"create your own page here....
  EF_CAPTION = 'Page Name'.
  EF_PROGRAM = 'Program Name'.
  EF_DYNPRO  = '0100'.    "Screen number
endmethod.

TRANSFER_DATA_TO_SUBSCREEN

method implementation.

here you will pass data to screen .

TRANSFER_DATA_FROM_SUBSCREEN

get the data from screens...

PASS_FCODE_TO_SUBSCREEN

______________________________

Regards

vijay

Message was edited by: Vijay Babu Dudla

Read only

0 Likes
2,170

Hi Lokesh,

The link is not working..

Thanks & Regards

Read only

0 Likes
2,170

Hi Jak,

Try this link is

<a href="http://help.sap.com/saphelp_erp2005/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm">http://help.sap.com/saphelp_erp2005/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm</a>

Also what I feel is you should go through the application help of the transactions SE18 first and then SE19. it has the easiest and complete step by step procedure for BADIs...

Hope it helps....

Lokesh..

pls. reward appropriate points

Message was edited by: Lokesh Aggarwal

Read only

0 Likes
2,170

Hi Vijay,

Thank You Very much.

Read only

Former Member