見出し画像

2020/06/05 今日の積み上げ

SAP研修5日目

◇内部テーブル:
内部テーブルには、通常テーブル・ソートテーブル・ハッシュテーブルの3種類がある。
(補足:その上の段階でテーブルには標準テーブル・アドオンテーブル・内部テーブルで分けられている。)

基本的な書き方:
例)
TYPES :(構造の定義
 BEGIN OF TYP_DATA1.
  KEY1(5) TYPE C.
  KEY1(5) TYPE C.
  NUM TYPE C.
 END OF TYP_DATA1.
 TYP_DATA1_T TYPE STANDARD TABLE OF TYP_DATA1. 
 (
構造を元に内部テーブルデータ型を定義する
 //GT_SORTDATA1_T TYPE SORTED TABLE OF TYP_DATA1 WITH UNIQUE KEY KEY1 KEY2.(ソートテーブルの定義)
 //GT_HASHDATA1_T TYPE SORTED TABLE OF TYP_DATA1 WITH UNIQUE KEY KEY1 KEY2.(ハッシュテーブルの定義)

DATA :
 GT_DATA1 TYPE TYP_DATA1_T,(テーブルデータ型の内部テーブルを定義する)
 GST_DATA1 TYPE  TYP_DATA1,(構造を元に作業領域を定義する)
 //GT_SORTDATA1 TYPE TYP_SORTDATA1_T,
 //GT_HASHDATA1 TYPE TYP_HASHDATA1_T.

GST_DATA1-KEY1 = 'AAA'.
GST_DATA1-KEY2 = 'TEST1'.
GST_DATA1-NUM = 100.
APPEND GST_DATA1 TO GT_DATA1.
(APPEND 作業領域 TO テーブル名 で格納する)
GST_DATA1-KEY1 = 'BBB'.
GST_DATA1-KEY2 = 'TEST2'.
GST_DATA1-NUM = 200.
APPEND GST_DATA1 TO GT_DATA1.
GST_DATA1-KEY1 = 'CCC'.
GST_DATA1-KEY2 = 'TEST3'.
GST_DATA1-NUM = 200.
APPEND GST_DATA1 TO GT_DATA1.
GST_DATA1-KEY1 = 'CCC'.
GST_DATA1-KEY2 = 'TEST4'.
GST_DATA1-NUM = 200.
APPEND GST_DATA1 TO GT_DATA1.
//APPEND LINES OF GT_DATA1 FROM 2 TO 3 TO GT_SORTDATA1.
(行数2と3だけ指定して格納することができる)
GST_DATA1-KEY1 = 'EEE'.
GST_DATA1-KEY2 = 'TEST5'.
GST_DATA1-NUM = 200.
//INSERT GST_DATA1 INTO TABLE GT_HASHDATA1.
(INSERTで行数を指定してその行に格納することができる)
GST_DATA1-KEY1 = 'FFF'.
GST_DATA1-KEY2 = 'TEST6'.
GST_DATA1-NUM = 200.
//COLLECT GST_DATA1 INTO GT_DATA1.
(COLLECTにより内部テーブルを格納しつつ、数値項目以外の項目が一致しているものに加算して表示される)
GST_DATA1-KEY1 = 'FFF'.
GST_DATA1-KEY2 = 'TEST6'.
GST_DATA1-NUM = 200.

LOOP AT GT_DATA1 INTO GST_DATA1.
(LOOP AT テーブル名 INTO 作業領域 で一行ずつ繰り返し表示していく)
//LOOP AT GT_DATA1 INTO GST_DATA1 WHERE KEY1 = 'BBB'.
(WHEREを使用すればLOOPを条件付きで読み込むことができる)
 WRITE :
  GST_DATA1-KEY1,
  GST_DATA1-KEY2,
  GST_DATA1-NUM.
ENDLOOP.

CLEAR : GST_DATA1.
(最後の作業領域を初期化する)
GST_DATA1-KEY1 = 'FFF'.
GST_DATA1-KEY2 = '999'.
MODIFY GT_DATA1 FROM GST_DATA1 INDEX 1.
(MODIFYを使うことによってINDEX1番の内容を更新できる)
(LOOP処理内にMODIFYを書くことで全てのデータを更新することもできる)

//GT_DATA2[] = GT_DATA1[].
//READ TABLE GT_DATA2 INTO GST_DATA1 INDEX 2.
(READ TABLEを使うことで指定したデータを読み込むことができる)
//READ TABLE GT_DATA2 INTO GST_DATA1 WITH KEY KEY1 = 'AAA'.
(KEYを使って指定した条件に一致したデータを読み込むことができる)
※GT_DATA2の変数定義が必要

//DELETE GT_DATA1 INDEX 2.
(DELETEを使って削除できる)
//DELETE GT_DATA1 WHERE KEY1 = 'BBB' AND KEY2 = 'TEST2'.
(WHEREを使って条件に一致したデータを削除できる)
//DELETE ADJACENT DUPLICATES FROM GT_DATA1 COMPARNING KEY1.
(KEY1の項目で重複したデータがあった場合2個目は削除される)

DESCRIBE TABLE GT_DATA1 LINES G_LINE.
WRITE : G_LINE.
(DESCRIBE TABLEにより内部テーブルの件数を取得できる)
※件数に使う変数の定義が必要

//SORT GT_DATA1 BY KEY1 ASCENDING.(昇順にソートする)
//SORT GT_DATA1 BY KEY1 DESCENDING.(降順にソートする)

◇豆知識:
・アスタリスクを3つ打ってタブを押すと横一列になる
・候補が出てきたらtabキーを押すとスムーズに進む
・トランザクションコード「se11」でDBを確認できる
・LOOP処理によって一行ずつWRITEで表示され、次の構造が作業領域に入る繰り返しだが、最終的に作業領域に残るのは最後に表示した構造なので、条件で指定するか、CLEARを使って初期化しなければならない。

以上。

この記事が気に入ったらサポートをしてみませんか?