Ansicht
Dokumentation

ISU_O_METERREAD_INPUT - INTERN: Prüft und übernimmt Eingaben

ISU_O_METERREAD_INPUT - INTERN: Prüft und übernimmt Eingaben

ABAP Short Reference   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

1. Aufgabe

Der Check-Input führt folgende Prüfungen durch

formale Prüfungen (z.B. Format Zählerstand)

unabhängige Plausiblitätsprüfungen

abhängige Plausiblitätprüfungen

Tritt ein Fehler auf erscheint im Dialogfall eine Fehlermeldung am Bildschirm. Im Batch wird eine ensprechende Fehlermeldung ins Protokoll geschrieben und dann das nächste Ableseergebnis weiterverarbeitet

2. Aufbau

Es werden zuerst alle Einträge der Tabelle OBJ-I_REABLD bzw. kann auch eine Untermenge der OBJ-I_REABLD (XT_REABLD) direkt übergeben werden untersucht. Im Anschluß daran werden die unabhängigen Prüfungen durchgeführt. Die Zählerstände, für die keine Fehler aufgetreten sind, werden dann in die Tabelle OBJ-IEABL übertragen.

PROGRAMMCODING:

Fülle lokale LT_REABLD Tabelle (unter bestimmten Umständen z.B. Korrekturschirm abhängige Prüfungen wird nur eine Teilmenge der OBJ-I_REABLD geprüft)

SPEC_TREAT_DEPVAL: initialisiere Abhängige Prüfungen, wenn Zählerstand entfernt wurde

LOOP über LT_REABLD

SKIP_WHEN_NOENTRY_OR_CHANGES: übergehe Ablesergebnis, wenn Prüfung bereits erfolgt oder Ableseergebnis leer

MASSENTRY: Schnellerfassung: lese Ablesebelegnummer und fülle sie ins Table Control

alle eingabefelder leer ? (entrynum, ablhinw, zwstand, pruefz) wurden Felder überschrieben mit Bllank lösche EABL aus Objekt

Erfassungsnummer initial, andere Felder gefüllt -> Fehler

Lese EABL zur Erfassungsnummer

Füge neuen EABL zum Objekt hinzu

Fülle REABLD-Daten

Prüfe Prüfzahl

CHECK_SINGLE_REABLD: prüfe Eintrag auf formale Fehler und führe

Unabhängige Prüfungen durch

*** Erklärung nachfolgend

passe REABLD an (modify)

ENDLOOP

CALL_DEPENDENT_VALIDATION: Aufruf der abhängigen Pausiblitäts-rüfungen

**** Erklärung nachfolgend

DELETE_EMPTY_TC_LINES: bei Schnellerfassung leere Zeilen löschen

TRANSFER_DYNPRODAT: übertrage REABLD-Daten in die OBJ-IEABL Daten. Loop über LT_REABLD Ablesebelegnr leer (bei Fehler wird die Ablesebelegnr gelöscht) -> skip Ablesebelegnr gefüllt: Lese entsprechenden EABL-Satz aus Objekt und übernehme änderbare Felder

*** Form CHECK_SINGLE_REABLD Aufruf ISU_CHECK_SINGLE_REABLD1

Ableseergebnisbearbeitung im Dialog:

D1) CHECK_INPUT_CHANGED

Durch Vergleich mit den OLD-Daten wird erkannt, ob eine Änderung stattgefunden hat (z.B. Reabld-Zwstand und Reabld-Zwstand_old); findet für alle Inputdaten statt. Je nachdem, welche Änderungen durchgeführt wurden werden Daten wie Verbrauch etc angepaßt. Dies wird durch das Setzen der Flags: f_compt_new, y_compt_new, y_adat_new, y_reset_istablart und y_changed gesteurt.

Ableseergebnisvearbeitung im Batch

Setze f_mrdiff_new, f_adat_check, f_changed

D2) INIT_INPUTDATA

setze alle unabhängigen Prüfungen auf ungeprüft

setze alle abhängigen Prüfungen auf ungeprüft

initialisiere check-flag (formale Prüf, abh. Prüfung)

führe Hinweise aus

initialisiere message-Daten

übertrage Daten ind OLD-Daten des REABLDs

D3) FORMAL_CHECKS: formale Prüfungen

Schnellerfassung: Existiert EABL bereits auf dem Schirm, prüfe Prüfzahl

Prüfe Ablesedatum: initial, adatmax, vor techn. Einbau, nach Ausbau, in Abrechnungsperiode, alle Ergebnisse zum gleichen Adat erfaßt, Zukunftsbetrachtung

Prüfe Format des Zählerstandes

Prüfe Istableseart

Wurde Verbrauch verändert (Korrekturbildschirm) Formatierung

Prüfe Ableser

setze Prüfflag formale Prüfungen auf durchgeführt

