Ansicht
Dokumentation

C15A_ERROR_SET - EHS: Setzen von Fehlern im API

C15A_ERROR_SET - EHS: Setzen von Fehlern im API

rdisp/max_wprun_time - Maximum work process run time   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

(Dieser Text muß nicht übersetzt werden.)

(Stand 13.7.2004)

Fehler in API-Bausteinen des EH&S werden mit dem Funktionsbaustein C15A_ERROR_SET gesendet. Ihm werden im wesentlichen die Fehlerkennung, der fehlerhafte Datensatz und eine interne Tabelle übergeben, die als Fehlerprotokolltabelle fungiert. Der Baustein ergänzt dann diese Protokolltabelle. Zusätzlich befüllt er auch die API-Standardfelder ERROR* (siehe DDIC-Struktur RCGAPISTD) im fehlerhaften Datensatz, falls diese dort vorkommen.

Beispiel

Typischerweise wird der Baustein so verwendet, wie das folgende Beispiel es zeigt:

...
...
L_CODING_POS-REPID = SY-REPID.
L_CODING_POS-FORM_NAME = 'L_SPEC_HEAD_READ'. "#EC *
...
...
IF ONE = TWO. "dummy
MESSAGE W221(C$) WITH X_SPEC_HEAD_WA-SUBCAT.
* Der Spezifikationsart & können keine
* Materialien zugeordnet werden
ENDIF.
CLEAR L_EXTERROR_WA.
L_EXTERROR_WA-TYPE = 'W'. "#EC *
L_EXTERROR_WA-ID = 'C$'. "#EC *
L_EXTERROR_WA-NUMBER = 221.
L_EXTERROR_WA-MESSAGE_V1 = X_SPEC_HEAD_WA-SUBCAT.
L_EXTERROR_WA-MESSAGE_V2 = ' '.
L_EXTERROR_WA-MESSAGE_V3 = ' '.
L_EXTERROR_WA-MESSAGE_V4 = ' '.
CALL FUNCTION 'C15A_ERROR_SET'
EXPORTING
I_EXTERROR_WA = L_EXTERROR_WA
I_CODING_POS = L_CODING_POS
I_APPL = 'STST' "#EC *
TABLES
X_EXTERROR_TAB = X_EXTERROR_TAB
CHANGING
X_API_WA = X_SPEC_HEAD_WA
X_FLG_ERROR = X_FLG_ERROR
X_FLG_WARNING = X_FLG_WARNING.
...
...

Erläuterungen:

Der Aufruf des Bausteins befüllt die Protokolltabelle X_EXTERROR_TAB mit folgendem Eintrag:

OBJECT HM040REF0001
RECN 00000000000000087294
ACTN 00000000000000000000
TYPE W
ID C$
NUMBER 221
MESSAGE Der Spezifikationsart REAL_SUB können keine Materialien
zugeordnet werden
LOG_NO
LOG_MSG_NO 000000
MESSAGE_V1 REAL_SUB
MESSAGE_V2
MESSAGE_V3
MESSAGE_V4
PARAMETER
ROW 0
FIELD
SYSTEM P3ECLNT003

(Dabei ist HM040REF0001 der Stoffschlüssel.) Zusätzlich werden die Fehlerattribute ERROR* der Feldleiste X_SPEC_HEAD_WA aktualisiert. Dabei wird jedoch darauf geachtet, daß eine dort bereits eingetragene Fehlerkennung nicht durch eine schwächere überschrieben wird: Ist etwa schon vor dem Aufruf X_SPEC_HEAD_WA-ERRORMODE = 'E' gewesen, so werden die Fehlerattribute durch die Warnungsmeldung nicht überschrieben.
Schließlich werden die boole'schen Variablen X_FLG_ERROR, X_FLG_WARNING entsprechend aktualisiert.
Bei L_EXTERROR_WA-TYPE werden die Werte 'S', 'I', 'W', 'E', 'A' und 'X' unterstützt. Bei den beiden letzten Werten erzeugt der Baustein mittels der neuen Anweisung RAISE EXCEPTION eine Ausnahme zur Ausnahmeklasse CX_EHS_INTERNAL_ERROR. Es wird daher empfohlen die gesamte API-Logik der Anwendung mit einem Block TRY ... ENDTRY zu umschalen. Wird die Ausnahme erzeugt, so wird nachfolgender Programmtext dann nicht mehr verarbeitet und es erfolgt ein direkter Sprung zu ENDTRY.
Die Angabe der Feldleiste L_CODING_POS ist optional. Typischerweise wird sie nur einmal zu Beginn der Routine gesetzt. Wird sie beim Aufruf angegeben, wird in das Protokoll automatisch der folgende Zusatzeintrag gestellt:

