Open SQL strict mode, SAPSQL_DATA_LOSS and ATC
New features in Open SQL, such as the inline declaration of variables, cause Open SQL to switch to strict mode.
Among other things, this leads to the WHERE condition being strictly checked.
While the following SQL command does not lead to a dump in “normal” mode.
data ls_100 type t100. select single * from t100 into ls_100 where sprsl = 'ES'.
The analog command executes in strict mode leads to a dump SAPSQL_DATA_LOSS (Data was lost while copying a value).
select single * from t100 into @data(ls_100) where sprsl = 'ES'.
The reason for this is that the data of the right part of the WHERE condition could not be copied completely.
In kernel release 745 there was no possibility to check this.
The syntax check In kernel release 753 is able to check too long literals and wanrs with the message: “The type of “‘ES'”. cannot be converted to the type of “SPRSL”. “.
Dynamic too long values, if the right side is a variable that can potentially contain a longer content, will still not be warned.
If you want to perform this check during transport release and prevent release, you can activate the “Syntax Check” for message code “MESSAGEGQC” in the CI/ATC check variant.
This check is a non-remote-enabled check. If a central ATC is used, the code inspector has to be used in every client development system to prevent the release.
In this case, variant TRANSPORT or the alternative variant stored in table SCICHKV_ALTER must be extended by the “Syntax Check”. In addition, the code inspector must be activated in mode ‘E’ in the ATC configuration.