9.1.11

SAP Note 17552 - Syntax error during a cycle in special periods

Symptom:

Keyword : Allocation
Description : When performing allocations (assessment, distribution,
periodic transfer posting) in a special period, you get
the following syntax error:
Source text ALxxyyyS: "Field "SAVE-SHARE0000" is unknown"
or "ABAP/4 packed field does not contain a correct
BCD format."
Transactions : KSW5, KSU5, KSUB, KSV5, KSVB, KEU5, GA15, GA35,
GA2B, GA4B
Program names: ALxxyyyR, ALxxyyyS, SAPMKGAL

Cause and prerequisites

Program error.

Conditions under which this error occurs:
1. The start period of the allocation is a special period.
2. This special period is not the first special period in the controlling area.

Solution
1. The syntax error can be avoided by always using a period interval when performing the allocation, so that the start period is the first special period.
2. You can completely eliminate the error by installing the following change:

************************************************************************
* Program: FKGA2F50
* FORM Routine: GEN-READDATA_RC ************************************************************************

FORM GEN-READDATA_RC USING
*--------------------------------
OLDTAB
FROM
TO
NORMAL_FLAG.
*--------------------------------
:
:
*...varying for save
WL = 'VARYING SSHA FROM SAVE-SHARE$1 NEXT SAVE-SHARE$2.'.
POS = FROM - RKGA2U-FROM + 1.
IF POS < 1. <-----INSERT
POS = 1. <-----INSERT
ENDIF. <-----INSERT
REPLACE '$1' WITH POS INTO WL.
ADD 1 TO POS.
REPLACE '$2' WITH POS INTO WL.
CONDENSE WL.
PERFORM APPEND-WL.

*...move
WL = 'ADD $1 TO SSHA.'.
:
:
:


************************************************************************ * Programm: FKGA2F50
* FORM-Routine: GEN-READ_RC
************************************************************************


*-------------------------------
form gen-read_rc using
*-------------------------------
index.
*-------------------------------

:
:
*.......generate oldkeys move
if index > 1.
clear old.
move space to o.
o-field = datas-field.
read table o.
if sy-subrc = 0.
old = true.
perform a_c using 0 'IF DBTYPE = DT-OLDKEYS.' 0 2 0.
if rkga2u-anzbp = nil.
*.............only normal
perform gen-readdata_rc using oldtab
rkga2u-from
rkga2u-to
'X'.
else.
*.............at first normal
if rkga2u-from <= rkga2u-anzbp. <<<< perform gen-readdata_rc using oldtab
rkga2u-from
rkga2u-anzbp
'X'.
xper_from = rkga2u-anzbp + 1. <<<< else. <<<< xper_from = rkga2u-from. <<<< endif. <<<<*.............then extra periods
* xper_from = rkga2u-anzbp + 1. <<<< perform gen-readdata_rc using oldtab
xper_from
rkga2u-to
space.
endif.
perform a_c using 0 'ELSE. ' -2 2 0.
endif.
endif.
*.......generate standard move
if rkga2u-anzbp = nil.
*.........only normal
perform gen-readdata_rc using space
rkga2u-from
rkga2u-to
'X'.
else.
*.........at first normal
if rkga2u-from <= rkga2u-anzbp. <<<<<< perform gen-readdata_rc using space
rkga2u-from
rkga2u-anzbp
'X'.
xper_from = rkga2u-anzbp + 1. <<<<<< else. <<<<<< xper_from = rkga2u-from. <<<<<< endif. <<<<<<*.........then extra periods
* xper_from = rkga2u-anzbp + 1. <<<<<< perform gen-readdata_rc using space
xper_from
rkga2u-to
space.
endif.

No comments:

Post a Comment