OBJECT HM040REF0001
RECN 00000000000000087294
ACTN 00000000000000000000
TYPE W
ID CM_GENERAL
NUMBER 101
MESSAGE Technische Zusatzinformationen zur letzten Nachricht:
SAPLC1F5 L_SPEC_HEAD_READ HM040REF0001
LOG_NO
LOG_MSG_NO 000000
MESSAGE_V1 SAPLC1F5
MESSAGE_V2 L_SPEC_HEAD_READ
MESSAGE_V3 HM040REF0001
MESSAGE_V4
PARAMETER
ROW 0
FIELD
SYSTEM P3ECLNT003

Dabei werden in die Felder MESSAGE_V3, MESSAGE_V4 die logischen Schlüssel des betreffenden Satzes gestellt, die vom Baustein generisch ermittelt werden. (Im Dialog sollte diese Meldung natürlich nicht angezeigt werden, aber in Protokollen von Hintergrund-Jobs und zu Testzwecken kann sie sehr nützlich sein.) Die Feldleiste L_CODING_POS besitzt noch ein drittes optionales Attribut ADD_INFO, mit dem die Programmstelle innerhalb der Routine noch genauer gekennzeichnet werden könnte.
Mit I_APPL wird die Anwendung gekennzeichnet (siehe die Festwerte der zugeordneten Domäne).
Der optionale Block IF ONE = TWO soll nie durchlaufen werden und dient lediglich dazu, die Meldung noch einmal explizit anzugeben, damit der Verwendungsnachweis der Transaktion SE91 die Meldung leicht wiederfinden kann. (Dabei sollten ONE, TWO zwei mit DATA deklarierte Variablen mit unterschiedlichem Wert sein (damit nicht irgendwann die CHECKMAN-Prüfungen dies als Fehler "überflüssige Anweisung" melden).)

Hinweise

Weitere Funktionalitäten:

Statt der Feldleiste I_EXTERROR_WA können alternativ die Parameter I_ERRORMODE, I_ERRORINFO, I_ERRORCLASS, I_ERRORPARAM mit den alten API-Fehlerkonstanten des Spezifikations- und des Phrasen-API's befüllt werden. Der Baustein konvertiert im Inneren dann die Eingaben entspr. um.
Standardmäßig ruft der Baustein bei Fehlern (Typ 'E', 'A' oder 'X') das Makro BREAK_POINT der Include-Datei CBUI18 auf. Mit dem Parameter I_FLG_BREAK_POINT kann dies unterdrückt werden.
Mit dem Parameter I_FLG_INT_ERR_EXC kann die oben erwähnte Ausnahme unterdrückt werden.
Mit dem Parameter I_FLG_INSERT_INTO_EXTERR_TAB kann die Aktualisierung der Protokolltabelle unterdrückt werden.
Mit dem Parameter I_FLG_API_WA_UPD kann die Aktualisierung der API-Feldleiste unterdrückt werden.
Statt einer einzelnen API-Feldleiste kann auch eine ganze Tabelle solcher Feldleisten in X_API_TAB übergeben werden. Dies erspart eine LOOP-Schleife über die Tabelle.

Weiterführende Informationen





Parameter

E_FLG_INTERNAL_ERROR
I_APPL
I_CODING_POS
I_ERRORCLASS
I_ERRORINFO
I_ERRORMODE
I_ERRORPARAM
I_EXTERROR_WA
I_FLG_API_WA_UPD
I_FLG_BREAK_POINT
I_FLG_INSERT_INTO_EXTERR_TAB
I_FLG_INT_ERR_EXC
X_API_TAB
X_API_WA
X_EXTERROR_TAB
X_FLG_ERROR
X_FLG_WARNING

Ausnahmen

Funktionsgruppe

C15A

Vendor Master (General Section)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7018 Date: 20240523 Time: 150519     sap01-206 ( 116 ms )