Enhancing Vendor Master
Requirement : Creation of Custom tab and Custom fields in vendor
master transactions by using Enhancement spot technique.
Solution :
1. Creation of custom field in LFB1 using append
structure
2. Go to configuration settings and mention the Tab
name and screen names
3. Implement Enhancement spot 'VENDOR_ADD_DATA'
Method : CHECK_ADD_ON_ACTIVE
4. Implement Enhancement spot 'VENDOR_ADD_DATA_CS'
Method : GET_TAXI_SCREEN
5. Creation of module pool program for designing of
screen along with required fields
6. Make the required fields editable in change
transaction only.
Step 1: Creation of custom
field in LFB1 table using Append structure .
Step 2: Go to SPRO transaction --> Financial accounting
-- > follow the below path
and click on ' Prepare modification free enhancement in
vendor master record '
Step 3: Click on ' New entries ' button to create new screen
group.
Step 4: Give meaningful name / name given by functional team and click on ' Label tab pages button to give the new tab page name.
Step 5: Give the description
and name of page as below.
Step 6: Go to SE18
transaction and create new implementation for Enhancement spot 'VENDOR_ADD_DATA'.
Here we have created implementation name as ' ZMM_CHGXXX_VENDORSAQ
'
Now it will ask for BADI definition name and class name, Provide details as below.
Step 7: Go to SE24 transaction and give class name which we
have provided in above step.
Go to method ' Check_add_on_active ' and use below mentioned
logic.
(In below code, 'Z3' is our screen group name)
METHOD IF_EX_VENDOR_ADD_DATA~CHECK_ADD_ON_ACTIVE.
IF i_screen_group = 'Z3'.
e_add_on_active = 'X'.
ENDIF.
IF i_screen_group = 'Z3'.
e_add_on_active = 'X'.
ENDIF.
ENDMETHOD.
Step 8: Create implementation for BADI 'VENDOR_ADD_DATA_CS' and also give class name and implementation name (same process as step 6 )
Step 9: Go to SE24 and give
class name which we have created in above step.
Go to Method 'Get_taxi_screen ' and write below logic
MODULE status_9001 OUTPUT.
LOOP AT SCREEN.
IF sy-tcode EQ 'XK03'.
CASE screen-group1.
WHEN 'G1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDIF.
ENDLOOP.
ENDMODULE.
LOOP AT SCREEN.
IF sy-tcode EQ 'XK03'.
CASE screen-group1.
WHEN 'G1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDIF.
ENDLOOP.
ENDMODULE.
Here Z3 --> Screen group name,
ZTAB2 --> Function code/Screen name
'ZMMR_VENDORSAQ -- > module pool program that we need to
create
'9001' --> screen number
Step 10: Creation of module pool program with above details.
Program name: ZMMR_VENDORSAQ
Screen number: '9001'
SE51--> Create
Go to Lay out in the program
Design the layout with required fields..here in our scenario we required only one field from LFB1 Table
Field name: ZVENSAQ(vendor
SAQ) and group name as 'G1'
Now we are making this field editable only in change transactions by using below PBO Event
MODULE status_9001 OUTPUT.
LOOP AT SCREEN.
IF sy-tcode EQ 'XK03'.
CASE screen-group1.
WHEN 'G1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDIF.
ENDLOOP.
ENDMODULE.
LOOP AT SCREEN.
IF sy-tcode EQ 'XK03'.
CASE screen-group1.
WHEN 'G1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDIF.
ENDLOOP.
ENDMODULE.
Testing:
Go to XK03 transaction, find the button which we have
created 'Vendor SAQ'.
Click on that button and you will navigate to new screen.