24.12.10

SAP Note 15451 - RAALTD01: subnumbers assigned incorrectly

Symptom:

When creating subnumbers using batch input, subnumbers are assigned to the wrong asset main numbers. The error only occurs in connection with internal main number assignment.
Keywords: RAALTD01 AS91 AS94

Cause and prerequisites

The error can only occur when the main number for the subnumber could not be created because an error occurred.

Solution
The error in the asset main number for the subnumber should be corrected in the input file of batch input program RAALTD01. When the corresponding main number is created correctly, the error will no longer occur.

Error corrected in Rel. 2.2C.
Advance correction: change program RAALTD01 as follows:
:
* Merker: Batch-Input-Mappe eroeffnet.
DATA: FLG_BDC_OPEN(1) TYPE C, <<< change
* AS94-Skip, d.h. bei Fehler in AS91 <<< insert
* folgende Unt.nrern überspringen <<< insert
FLG_AS94_SK(1) TYPE C. <<< insert
:
FORM AS94_FEHLER_ERMITTELN USING L_SUBRC.

DATA:
* Zwischenspeicher für Feldinhalte.
L_CHAR_VALUE LIKE BDCDATA-FVAL,
* Aktueller Suffix.
L_AKT_SUFFIX(2) TYPE C,
* Aktueller AfA-Bereich.
L_AKT_AFABE LIKE ANKB-AFABE.
* Default: Keine Fehler festgestellt.
L_SUBRC = 0.
" Hauptnummer kann hier nicht gefüllt sein, da erst später per Set-/get-
" besorgt.
* Hauptnummer nicht gesetzt.
* IF BALTD-ANLN1(1) EQ '/'.
* IF L_SUBRC EQ 0.
* SY-MSGTY = 'E'.
* SY-MSGID = 'AU'.
* SY-MSGNO = '033'.
* SY-MSGV1 = SPACE.
* SY-MSGV2 = SPACE.
* SY-MSGV3 = SPACE.
* SY-MSGV4 = SPACE.
* PERFORM FEHLER_MERKEN.
* L_SUBRC = 4.
* EXIT.
* ENDIF.
* ENDIF.

* Nachfolgende AS94-Sätze überspringen, <<< insert
* wenn AS91 vorher schief ging. <<< insert
IF FLG_AS94_SK = 'X'. <<< insert
IF L_SUBRC EQ 0. <<< insert
SY-MSGTY = 'E'. SY-MSGID = 'AU'. SY-MSGNO = '255'. <<< insert
SY-MSGV1 = BALTD-ANLN2. SY-MSGV2 = BALTD-OLDN1. <<< insert
SY-MSGV3 = SPACE. SY-MSGV4 = SPACE. <<< insert
PERFORM FEHLER_MERKEN. <<< insert
L_SUBRC = 4. <<< insert
EXIT. <<< insert
ENDIF. <<< insert
ENDIF. <<< insert
:
ENDFORM.


FORM AS91_ERZEUGEN.

DATA: L_SUBRC LIKE SY-SUBRC.

L_SUBRC = 0.
* Zuerst Formalfehler checken ...
CASE BALTD-TCODE.
WHEN 'AS91'.
* Skippen von AS94-Sätzen wieder ausschalten. <<< insert
FLG_AS94_SK = ' '. <<< insert
PERFORM AS91_FEHLER_ERMITTELN USING L_SUBRC.
WHEN 'AS92'.
PERFORM AS92_FEHLER_ERMITTELN USING L_SUBRC.
WHEN 'AS94'.
PERFORM AS94_FEHLER_ERMITTELN USING L_SUBRC.
ENDCASE.
* Fehler ...
IF L_SUBRC NE 0.
* ... dann Fehler-Counter hochsetzen.
XSTAT-ERCNT = XSTAT-ERCNT + 1.
* ... bei fehlerhaftem AS91 sollen alle nachfolgenden <<< insert
* AS94-Sätze übersprungen werden. <<< insert
IF BALTD-TCODE = 'AS91'. <<< insert
FLG_AS94_SK = 'X'. <<< insert
ENDIF. <<< insert
ENDIF.
:

* Interne Hauptnummernvergabe ==> Hauptnummer erst besorgen.
IF NRIV-EXTERNIND IS INITIAL AND
( BALTD-TCODE EQ 'AS92' OR
BALTD-TCODE EQ 'AS94' ) .
* Bei AS92: Wird Hauptnummer bereits mitgegeben?
IF ( BALTD-ANLN1(1) = '/' OR <<< change
BALTD-ANLN1(1) IS INITIAL ) AND <<< change
FLG_AS94_SK = ' '. <<< insert
GET PARAMETER ID 'AN1' FIELD BALTD-ANLN1.
ENDIF.
ENDIF.
* Interne Unternummernvergabe ==> Unternummer erst besorgen.
IF ANKA-XUNTV IS INITIAL AND
BALTD-TCODE EQ 'AS92' .
GET PARAMETER ID 'AN2' FIELD BALTD-ANLN2.
ENDIF.
:

* Fehlerfreie Transaktion oder kein echter Fehler.
IF SY-SUBRC EQ 0. ""OR
** ( SY-MSGID EQ '00' AND
** SY-MSGNO EQ '344' ) .
IF XTEST EQ SPACE.
* Update-Counter hochsetzen.
XSTAT-UPCNT = XSTAT-UPCNT + 1.
ENDIF.
* Fehlerhafte Transaktion.
ELSE.
* ... bei fehlerhaftem AS91 sollen alle nachfolgenden <<< insert
* AS94-Sätze übersprungen werden. <<< insert
IF BALTD-TCODE = 'AS91'. <<< insert
FLG_AS94_SK = 'X'. <<< insert
ENDIF. <<< insert
* Echtlauf.
IF XTEST EQ SPACE.
* Eventuell Batch-Input erst mal eroeffnen.
IF FLG_BDC_OPEN = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
USER = SY-UNAME
GROUP = MAPPE.
:
ENDFORM.


In addition, use the "Maintain message class" transaction (SE91) to define the following message:
1. Specify message class "AU"
2. Subobjects: "Messages" -> Change
3. Enter message number 255 and "Single entry" 4. Text: Subnumber & for old asset & could not be created.
When you process the batch input session that contains all the faulty records, observe the following:
1. When you correct the erroneous asset main number (AS91), you
will have to note the asset main number that the system assigns.
2. This asset main number must be entered manually on the first screen
when the subnumbers are created (AS94).

No comments:

Post a Comment