Professional Documents
Culture Documents
Recently I was working on a custom VOFM routine implementation. My functional counterpart was sitting with
me and we had configured the routine by entering the key.
Now it is my job to implement the code. I was able to get the values available in the structure KOMKBV2 inside
the routine. But he needed the values from other structures (say LIKP) to implement the custom validation.
The functional consultant sitting next to me was very keen now. He wanted to know how to retrieve the internal
table / structure values which are not directly available from the userexit / BADI / Customer Exit interface
parameters.
So I set a breakpoint in the VOFM routine. We executed the transaction and program stopped at the breakpoint
in the routine which I had set earlier.
From the debugger, I started to loop back to previous program from the call stack. I showed him how to check
the values of the internal tables & structures of the previous program which called the VOFM routine.
Phew!!! I was able to read the value which he was interested. But now he started to fire questions at me.
How to find all the internal tables which I can use by this way. How to find that???
I managed to tell him that if a program a loaded and available in context, we can access the global variables of
that program by the above method. But it is not advisable to read the data by this way, as SAP has the right to
change logic of the program or name of the internal table in the future release. But he was reluctant to accept
that.
Okay!! Then give me the list of all programs which are loaded and available in context now. I
need to know
Oh God!! Please save me from him. I honestly dont know, how to get the details of all program
which were loaded right now.
1. Idea..!!! I can activate a trace and execute the transaction. Collect all the programs names
displaying in the trace log and give it to him. Thats a good idea!!! But how do I get the
list of internal table names & its value. I cannot directly get those from the trace.
Without a hope, I was going through the options available in the debugger. I noticed an icon with
name Replace Tool. I hardly used that. I click on that and I got a pop up. It has many options
coupled as a tree. I expanded the tree Special Tools. I was able to find Loaded Programs
(Global Data)
I doubled click that and the tool was giving me everything I wanted. Thank God You saved
me ..!!!
It has two tabs Loaded Programs & Global data. From the global data tab, I was able to get the global
variables, internal table, work area value. And the best thing was, I was able to search by CTRL + F based on
the variable names. What else do I need..!!!
After he left, I did a quick search on this feature in google. I was amazed to find the below two URLs.
https://help.sap.com/saphelp_nw73ehp1/helpdata/en/49/1ec3f1f3ee6492e10000000a42189b/content.htm
http://scn.sap.com/community/abap/testing-and-troubleshooting/blog/2011/07/14/news-in-abap-debugger-
breakpoints-and-watchpoints-statement-debugging
Everything was explained in detail and I had never read / bookmarked it First thing I did after that was
to click on Follow and started following the updates on that space.
Regards,
Karthikeyan
1928 Views Tags: development, abap, debugger, debugging_for_functional_consultants, loadedprogram
There are many new features in the New ABAP debugger and its great that SAP is adding more and more with
each release.
Regarding the Global Memory reading using ASSIGN, if you don't recommended to use but you still used
in your development, then its clear contention. You should only use in your development which you can
recommend.
Thanks,
Naimesh Patel
You can post this in ABAP Development space and will get suggestions from SCN members.
Thanks,
Karthikeyan
The idea of this blog is to share people that there are options like, to view the list of loaded programs are
available in New debugger.
Also not many people who have entered into SAP world after 2011 would prefer or have chance to use the
classical debugger. I am one among them. To be honest I wasn't aware that this sort of feature was available
earlier.
And I guess, I have just written this in a blog. I just wanted to share what happened on that day. I
neither endorse nor recommend the use of <Assign> technique in this blog and after Jelena Perfiljeva
recommendation I had clearly mentioned in this on the top.
I am happy that you liked the catchy title and thanks for those KIND words.
Thanks,
Karthikeyan
Clemens
Naimesh Patel
Jan 25, 2016 6:57 PM
I think I hoped more by the title. It seems that's still true that don't judge the book by the cover or watch the
movie by poster !!
I think the feature for checking the Global data is available long back. The technique of using the dirty read on
Global data is definitely not recommended and comes in with its own problems.
The functional consultant who is asking for list of all the loaded global data so he can decide which table to use
-- I must say, that either the function consultant thinks that he knows all tables and all fields behavior or the
designer (developer) doesn't know how to achieve the requirement.
Thanks,
Naimesh Patel
To answer your question Read the help on SUBMIT, specifically EXPORTING LIST TO MEMORY and then
have a look at function modules LIST_FROM_MEMORY nad LIST_TO_ASCI.
SRINIVAS REDDY
Jan 22, 2016 2:31 PM
Hi karthikeyan P , Nice to meet you.
I have one doubt .
Present i am creating Function module in this I need to use submit to call other ZREPORT(Classical Report).
Everything is perfect i am able to bring internal table from Zreport.
But the problem is i want total sum and few data which are available in botton report display in report(classical)
using WRITE statement. How to bring those type of data into my zfunction module.
Thanking you.
Joachim Rees
Jan 22, 2016 8:49 AM
Hi Karthikeyan,
thank you for sharing! Yes, the "new" debugger is very powerfull, I'm motivated now to explore some more of
it's features when I have the time. You never know when they'll come in handy!
Best
Joachim
Kripa Rangachari
I have used most of the tools from the New - Debugger. Have never tried this 'Load Programs' option..
Cheers,
Kripa Rangachari.
Thanks for pointing the blog. I was not aware of that. After going through the comments section of that blog,
yes, I agree with Suhas Saha now.
-
Karthikeyan
Thangam Perumal
Jan 2, 2016 5:17 AM
Hi Karthikeyan,
Nice blog. Thanks for sharing. This is the first thing I learned from SCN in this New Year -
2016.
Regards,
Thangam.P
Well, in that case the project guidelines need to be reviewed again. Implicit Enhancement is safer than the
ASSIGN construct you have used.
Btw, i was comparing implicit enhancement with the ASSIGN. It is a well-known fact that if SAP std.
enhancements available then they should be used first.
SUNIL MANI
Dec 31, 2015 7:33 AM
Thanks sharing with us. Most of us never noticed this, when we really gone out of an idea, we try such a things
I know the consequence of using ASSIGN construct, but here in my project they do not entertain the usage of
Implicit Enhancement unless it is highly necessary. If there is any BADI or exit available, they prefer that over
implicit. We also document this kind of codes and keep an eye on those exits during Up-gradation. Thanks for
Suhas Saha
Dec 30, 2015 10:55 PM
Actually the feature you have discussed is not new to the new debugger. But yes the new debugger is much
more user-friendly than its predecessor.
The features i like the most about the new debugger are - Layer Aware debugging & debugger scripts. I use
the former regularly, the latter mostly when i need to set dynamic watchpoints on field-symbols.
I know this is a bit off-topic (my apologies) but the ASSIGN construct you have suggested/used is for "SAP
internal" use only and should be avoided. You would have been better off using an implicit enhancement to
capture the value of this variable. justsaying
Thanks Richard. Without those tools we may have to spend many sleepless nights
Richard Harper
Dec 30, 2015 2:38 PM
Damn Good you say!! Too right it is. Watch points are a boon! immediate Breakpoints are fantastic! Access to
the stack in an easy manner!
Regards
Rich
It happens, when we analyze any standard program with the help of functional, we keep asking them if there is
any configuration behind this. We may have to answer any technical question they raise, in response to that.
Also, most of the functional consultants are very keen to learn the debugging and the concept behind that. It is
bit difficult to explain and make them understand. When a senior functional consultant raises a query, obviously
you don't have any choice.
--Karthikeyan
Kiran K
Dec 30, 2015 12:58 PM
Karthikeyan,
K.Kiran.