After a Structure Enhancement The Parameter Passing May No Longer Be Allowed
When I execute ATC check on my custom ABAP programs, I faced an check message about syntax errors related with S/4 indicating that after a structure enhancement, the parameter passing may no longer be allowed. This error was pointing to an ABAP code where I call an AMDP method and return a parameter of type table of VBELN structure. At first the error is difficult to solve because it works without any problem and produces no syntax errors.
In fact there are two ATC errors related with the same issue, so I put the sample ATC finding details below
Check Title: S/4HANA: Search for S/4 related syntax errors
Check Message: MESSAGEG:5
In position OUT_TAB after a structure enhancement, the parameter passing may no longer be allowed.
Check Title Extended Program Check (SLIN)
Check Message Structural enhancement by customer (very serious problem)
Syntax check warning.
In position OUT_TAB after a structure enhancement, the parameter passing may no longer be allowed.
Internal message code: MESSAGE G:5
Later I realized that the error is related with the AMDP procedure export parameter data type.
The parameter type I was passing to the AMDP class method was /SPE/VBELN_T table type (Table of struct vbeln). And its line type is /SPE/VBELN.
If the ABAP developer launches SE11 and displays /SPE/VBELN structure properties especially its Enhancement Category, it is seen that the enhancement category for the structure is selected as Can be enhanced (character-like or numeric).
At first, I thought the cause of the ATC check message was the enhancement category option selected as "can be enhanced".
Because in such a case the input-output parameter to the AMDP class method will be changed unexpectedly.
On the other hand, although the data structure changes the corresponding AMDP class method which is representing a HANA database procedure will welcome the change because its data type will be also changing.
A wrong idea lead me to think that if I change the enhancement category of the structure to "Cannot Be Enhanced", the ATC check will be resolved.
At that point I realized that the parameter types in ABAP code where AMDP procedure is called and the parameter definition in AMDP class method definition differ from each other. Although the data types are similar, I preferred to create an internal type within AMDP class and used this local data type in the input parameter declaration. Of course in such a case, if a structure change id done on /SPE/VBELN_T it will not be reflected on the AMDP and a serious problem will occur because the types will not match.
So actually, the reason of the ATC error was not using the same data structure or data types for AMDP parameters. When I used the same ABAP table type, or the same DDIC object for the AMDP procedure parameters the problem is resolved automatically.