D4) ACTUALIZE_VALDATA: aktualisiere Prüfungsdaten wie z.B. Vorablesestand (evt. Bei Adat-änderung), erw. Verbrauch (bei adatänderung), Verbrauch (bei Zwst.Änderung) und ZwSt.differenz.

D4) FORMAL_VALCHECKS: fixe Plausiblitätsprüfungen (Festwertabw., Rückstellzählwerk, unplausbiler Vorablesestand)

LOOP über durchzuführende (fixe) Prüfungen (OBJ-I_VALID)

führe Prüfung durch (Fuba in EPU1): Prüfung kann mit Erfolg beendet werden (sy-subrc = 0) mit PLAUSI_ERROR (sy-subrc), mit PLAUSI_ERROR_NOCOR(sy-subrc = 2) oder anderem Fehler (sy-subrc >2)

Bei Fehler (sy-subrc>2) -> Raise Exception

Bei Erfolg oder Plausierror)-> setze Ablesestatus (berücksichtige auch Fehlerklasse), setze Prüfung auf durchgeführt obj-i_valid-f_checked, ermittle Dynpro (je nach Andwendung), setze Cursordaten (für externe Aufrufer z.B. Geräteverwaltung)

Raise Exception

ENDLOOP

Ist Zählwerk in Zählwerksbeziehung involviert, muß Status auf 5 (unabhängig geprüft gesetzt werden)

D5) VALIDATION_SPECIFIC: siehe D4

Rückkehr aus Funktionsbaustein ISU_CHECK_SINGLE_REABLD1

D6) MSG_HANDLE_INPUT_SINGLE

Batchverarbeitung: bei Fehler

TREAT_ERROR_UPLOAD: Bei echten Fehlern wird die Fehlermeldung

ins Objekt (OBJ-IEMSG) übernommen und die Ablesebelegnummer des

wa_reabld gecleart (-> später kein Transfer in OBJ-IEABL). Übernehme

wa_reabld in obj-i_reabld. Kontrolldaten werden initialisiert (clear Flag

Fehler ist aufgetreten und Cursorposition)

Dialogverarbeitung bei Fehler

case

input_error,,Raise message

not_valid: ,,Raise message

plausi_error: übernehme WA_REABLD in OBJEKT-I_REABLD, setze

Flag plausi_error in Kontrolldaten des Objekt und merke die

Zeile (die Zeile wird rot unterlegt angezeigt).

Raise message

plausi_error_nocor: (bei unplausibler Vorablesung) siehe plausi_error

not_complete (bei abhängigen Prüfungen) siehe plausi_error

system_error,,raise message

others ,,,,raise message

kein Fehler: übernehme wa_reabld in obj-i_reabld

*** Form call_dependent_validation

E1) DETERM_INVOLVED_INDEXNR: bestimmte betroffende Zählwerksbeziehungen zu Ableseergebnisse in LT_REABLD und schriebe sie in LT_EASTIH

LOOP at LT_EASTIH

E2 ) FUBA ISU_VALIDATION_DEPENDENT

- Loop über alle abhängigen Prüfungen (obj-i_valid_dep) zur Indexnummer.

- Lese alle beteiligten REABLDs. und merke sie in OBJ-I_CORR_REABLD.

Prüfe, ob es Zählerstände in allen beteiligten REABLDs gibt. Ist für keinen

REABLD ein Zählerstand angelegt, verlasse Prüfung. Gibt es nur teilweise

Zählerstände, raise error not_complete.

- Rufe entsprechenden Fuba (EPA1) in Abhängigkeit vom Popcode auf

E3) PROCESS_RESULT_DEPVAL: Weiterverarbeitung nach erfolgter Prüfung

bei echten Fehler raise entsprechende Message

setze Ablesestatus für jeden beteiligten REABLD, schreibe message in jeden beteiligten REABLD, setze Prüfung auf durchgeführt (obj-i_valid_dep), übertrage beteiligte REABLDs obj und raise message

E4) MSG_HANDLE_INPUT_DEP

!!!!! müßte eigentlich so ablaufen wie die unabhängigen Prüfungen, ist aber nicht so stimmig !!!!

ENDLOOP.

Beispiel

Hinweise

Weiterführende Informationen





Parameter

XYT_REABLD
XY_OBJ
X_CORRECT
X_MAXERROR
X_ONLY_FORMAL_CHECKS
X_VALDEP_PARTLY
Y_SUBSCR_CURSPOS

Ausnahmen

INDEP_IMPLAUSIBLE
INPUT_ERROR
NOT_AUTHORIZED
NOT_COMPLETE
NOT_VALID
PLAUSI_ERROR
PLAUSI_ERROR_NOCOR
SYSTEM_ERROR

Funktionsgruppe

EL01

Addresses (Business Address Services)   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 9652 Date: 20240523 Time: 122934     sap01-206 ( 112 ms )