In meiner aufgelösten SQL-Quelle habe ich was seltsames festgestellt:
Code:
//* exec sql select max(PLDAT), sum(PLMENG)
//* into :Wareneingangsdatum :Null1
//* ,:Wareneingangsmenge :Null2
//* from D060
//* where PLBBNR = :D242.BBNR
//* and PLABNR = :D242.BBABNR
//* and PLPONR = :D242.BBPONR
//* ;
SQL_00128 = D242.BBNR;
SQL_00129 = D242.BBABNR;
SQL_00130 = D242.BBPONR;
SQLER6 = -4;
SQLROUTE_CALL(
SQLCA
: SQL_00123
);
IF SQL_00126 = '1';
IF SQL_00132 >= 0;
EVAL WARENEINGANGSDATUM = SQL_00131;
ENDIF;
EVAL NULL1 = SQL_00132;
EVAL WARENEINGANGSMENGE = SQL_00133;
EVAL NULL2 = SQL_00134;
ENDIF;
Man beachte: Wenn der Nullanzeiger vom WARENEINGANGSDATUM >= 0 ist, nur dann wird das WARENEINGANGSDATUM gesetzt.
Warum wird dann das Feld WARENEINGANGSMENGE immer gesetzt?
SQL_00131 enthält nämlich dann den 01.01.0001.
Durch die NULL-Abfrage des Precompilers enthält aber WARENEINGANGSDATUM den vorherigen Wert, während WARENEINGANGSMENGE auf 0 gesetzt wird.
Seltsam....
Bookmarks