on 12-07-2018 2:41 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
83 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.