cancel
Showing results for 
Search instead for 
Did you mean: 

find processing class/method

sujay_ranjan3
Participant
0 Kudos

Hi all,

What is easiest way to find out the class/method which is being called from WEB UI. For Example in account creation screen, there are several views incorporated (BP_HEAD, BP_ADDR etc) so after entering all those details, which method handles the actual creation. What is the quickest way to find that for all process or is it that we just have to know the class name beforehand. Like in this case it is CL_BUPA_IL_HEADER.

I was trying to come up with easy way in component workbench.

Accepted Solutions (1)

Accepted Solutions (1)

stephenjohannes
Active Contributor
0 Kudos

Normally my plan of attack is the following:

1. I usually look at the coding behind event handler for each button click. This will give me a good idea of what the button is doing. So looking at the EH_* methods in the controller class.

2. Next once that confirms the behavior, I think try to determine what BOL object is being used

3. If I know the bol object, then I will look up the corresponding bol class and review the logic in that class.

For business partners I would be looking in the package CRM_BUPA_BOL. I generally do package searches on GENIL or BOL to find the corresponding objects.

The clases underneath normally are named closely to the bol objects, so it is easy to figure out which one.

I don't think there is a "mapping method'. Now if someone wanted to be nice, they could build a quick reference and post here or in the wiki that shows locations of this.

The table CRMC_GIL_COMP also is a good start to finding out where all the mapping relationships exist for each model.

Take care,

Stephen

sujay_ranjan3
Participant
0 Kudos

Stephen ,

Is there a EH* method for "just hit enter" instead of "Save" button. Also can u give a small example , like default account creation screen, with BOL object and how would you trace to the actual class.

thanks,

stephenjohannes
Active Contributor
0 Kudos

Good question about the enter button and I'm not really sure.

As far as your example goes

So I'm creating an account by clicking Corporate account from the search results screen and then I hit the save button. I then would place an external break point in the EH_ONSAVE and single step through the process.

If I want to "guess things more", I could look at table CRMC_GIL_COMP to get the model and relationship tables for my components. Normally I would be interested in the components:

BP - Business Partner or

BT - Business Transactions

For Business partner I would see the object list. In addtion I can look at the view CRMV_OBJ_BUIL to get a class to object mapping. I would also look at my context nodes in the actual view that are being used and see where they map to the names. This would then give me the points on where to dig for the underlying layer.

However this is a very non-automated, but "feel it out" method.

I'm going to make this a sticky and see if we can develop a better answer to your questions.

Thank you,

Stephen

former_member189678
Active Contributor
0 Kudos

Sometimes there is an event coded as EH_ONENTER, which gets called after one presses enter. Do_HANDLE_EVENT() is something wherein one gets the information which event has been triggered from the debugging session.

More often then not Refresh activities are done for validation of the data thathas been entered. Sometimes it is explicitly needed to validate it and sometimes it's not so necessary and so based on it the above method is coded.

Regards,

Harshit

0 Kudos

Hi,

Considering your above example, you could just go to IMG (Generic Interaction layer/Object Layer-> Basic Settings, and look for component BP or in case of transactions BT. Get the implementation class and place a break point in the implementation class methods GET_OBJECTS or MODIFY* to proceed. Even checking the method GET_MODEL will give you the model table and the relationships.

Regards,

Venkat.

Answers (2)

Answers (2)

CarstenKasper
Active Contributor
0 Kudos

Hi,

for me it depends on what I want to know.

For UI related issues I start debugging in the DO_HANDLE_EVENT() of the view controller. Here I can intercept nearly everything coming into a specific view. For the hard cases going down to the DO_HANDLE_DATA() is an option.

If it leaves the UI into the GenIL there are many ways. Getting the name of the correct BOL entity is no problem. Now I use two options of finding the correct handler class:

1. I check the model maintained in the IMG for the BOL components. Theses tables usually hold all information necessary. Though it is sometimes hard to get the right component from the component set.

2. The BOL leaves to the GenIL in one central place. I do not remember the class name right now (not connected to a system) but it is easily visible in the call stack of the debugger. Here you get the correct classes of the objects.

Anyway I feel there are as many approaches to this as there are different problems.

cheers Carsten

Former Member
0 Kudos

Hi,

I have no perfect way of doing this. Stephen's suggestions are probably the most efficient ones as I see it.

Another method which can sometimes be useful is to run an abap trace in transaction ST12. This will give you a list of function modules and methods called during the trace period. You could for example activate the trace just before pressing enter in the Web UI. A good idea here is to do the trace on another user than the user that is activating the trace in ST12. You could use a test user to log on to the Web UI and then trace that test user. If you use the same user at the ST12 user then you get a lot of trace info related to the actual running of ST12 which will blur the trace for you.

Br,

Anders