2011-08-30 27 views
5

Mam oświadczenie UPDATE w ABAP który wygląda następująco:Update w ABAP nie działa

UPDATE zicstt099 FROM TABLE lt_zicstt099

Aktualizacja zawodzi za każdym razem z sy-subrc eq 4.

tabeli bazy danych ZICSTT099 trzy klucze podstawowe: WEB_USER_ID & EMAIL_ID wraz z MANDT dziedzinie.

Próbuję zmienić wartość EMAIL_ID, ale ta sama nie jest aktualizowana.

Uprzejmy pomoc.

Odpowiedz

7

Nie można zmienić pól klucza podstawowego za pomocą instrukcji UPDATE <target> FROM <wa>. i UPDATE <target> FROM TABLE <itab>., ponieważ używają klucza podstawowego do wyszukiwania rekordów, które muszą zaktualizować.

Zamiast tego należy użyć instrukcji UPDATE <target> SET <set1> ... WHERE ....

można znaleźć szczegółów tutaj: http://help.sap.com/abapdocu_70/en/ABAPUPDATE_SOURCE.htm#&[email protected]@

0

może nie „zmiany” kluczowych pól w bazach danych, które. Możesz usunąć swój pierwotny wpis i wstawić nowy za pomocą innego klucza. Ale nie możesz zmienić pola klucza. (Nie mogę sprawdzić rzeczywiste, jeśli modify robi to na swój własny

Jeśli trzeba zmienić kluczową boiska, warto pomyśleć o swojej DB-definition

więcej o zmianie pól kluczowych:.. Can we update primary key values of a table?

+2

To jest złe, przynajmniej w Open SQL. Zobacz dokumentację cytowaną przez René. – vwegert

0

Jeśli sy-subrc = 4, to nie można było zmienić co najmniej jednej linii, ponieważ nie znaleziono odpowiedniej linii lub dlatego, że zmiana spowodowałaby wygenerowanie linii prowadzącej do podwójnych wpisów w kluczu podstawowym lub unikalny indeks wtórny w tabeli bazy danych:

Sta tement UPDATE ustawia sy-dbcnt na liczbę zmienionych linii.

-1

hi próbowałem stworzyć tabelę z kluczy jak wspomniano, radzę korzystać z poniższą składnią

update lt_zicstt099 set email_id = 'some value' where WEB_USER_ID = 'some web id'. 

aby sprawdzić, czy tabela jest aktualizowana można użyć SY-dbcnt znać liczbę wiersze zaktualizowane. jeśli nadal napotykasz problemy, prosimy o komentarz poniżej