Open Quappel opened 2 years ago
Where did you this form of return
? What is the ABAP release you are on?
My gut feeling is someone defined a macro with the same name as return
. Could you check the table TRMAC with name = 'RETURN'?
~Suhas
Hi I am just back from vacation and will check tomorrow
The ABAP release is 751.
I checked the TRMAC and there is no entry for 'RETURN'.
You also cannot redefine keywords using macros (I assume this also applies to TRMAC) "RETURN" is an ABAP key word and cannot be redefined as a DEFINE macro.
. I cannot reproduce this on 7.56 and the info doesn't quite add up for me.
This works also in Abap ( at least in the newest version )
is the feature coming soon?
The ABAP release is 751.
7.51 was released 6 years ago.
Ohh sorry, I had no idea how to look it up and must have been looking at the wrong value. My coworker just told me that it is 7.58
Ah now it makes sense, then we externals got another sneak peek with this styleguide repo ;)
(S/4 2022 was just released with 7.57 and the BTP ABAP Environment is on the equivalent 7.89.)
Let's wait till that ABAP version is available to the external world, then recommend it as the default variant.
As 7.58 is already officially supported, can this be added as recommended variant?
This is interesting, and appears to work on A4H 2022 / 7.58
Now a question is whether this is a recommended approach? The ABAP Doco says: The statement RETURN is generally intended for early but proper returns from processing blocks. This implies not to use it at the end of a method.
But it does read nicely, and eliminates the need for naming the result variable anywhere other than the declaration. I like this simplification. I mean it would be awkward if we compacted the result assignment into a RETURN
in the middle of a method and not at the end:
METHOD calculate_stuff.
IF someattribute < 0.
RETURN -1.
ENDIF.
...
result = a + b.
ENDMETHOD.
So for consistency I'd rather use RETURN throughout:
METHOD calculate_stuff.
IF someattribute < 0.
RETURN -1.
ENDIF.
...
RETURN a + b.
ENDMETHOD.
In the guideline, as well as all trainings, it is said that one should name the return value result and then assign the return parameter in the code.
In other languages the form
return Value;
is used. This works also in Abap ( at least in the newest version ), I find it much easier to read. Why is it not mentioned? Also in the Language Help it is not mentioned. Is it a bug, is the feature coming soon?