SAPABAP-内部テーブルの削除

DELETEステートメントは、内部テーブルから1つ以上のレコードを削除するために使用されます。内部テーブルのレコードは、テーブルキーまたは条件を指定するか、重複するエントリを見つけることによって削除されます。内部テーブルに一意でないキーがあり、重複するエントリが含まれている場合、テーブルの最初のエントリが削除されます。

以下は、DELETEステートメントを使用して内部テーブルからレコードまたは行を削除するための構文です。

DELETE TABLE <internal_table> FROM <work_area_itab>.

上記の構文では、<work_area_itab>式は作業領域であり、<internal_table>内部テーブルのタイプと互換性がある必要があります。削除操作は、作業領域コンポーネントから取得できるデフォルトのキーに基づいて実行されます。

次の構文を使用して、DELETETABLEステートメントでテーブルキーを明示的に指定することもできます。

DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.

この構文では、<F1>、<F2> .... <Fn>は内部テーブルのフィールドであり、<K1>、<K2> .... <Kn>はテーブルのキーフィールドです。DELETEステートメントは、式<K1> = <F1>、<K2> = <F2> ... <Kn> = <Fn>に基づいて、<internal_table>テーブルのレコードまたは行を削除するために使用されます。

Note − <F1>、<F2> .... <Fn>項目のデータ型が<K1>、<K2> ... <Kn>キー項目と互換性がない場合、SAPシステムはそれらを自動的に変換します。互換性のある形式。

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.

上記のコードは次の出力を生成します-

2         6 
4         8 
5         9 
6         10 
7         11 
8         12

この例では、mytableにはColPとColQの2つのフィールドがあります。最初に、mytableには8行が入力され、ColPには値1、2、3、4、5、6、7、および8が含まれます。ColQには値5、6、7、8、9、10、11、およびColP値は毎回4ずつ増加するため、12です。

DELETEステートメントは、ColPキーフィールドの値が1または3であるmytableから行を削除するために使用されます。削除後、mytableのColPフィールドには、次のように値2、4、5、6、7、および8が含まれます。出力で。ColQフィールドには、値6、8、9、10、11、および12が含まれます。