six kinds of debugging tips to find the source
TRANSCRIPT
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 1/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised
Getting Started Newsletters Store
Products Services & Support About SCN Downloads
Industries Training & Education Partnership Developer Center
Lines of Business University Alliances Events & Webinars Innovation
Log On Join UsHi, Guest Search the Community
Activity Communications Actions
Browse
ABAP Development
28 Tweet
Approach1 - Use "Where Used Lis t" function in ABAP workbench
Approach2 - Use Watchpoint to obser ve sy-msgid in ABAP debugger
How to switch into debugging mode for a m odal( pop up ) window
Approach3 - Leverage the breakpoint type "ABAP Commands" to debug more efficiently
Approach4 - source code scan
Approach5 - ABAP Runtime Analysis Tool SAT shows its power
Approach6 - Have you used ST05 like this way
Deal with those m ess ages rais ed in ABAP webdynpro / CRM Webclient UI
Use SAT to trace web application
Other Blogs / Wikis in SCN which could m ake your debugging more efficient
Troubleshooting an unfamiliar ABAP is sue by Noel Connolly
How to leverage breakpoint wi th Exception type - A real example
How to efficiently debug in ERP and CRM application
Summary
I would like to share with you my debugging tip in my daily life, which makes my life much eaiser. In case you found
your own tip are not listed here, please kindly comment it so that it could benefit more people here
I will use a simple example to demons trate. Input an invalid name in SE38 and click display button. An mes sage is
displayed in the bottom. I will show you how to find the exact line of code which raises this information.
note: some of the approaches lis ted here might not be efficient for this very case, I just li st all of m y tips here for
completeness. I do beli eve each tip could be useful in certain case.
Six kinds of debugging tips to find the source codewhere the message is raised
Posted by Jerry Wang in ABAP Development on Nov 15, 2013 6 :10:47 AM
Share 85Like
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 2/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 2
Approach1 - Use "Where Used List" function in ABAPworkbench click on the green icon and we can find mess age class ID: DS, number 017
SE91, use where use list:
OOPS, so many hits ...
Then I have to manually fitler them one by one to find the correct one. Double click one by one. I ignore all entries with
type MESSAGE E since in my case the message type is not E, but S. After one minute I confirm the following one is
the one I try to find.
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 3/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 3
yes it is confirmed by debugging:
Summary: the drawback of A1 is that as you see, if there are many where used lis t results s ay a hundred, it still takes
you some time to manually find the correct one.
Approach2 - Use Watchpoint to observe sy-msgid inABAP debugger type /h in command area, and click display button to trigger debugger.
Create a watch point with below two conditions. After that click F8, the debugger will stop automatically at the correct
line you want. This approach just took me 20 seconds to finish the job.
For detailed screenshot about how to create a watch point in Debugger, see picture provided by Jim Tasker:
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 4/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 4
How to switch into debugging mode for a modal( pop up ) window
Since the command li ne is not available if there is a modal( pop up window) involved, in this cas e please refer to SAPNote 118184 about how to switch into debugging m ode or refer to this wiki.
Approach3 - Leverage the breakpoint type "ABAPCommands" to debug more efficiently Launch the debugger just the same as A2, create a dynamic breakpoint with ABAO command = MESSAGE. The
debugger will again stops at the correct line.
With this approach again I only spent 20 seconds .
Or you can us e m enu via Breakpoints->Breakpoint at->Breakpoint at mes sages to achieve the s ame result.
Summary: if the scenario you want to debug is quite complex, for example deep callstack with several components
involved, the debugger might stops at the ABAP code with MESSAGE keyword frequently. You must still manually
check whether the code is just the one you are looking for at each stop. However it is still much more efficient than you
debug manually one by one.
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 5/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 5
Approach4 - source code scan Tcode SE93, find the package name of SE38:
Then use report RS_ABAP_SOURCE_SCAN and maintain the search criteria below. The reason why I do not use
program name RSABAPPROGRAM is that it is just a wrapper report. The actual implementation of SE38 is not put
within it.
We only have 4 results.
You can use an alternative tcode CODE_SCANNER which can achieve the same result:
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 6/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 6
From my point of view, I do like this A4. I can not remember how many times it has helped with my debugging life.
What's m ore, it would be us ed not only as a debugging tip, but also one way of studying other people's code.
Suppose you are curious of how a certain function is im plemented by a software component, it is a good starting
point to think of a meaningful search keyword and specify the package of that software component and go deep into
the result code.
Approach5 - ABAP Runtime Analysis Tool SAT showsits power tcode SAT, create a new variant, ensure the radio box item "Aggregation - None" is selected.
Then launch the SE38 within SAT by clicking "Execute" button.
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 7/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 7
repeat your steps as usual - input an non-exist report and click dis play button to s ee the m ess age. After that click back
or quit button in SE38. SAT will automatically be opened to show you all runtime trace information. It will take some
time - you can see the progress information in the bottom:
click tab "Call Hierarchy", click find button. Input Statement = MESSAGE and go. You will see two search results.
double click on the hit lis t row and then you can see the s ource code.
Summ ary: if the scenario you are tracing with SAT is complex, you will get a huge trace file. Although you can specify
an extremely big size in trace file, according to my real experience, you will fail to open the result trace file when it
exceeds 1 G, at least in my application server.
Approach6 - Have you used ST05 like this way First you open SE38, type and invalid program name.
Open a second s essi on, switch on your ST05 with default settings.
Go back to your SE38 window, click display button.
Go back to your ST05 trace, deactivate and display trace result:
We know that the PROGDIR table stores the header information of report. It makes sences for ABAP editor to check
whether the program name is valid by search it in that table, doesn't it? So the undoubted next step would be the raise
of a message if database search fails. Click the "Display ABAP call location" button to go to the source code:
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 8/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 8
We see the logic is that first try to search in DB with inactive version, if failed, try with active version.
So hopefully the code we are trying to find is just in the very neighborhood of the SQL statement in line 774 and 779.
Fortunately in this cas e, yes it is in line 813.
Deal with those messages raised in ABAP webdynpro /CRM Webclient UI If the message is not raised in SAP GUI but from ABAP webdynpro or CRM webclient UI, all of these six approaches
still work.
This blog is focusing on how to efficiently locate the source code where the mes sage is raised in CRM Webclient
UI environment.
Use SAT to trace web application
The approach 5 has made good use of powerful tool SAT. Please keep in mind that SAT could not only trace the
transactions running in SAP GUI but also work for Web application. For more detail please read this nice document
Measure Performance and Analyze a Web UI Transaction using SE30 from Bhushan Dharmik.
Other Blogs / Wikis in SCN which could make your debugging more efficient
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 9/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 9
Average Us er Ra ting
(100 ratings)
28 Tweet
These blogs / wikis do not talk about the dedicated solution to find mes sage rais ing location, but contain generic tips
which would accelerate your debugging and m ake your life easier.
Troubleshooting an unfamiliar ABAP issue by Noel Connolly
How to leverage breakpoint with Exception type - A real example
This tip has actually the similar logic as Approach3, the only difference is another type of ABAP breakpoint is used.
How to efficiently debug in ERP and CRM application
When I am a beginner in CRM and have to debug CRM bus ines s transaction application to resolve ticket reported, I
felt really frustrated since although I have used ALL OF THE SIX approaches I described here, still the breakpoint
could not be triggered Finally I realized that jus t works as designed. I share you with my tips gained through
painful debugging in that area and hope they are helpful.
Summary In my previous work I used to struggle with some tricky case where I don't know how to start my debugging at all. The
A6 I call it "ST05 weapon" do prevent me from working over late into the night. Even for the most sophis ticated
application, I can switch on ST05, repeat the application again, and analyze the trace result to judge which line is
useful to start debugging. So I like this overwhelming tool. You may say that it would not help if there is completely no
database access for the application to be debugged. Well I would s ay that would be a rare case at least in my own
working area.
Do you have additional tips not included in this article? Please kindly share with us
85240 View s Categories: A BAP Development
Topics: abap Tags: beginner , message, debug, trace, sat, tips, st05, w here_used, efficient, code_scan
Share 85Like
46 Comments
Like (10)
nabheet madan Nov 15, 2013 7:32 AM
Hi Jerry
Thanks for sharing. For your first point where you have put in a mes sage s tatement you can also put
directly the message number and then it will stop exactly at the sam e place.
You can follow the path break point->Break point at--> Choose mes sage and provide mes sag
number etc.
Nabheet
Like (4)
Jerry Wang Nov 15, 2013 7:43 A M (in response to nabheet madan)
Hi Nabheet,
I didn't know that tip until you tell me today. Thank you very much!
Best regards,
Jerry
Like (0)
Lokesh Doggala May 15, 2014 1:24 PM (in response to Jerr y Wang)
Like the Knowledge flowing here.. Lot of Debugging Tips
Jelena Perfiljeva Dec 23, 2013 9:29 PM
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 10/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 10
Like (2)
Thank you for sharing, good tips.
Just a sugges tion - this is a long blog and m ight benefit from some formatting to separate/highlight
the sections. I find Jason Lax's documents (e.g. Everything I know about... Inserting Links and
Table of Contents ) very helpful in this area.
Like (0)
Jerry Wang Jan 7, 2014 10:08 AM (in response to Jelena Perf iljeva)
Hello Jelena,
sorry for late response, I have read the document in your link, it is really helpful! I have
formatted the blog. Is it better now?
Best regards,Jerry
Like (1)
Noel Connolly Jan 7, 2014 1:18 PM
When I am completely unfamiliar with the code, I like to set a breakpoint at function module
SAPGUI_PROGRESS_INDICATOR and to work from there. This would probably be more re levant
when you are trying to catch code that does not raise a message (but I think it is still relevant to this
discuss ion). It is explained here:
http://wiki.scn.sap.com/wiki/display/ABAP/Troubleshooting+an+unfamiliar+ABAP+issue
Like (1)
Jerry Wang Jan 24, 2014 3:51 PM (in response to Noel Connolly)
Hi Noel,
Thank you very much for your comment. I read your wiki, it is real ly helpful. I have added the
link to this blog and mark you as the author. Thank you for your kind suggestion.
Best regards,
Jerry
Like (2)
Fabian Geyer Jan 23, 2014 9:27 AM
Several ERP applications (esp. Financials) often use a "mess age collector" technique especially
when handling "multiple objects", where after the application ist "detecting" an error it will be "stored"
to an "error collection" and after all checks have been done the li st of maybe many erros is shown i n
a popup or list.
In these cases , when the mes sage is "shown" is far to late to analyze, because the application
data/situation which is causing the error is analyzed somewhere else (far earlier in the runtime). In
these cases I often use breakpoints in FM "MESSAGE_STORE".
Similar handling i s needed in case the BC Application Log-technique is us ed (SLG0, SLG1 etc.) abreakpoin t in FM BAL_LOG_MSG_ADD can help.
When searching for the mes sage occurence in the source with code scanners you should not only
look for "MESSAGE Xnnn WITH" ... occurences but also for "MESSAGE TYPE X ID XYZ NUMBER nnn"
strings. (which is rather difficult :-( )
Like (1)
Jerry Wang Jan 25, 2014 6:19 AM (in response to Fabian Geyer)
Hi Fabian,
Thank you very much for your suggestion. The message handling logic described by you in
ERP sometimes took more time and effort for developers to debug indeed. I think the tip
suggested by you is worth a separate blog. I have created one using CRM service contract
as example. I have added it to part " Other Blogs / Wikis in SCN which could make your
debugging more efficient". Thank you.
Best regards,
Jerry
Like (1)
Andriy V . Bazdyrev Jan 23, 2014 10:42 AM
Jerry, thanks for a good compilation of debugging tips.
Just wanted to add more tips to your A2 and A3 approaches.
Sometimes it's not poss ible to give a "/H" debug command, because the window is modal (i.e.
screen for entering serial numbers in transaction VL02N for outbound deliveries) and neither the
command window nor system m enu are imm ediately available. In this case one can create SAPGUI
shortcut for activating debugger from popup window and use drag-n-drop to initiate it. Official
recommendations from SAP on this approach is given in note 118184
BR, Andriy
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 11/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 1
Like (1)
Florian Bauchinger Jan 23, 2014 11:02 AM (in response to Andriy V. Bazdyrev)
Great hint with SAP Note 118184!
I was looking for a functionality like that, but always as sumed, it jus t was not
possible.Kudos to you, sir!
Like (0)
Jerry Wang Jan 24, 2014 3:28 PM (in response to Andriy V. Bazdyrev)
Hello Andriy V.
Actually I am using the tip in SAP note 118184 frequently during my daily work, but still thank
you very much to mention it, I have already added it as one part of Alternative 2. Thank youfor your kind suggestion and comm ent on this blog.
Best regards,
Jerry
Like (0)
Adi Sieker Jan 23, 2014 9:52 PM
If you are confronted with new style class based exception for error handling, then a good trick is
placing a s ess ion break point in the constructor of CX_ROOT the abstract superclass for all global
exceptions.
Like (0)
Jerry Wang Jan 24, 2014 4:05 PM (in response to A di Sieker)
Hi Adi, Thank you very much for reading the blog with your kind suggestion. I have added your tip
into the blog.
Best regards,
Jerry
Like (0)
Jim Tasker Jan 24, 2014 9:39 PM
Thanks Jerry, nice blog.
Here's m y personal favorite: activate the debugger and create a watchpoint on SY-MSGNO. Enter a
"Free condition" on the watchpoint of "= 'nnn'" where 'nnn' is the message number. As long as the
mess age is iss ued via the MESSAGE statement this will stop at exactly the right spot.
Jerry Wang Jan 25, 2014 3:32 AM (in response to Jim Tasker)
Hi Jim,
Thank you for your screenshot. I just added it to Approach2, so that it can help more
SCNers which are not familiar with it yet.
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 12/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 12
Like (0)
Best regards,
Jerry
Like (0)
Siow Fong Chen Jan 27, 2014 3:49 AM
Thanks Jerry for the wonderful blog. Certainly look forward to you sharing more debugging tips on
debugging web bas ed system like the CRM UI. It is definitely not the easiest s ystem to debug!
Like (0)
Bronw yn St Clair Jan 28, 2014 2:32 AM
A helpful blog.
It's worth noting, especially for those new to SAP, that approaches 2,3, and 6 have the benefit of
finding mess ages that are iss ued dynamically, which you can't find with a where-used lis t. I'll
generally start with the specifc mess age, and widen the s earch to any message statement if I still
get no result.
Like (0)
jigar thakkar Feb 28, 2014 8:38 AM
Very informative blog..
Like (0)
Onkar Satpute Mar 4, 2014 8:22 AM
Very Helpful Blog...... Nice One !!
Like (0)
Sharon Cooksey Mar 6, 2014 4:51 PM
SWEET!!! Thanks for sharing Jerry
Like (0)
Siva Ganesh Kumar Kottana Mar 12, 2014 6:25 AM
Thankyou Jerry , Loved it
Like (0)
nagendra modupalli Mar 12, 2014 7:43 AM
Thank you for sharing jerry ,good topics
Like (0)
Visw anadha Reddy Apr 2, 2014 11:53 AM
Hello Jerry,
Thank you very much for a nice document, these tips would help more for functional people.
Thanks,
VNR
Like (0)
daogui w ang Apr 3, 2014 5:40 AM
It is very helpfull
Like (0)
jayakumar k Apr 8, 2014 5:02 PM
very useful.. thanks for sharing
Like (0)
Roopa M Apr 10, 2014 8:41 AM
Thanks for the information.
helpful.
Alw ays Learner Apr 17, 2014 9:51 AM
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 13/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 13
Like (0)
It is very helpful.
Like (0)
Renukha Rangasami Apr 21, 2014 1:49 PM
A good time-saver debugging tips.
Like (0)
solen dogan May 2, 2014 1:57 PM
Its a nice blog. Good work
Theres also
Ewk1 as well
Like (0)
Daniel Lippmann May 3, 2014 2:45 PM
An excellent guide for on-going program mers and consultants (who s hould be able to debug as
well)!
Like (0)
Camy s u May 12, 2014 7:55 AM
nice blog.
best regards
Like (0)
Douglas Santos May 22, 2014 7:19 PM
Interesting the ST05 for this.
Like (0)
Suman Chakravarthy K May 22, 2014 7:51 PM
Excellent tips Will be handy !!
Like (0)
Prasad KG Jul 1, 2014 1:07 PM
Thank you!!
by taking the example of finding the mess age where it's raised, you have helped m e to enhance my
debugging skills as a programmer.
Like (0)
abhijeet sharma Jul 22, 2014 8:33 AM
Nice And really helpful for budding abapers lyk myself.
Like (0)
Derby Lim Jul 29, 2014 4:04 AM
Some tips for web dynpro users.
Set breakpoint in
WDA (web dynpro abap): CL_WDR_MESSAGE_MANAGER -> REPORT_MESSAGE
FPM (floorplan manager): CL_FPM_MESSAGE_MANAGER -> IS_POPUP_OPEN
Like (0)
Crystal Chen Feb 2, 2015 6:42 AM
vey helpful!
Like (1)
Sneha Jadhav Feb 20, 2015 9:49 AM
These tips will help new ABAPer's alot. Thanks for sharing
Pradeep Mani Apr 10, 2015 7:46 AM
Hi,
First of all i s hould thank you for presenting this.
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 14/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
http://scn.sap.com/community/abap/blog/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised 14
Like (0)
I am a functional consultant,your post was helpful for me.
My error mes sage was F5351.
I used the were used lis t,got few programs listed
The program concerned is LFACSU10.
FORM lock_check USING i_bukrs LIKE t001-bukrs
i_account LIKE skb1-saknr
i_sperr
i_sperr_b.
*
CHECK NOT i_sperr IS INITIAL
OR NOT i_sperr_b IS INITIAL.
MESSAGE e351 WITH i_account i_bukrs
RAISING account_locked .
My message type is "5",my error was with "Message e351".
How can i come to a conclusion at this stage.
Like (0)
Marius Ciuperca Apr 10, 2015 2:59 PM (in respons e to Pradeep Mani)
Hi,
When you have the mes sagge clas s and the number (in your case mes sagge class F5
and mes sagge num ber 351) the fastest way is to create a breakpoint like this :
If you also know if it is an error messagge you can type E in the field Ty.
In your case , in the mes sagge s tatement, the ID of the mess agge is not given because it is
declared in the top include of your function group.
Hope it helps.
Ram Kumar V May 24, 2015 12:07 PM
Thanks For sharing
8/17/2019 Six Kinds of Debugging Tips to Find the Source ..
http://slidepdf.com/reader/full/six-kinds-of-debugging-tips-to-find-the-source- 15/15
5/8/2016 Six kinds of debugging tips to find the source ... | SCN
Follow SCNSite Index Contact Us SAP Help Portal
Privacy Terms of Use Legal Disclosure Copyright
Like (0)
Like (0)
Miguel Enriquez May 30, 2015 6:46 PM
Interesting. thanks for share.
Good material.
Thanks.
Like (0)
Mark Suarez Oct 14, 2015 10:32 AM
Hi Jerry,
I am a WM functional consultant and I am not familiar in any abap transactions. I'm having an is sue
on my replenishment for fixed bins in tcode LP21. Configuartion on IMG are all okay, but still this
error always occur on batch managed articles.
Below is the error description but I believe all config regarding batch managem ent are already set.
Now, I want know how this error 999 is taken and under what circumstances.
Hope you can help.
Thanks in advance.
Mark
Like (0)
Jerry Wang Oct 17, 2015 4:04 AM (in response to Mark Suarez)
Hi Mark,
It is really difficult to locate the exact position of line where the error mess age is raised
without debugging.
Best regards,
Jerry
Like (1)
Mark Suarez Oct 20, 2015 8:29 AM (in response to Jerry Wang)
Thank you.