Quantcast
Channel: ABAP Development
Viewing all articles
Browse latest Browse all 948

Logging Expressions

$
0
0

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:



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:


out8.gif


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!














Viewing all articles
Browse latest Browse all 948

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>