SAP ABAP - Dahili Tabloları Silme
DELETE deyimi, dahili tablodan bir veya daha fazla kaydı silmek için kullanılır. Dahili bir tablonun kayıtları, bir tablo anahtarı veya koşul belirtilerek veya yinelenen girişler bularak silinir. Dahili bir tablonun benzersiz olmayan bir anahtarı varsa ve yinelenen girişler içeriyorsa, tablodaki ilk giriş silinir.
Dahili tablodan bir kaydı veya satırı silmek için DELETE deyimini kullanmak için sözdizimi aşağıdadır -
DELETE TABLE <internal_table> FROM <work_area_itab>.
Yukarıdaki sözdiziminde, <work_area_itab> ifadesi bir çalışma alanıdır ve <internal_table> dahili tablonun türüyle uyumlu olmalıdır. Silme işlemi, çalışma alanı bileşenlerinden alınabilecek bir varsayılan anahtar temelinde gerçekleştirilir.
Aşağıdaki sözdizimini kullanarak DELETE TABLE deyiminde açıkça bir tablo anahtarı da belirtebilirsiniz -
DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.
Bu sözdiziminde, <F1>, <F2> .... <Fn> dahili bir tablonun alanlarıdır ve <K1>, <K2> .... <Kn> tablonun anahtar alanlarıdır. DELETE ifadesi, <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn> ifadelerine bağlı olarak <internal_table> tablosunun kayıtlarını veya satırlarını silmek için kullanılır.
Note - <F1>, <F2> .... <Fn> alanlarının veri türleri <K1>, <K2> ... <Kn> anahtar alanlarıyla uyumlu değilse SAP sistemi bunları otomatik olarak uyumlu format.
Misal
REPORT ZDELETE_DEMO.
DATA: BEGIN OF Line1,
ColP TYPE I,
ColQ TYPE I,
END OF Line1.
DATA mytable LIKE HASHED TABLE OF Line1
WITH UNIQUE KEY ColP.
DO 8 TIMES.
Line1-ColP = SY-INDEX.
Line1-ColQ = SY-INDEX + 4.
INSERT Line1 INTO TABLE mytable.
ENDDO.
Line1-ColP = 1.
DELETE TABLE mytable: FROM Line1,
WITH TABLE KEY ColP = 3.
LOOP AT mytable INTO Line1.
WRITE: / Line1-ColP, Line1-ColQ.
ENDLOOP.
Yukarıdaki kod aşağıdaki çıktıyı üretir -
2 6
4 8
5 9
6 10
7 11
8 12
Bu örnekte, mytable iki alana sahiptir, ColP ve ColQ. Başlangıçta mytable sekiz satırla doldurulur ve burada ColP 1, 2, 3, 4, 5, 6, 7 ve 8 değerlerini içerir. ColQ 5, 6, 7, 8, 9, 10, 11 değerlerini içerir ve 12, çünkü ColP değerleri her seferinde 4 artırılır.
DELETE ifadesi, ColP anahtar alanının değerinin 1 veya 3 olduğu mytable'daki satırları silmek için kullanılır. Silindikten sonra, mytable'ın ColP alanı gösterildiği gibi 2, 4, 5, 6, 7 ve 8 değerlerini içerir. çıktıda. ColQ alanı 6, 8, 9, 10, 11 ve 12 değerlerini içerir.