cancel
Showing results for 
Search instead for 
Did you mean: 

Some strange behavior/checks of ATC

DanielB
Explorer
0 Kudos

Hello,

we're using ATC for a few weeks now and I've some questions about specific checks.

1. "WRITE ... TO" can often be replaced by string templates for example, but how to replace a "WRITE ... TO ... UNIT" or an "WRITE ... TO ..." for a field with conversion routine "CUNIT"?
2. Why is a "LOOP AT ... GROUP BY ..." with a "LOOP AT GROUP ..." considered as nested loop?
3. I splitted a SELECT statement with a sub select on a buffered table into two separate SELECT statements (2nd one with "FOR ALL ENTRIES"), because sub selects ignore DDIC buffering. But now that I have two SELECT statements ATC says that I could transform the two SELECT statements to a single one. Shouldn't ATC check the buffer setting in DDIC and then suppress this message?

We're using ATC in Version 7.52 SP2

Thanks
Daniel

DanielB
Explorer
0 Kudos

Ok, for 2. (LOOP AT GROUP) I found a note: 2642712 - ABAP Test Cockpit meldet LOOP AT GROUP

For the other two problems I'm still lookin for a solution.

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member184455
Active Participant
0 Kudos

Hi Daniel,

I now asked development whether they want to suppress the message if any of the involved tables is buffered.
From performance point of view the situation is not straightforward if a buffered table is involved in SELECT + SELECT ... FOR ALL ENTRIES. Response time in comparison to a JOIN will depend on whether the buffer can be used at all, the type of buffering, the number of read lines, etc. In performance-critical code one should compare both versions.

Best Regards, Randolf

former_member184455
Active Participant
0 Kudos

Hi Daniel,

with regard to your third question: the check "Search SELECT .. FOR ALL ENTRIES-clauses to be transformed" has an option 'Exclude buffered reads'. When this flag is set, the message should be suppressed. If not, open an incident.

Best Regards, Randolf

DanielB
Explorer
0 Kudos

Hi Randolf,
we know the option 'Exclude buffered reads' and we've activated it already, but this option only helps, if the table of the second SELECT is buffered.

Her an example (theoretical), where the ATC-Check should suppress the message, because the table T179 (1st SELECT) is buffered:

DATA lt_prodh TYPE STANDARD TABLE OF t179-prodh WITH KEY table_line.
DATA lt_matnr TYPE STANDARD TABLE OF mara-matnr WITH KEY table_line.

SELECT prodh FROM t179 INTO TABLE @lt_prodh.
IF lt_prodh IS NOT INITIAL.
  SELECT matnr FROM mara FOR ALL ENTRIES IN @lt_prodh
    WHERE prdha = @lt_prodh-table_line
    INTO TABLE @lt_matnr.
ENDIF.

Best regards
Daniel