In two preceding
blogs I bragged about
CL_DEMO_OUTPUT.
Predictably, there is some disappointment because this class is not intended for productive usage.
Fair enough. But you can use it for testing purposes.
As an example, I will show you how you can use CL_DEMO_OUTPUT to produce a logfile for an expression. Quick and dirty.
To do so I choose the following simple constructor expression.
TYPES itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.
DATA(itab) =
VALUE itab(
FOR i = 1 UNTIL i > 3
FOR j = 1 UNTIL j > 3
( i * 10 + j ) ).
Of course, you can test the result with
cl_demo_output=>display( itab ).
But assume that you want to know what happens
inside the expression and it is a more complicated expression and you don't want to debug or you can't or don't want to use other convenience tools (watchpoint, logpoints) provided by the ABAP Workbench/ADT or whatsoever.
In that situation you can instrumentalize an expression with
CL_DEMO_OUTPUT, e.g. by misusing a LET expression:
TYPES itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.
DATA(log) = cl_demo_output=>new( ).
DATA(itab) =
VALUE itab(
FOR i = 1 UNTIL i > 3
FOR j = 1 UNTIL j > 3
LET o = log->write( |{ i }, { j }\n{ i * 10 + j } | )->line( ) IN
( i * 10 + j ) ).
log->display( ).
Adding these three temporary lines to the above code gives:
Note that the local variable o declared behind LET is not used at all. It simply serves as hook for writing into the output object referenced by log.
There are no limits to the imagination!