9
Creating Custom Screen in XD01 By Suresh Kumar Parvathaneni Go to Transaction SPRO à Logistics – General à Business Partner à Customers à Control à Adoption of Customer’s own Master Data fields à Prepare Modification à Free enhancement of Customer Master Record. Following screen appears: Go to CHANGE mode and Click ‘New Entries’ button. Then add a Screen Group (SK here)and meaningful description. Save the entry and then SELECT that entry and Click on ‘Label Tab Pages’. Add a Label Tab Page i.e. enter a Screen Number, Function Code and Meaningful Description. Save the entry and come back to the SPRO screen. Click Business Add-in: Processing Master Data Enhancements

BADI Customer Screen Enhancement

Embed Size (px)

Citation preview

Page 1: BADI Customer Screen Enhancement

Creating Custom Screen in XD01

By Suresh Kumar Parvathaneni

Go to Transaction SPRO à Logistics – General à Business Partner à Customers à Control à Adoption of Customer’s own Master Data fields à Prepare Modification à Free enhancement of Customer Master Record. 

Following screen appears:

 

Go to CHANGE mode and Click ‘New Entries’ button. Then add a Screen Group (SK here)and meaningful description. Save the entry and then SELECT that entry and Click on ‘Label Tab Pages’.

 

Add a Label Tab Page i.e. enter a Screen Number, Function Code and Meaningful Description.

Save the entry and come back to the SPRO screen. Click  Business Add-in: Processing Master Data Enhancements 

Page 2: BADI Customer Screen Enhancement

 

Create one Implementation by giving implementation name (must start with Z. ZSURESHKUMAR here). Give meaningful description and press enter. The following screen appears. 

 

Go to Interface and Click on ‘CHECK_ADD_ON_ACTIVE’ method. Add the following code and save. 

method IF_EX_CUSTOMER_ADD_DATA~CHECK_ADD_ON_ACTIVE .

Page 3: BADI Customer Screen Enhancement

data: l_flg_active type BOOLE-BOOLE.

if i_screen_group = 'SK'. 

e_add_on_active = 'X'. 

endif.

endmethod. 

 

Activate that and come back to SPRO initial screen. Click  Business Add-in: Customer Subscreens 

The following screen will appear. Create one implementation (ZSURESHKUMAR1 here).  

Page 4: BADI Customer Screen Enhancement

 

Press enter. The following screen will come. Enter a meaningful Description and Screen Group (which we created earlier) as shown below. 

Page 5: BADI Customer Screen Enhancement

Then go to Interface  

 

Create a Function Pool SAPLZSURESHKUMAR. (See the code of the program for other details). Create a Screen ‘1111’ with field old Customer Number – screen group PSK (SE51)

Click on GET_TAXI_SCREEN method and add the following code. 

method IF_EX_CUSTOMER_ADD_DATA_CS~GET_TAXI_SCREEN .

case i_taxi_fcode.

when 'SK_TAB'.

e_screen = '1111'. "Eart + Objekt

e_program = 'SAPLZSURESHKUMAR'.

e_headerscreen_layout = ' '.

endcase.

endmethod. 

Page 6: BADI Customer Screen Enhancement

 

Activate and leave the transaction. 

Go to KNA1 (Customer Master) table and add a custom field as shown below. Activate the table. 

Now go to XD01 transaction. 

The screen we created will appear as shown in the above screen-shot. Click the button. The following screen will appear. 

Page 7: BADI Customer Screen Enhancement

 

Enter a customer number and save the transaction. Now go to KNA1 table and check the value of the Old Customer Number field’s value. The value you entered in this screen will appear on there. 

Until now, we have written code for creating the Custom field. Now we need to disable that field when we are opening the transaction in DISPLAY mode. 

 

Go to include – LZSURESHKUMARTOP and enter the following code and activate the program. 

Page 8: BADI Customer Screen Enhancement

 

Now execute the Transaction in display mode and check the output.  

Populating the data in our custom fields

Add the following code to the program SAPLZSURESHKUMAR, screen number 1111.

MODULE STATUS_1111 OUTPUT.* SET PF-STATUS 'xxxxxxxx'.* SET TITLEBAR 'xxx'.*data:l_oldcustno type kna1-zzold_cust_no.constants: c_oldcustno(24) value '(SAPMF02D)KNA1-ZZOLD_CUST_NO'. field-symbols: <fse>. assign (c_oldcustno) to <fse>. if sy-subrc = 0.

Page 9: BADI Customer Screen Enhancement

l_oldcustname = <fse>. "l_oldcustname is the screen name of old cust field endif. If sy-tcode = 'XD03'.

Loop at screen.If screen-group1 = 'PSK'.

Screen-input = 0.Modify screen.

Endif.Endloop.

Endif.ENDMODULE. "STATUS_1111 OUTPUT

Saving the data back to database from screen field

In the interface IF_EX_CUSTOMER_ADD_DATA_CS, add the following code in the method GET_DATA

method IF_EX_CUSTOMER_ADD_DATA_CS~GET_DATA .data:l_zztest type kna1-zztest.constants: c_oldcustno(24) value '(SAPLZSURESHKUMAR)l_oldcustname'. field-symbols: <fse> type any. assign (c_oldcustno) to <fse>. if sy-subrc = 0. s_kna1- ZZOLD_CUST_NO = <fse>. endif.endmethod.