Vermeiden Sie Doppelte Datensätze (SAP ABAP)
Ich m versuchen zu schreiben, wenn die Anweisung zu geben, Fehlermeldung, wenn Benutzer versuchen, hinzufügen, vorhandene ID-Nummer.Wenn ich versuche, geben Sie vorhandene id bekomme ich Fehler .bis hier ist es s ok, aber wenn ich eine andere id und füllen Sie die Felder(name,Adresse usw) es geht nicht um die Datenbank.
METHOD add_employee.
DATA: IT_EMP TYPE TABLE OF ZEMPLOYEE_20.
DATA:WA_EMP TYPE ZEMPLOYEE_20.
Data: l_count type i value '2'.
SELECT * FROM ZEMPLOYEE_20 INTO TABLE IT_EMP.
LOOP AT IT_EMP INTO WA_EMP.
IF wa_emp-EMPLOYEE_ID eq pa_id.
l_count = l_count * '0'.
else.
l_count = l_count * '1'.
endif.
endloop.
If l_count eq '2'.
WA_EMP-EMPLOYEE_ID = C_ID.
WA_EMP-EMPLOYEE_NAME = C_NAME.
WA_EMP-EMPLOYEE_ADDRESS = C_ADD.
WA_EMP-EMPLOYEE_SALARY = C_SAL.
WA_EMP-EMPLOYEE_TYPE = C_TYPE.
APPEND wa_emp TO it_emp.
INSERT ZEMPLOYEE_20 FROM TABLE it_emp.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = 'INFO'
TEXTLINE1 = 'Record Added Successfully.'.
elseif l_count eq '0'.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = 'INFO'
TEXTLINE1 = 'Selected ID already in database.Please type another ID no.'.
ENDIF.
ENDMETHOD.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ich bin immer Ihre Erklärung. Warum sind Sie versuchen zu re-fügen Sie alle vorhandenen Einträge wieder in die Tabelle? Sie sind nur versuchen, einfügen
C_ID
etc, wenn es noch nicht existiert? Warum müssen Sie alle vorhandenen Einträge für die?Wenn dem so ist, werfen hin, dass die Auswahl und die Schleife vollständig, Sie brauchen es nicht. Sie haben ein paar Optionen...
Lesen Sie einfach die Tabelle mit einem einzigen Eintrag
Modify-Anweisung
Diese überschrieben werden, doppelte Einträge mit neuen Daten (also nicht-Schlüssel-Felder können dies ändern, Weg), wird es nicht scheitern. Keine Notwendigkeit für ein popup.
Fangen die SQL-Ausnahmen anstatt es dump
Wenn das update fehlschlägt, weil eine Ausnahme, können Sie immer fangen und Umgang mit außergewöhnlichen Situationen.
Ich denke, es ist ein Fehler beim anfügen in der Tabelle 'IT_EMP' und einfügen in 'ZEMPLOYEE_20" - Tabelle.
Angenommen, Sie fügen die erste Zeit und Sie dann einfügen. Aber wenn Sie fügen Sie die zweite Zeit, die Sie haben 2 Datensätze in 'IT_EMP', die eingefügt in 'ZEMPLOYEE_20'. Das ist, weil Sie nicht aktualisieren oder deaktivieren der internen Tabelle und dort haben Sie einen runtime-error.
Laut SAP-Dokumentation auf 'Einfügen von Zeilen in Tabellen ':
Vielleicht die richtige Richtung hier versucht, legen Sie die Arbeit Bereich direkt an, aber vorher müssen Sie prüfen, ob schon ein Eintrag existiert mit dem primären Schlüssel.
Überprüfen Sie die SAP-Dokumentation zu diesem Thema auf den link klicken bevor.
Auf der anderen Seite, wenn
l_count
ist null, weil derl_count = l_count * '0'.
dieser Wert wird sich nie ändern, um eine andere Zahl zu machen, dass Sie nicht "Anhängen" oder "einfügen" wieder.warum sind Sie beim abrufen aller Einträge aus der zemployee_20 ?
Können Sie direkt überprüfen, ob der 'id' ist bereits vorhanden oder nicht mit select single. Wenn vorhanden, dann Meldung anzeigen, wenn nicht, hinzufügen.
Es wird empfohlen, zum abrufen von nur einem Feld, wenn Sie gebraucht wird und nicht die gesamte Tabelle, mit asterisc *
Darüber hinaus l_count ist nicht nur unnötig, sondern auch schlecht umgesetzt.
Können Sie direkt verwenden Sie die insert-Abfrage,wenn der sy-subrc ist nicht erfolgreich, erhöhen die Fehlermeldung.