
三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
登場人物紹介
三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
この記事を読むメリット
ABAP7.4以降では内部テーブル(inner table)からのデータ取得方法(READ TABLE)についても新たな構文が追加されました。
ここでは内部テーブルからデータ取得する際の新構文を解説していくのじゃ!
・同じプログラム内で旧構文と新構文の内部テーブルからのデータ取得文は同居可能です。
新着のSAPフリーランス案件
【MM】
【PP】
製造業向けSAP PP領域の工場展開支援
【SD】
大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(SD)
【FI】
大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(FI)
【FI】
輸送用機器企業様向けS/4導入案件支援
【CO】
【FI】
S/4HANA Privateの導入支援(開発~単体テスト)
【PP】
生産領域(PP)でのテスト工程支援
【CO】
【FI】
ハードウエアリプレイスに伴うSAPシステム検証支援
【SD】
空調機メーカーS/4導入におけるFiori設計支援
【MM】
【PP】
電気機器メーカー向けSAPの運用保守支援
【MM】
【SD】
ERPシステム要件定義支援
・新構文では以下のような形で内部テーブルから指定した行を構造に格納できます。
構造 = 内部テーブル[ 指定行数 ].
・ただし新構文でデータ取得できない場合は例外(EXCEPTION):cx_sy_itab_line_not_foundが発生するので例外をCHATCHする必要があります。
* 内部テーブルから1行目を取得
READ TABLE it_mara INTO wa_mara INDEX 1.
* 内部テーブルから1行目を取得
TRY.
wa_mara = it_mara[ 1 ].
CATCH cx_sy_itab_line_not_found.
" 何らかの処理
ENDTRY.
・新構文では以下のような形で内部テーブルから条件に合う行を構造に格納できます。
構造 = 内部テーブル[ 項目1 = 値 項目2 = 値 …].
・ただし新構文でデータ取得できない場合は例外(EXCEPTION):cx_sy_itab_line_not_foundが発生するので例外をCHATCHする必要があります。
* 内部テーブルから条件指定して取得
READ TABLE it_mara INTO wa_mara
WITH KEY matnr = 'MAT0001'
mtart = 'ROH'.
* 内部テーブルから条件指定して取得
TRY.
wa_mara = it_mara[ matnr = 'MAT0001' mtart = 'ROH' ].
CATCH cx_sy_itab_line_not_found.
" 何らかの処理
ENDTRY.
・新構文では以下のような形で内部テーブルに条件に合致するデータが存在するかどうかのチェックすることができます。
IF line_exists( 内部テーブル[ 項目1 = 値 項目2 = 値 …] ).
” 何らかの処理
ENDIF.
* 内部テーブルから条件指定してデータが存在するかチェック
READ TABLE it_mara INTO wa_mara
WITH KEY matnr = 'MAT0001'
mtart = 'ROH'.
* データが取得できた場合
IF sy-subrc = 0.
" 何らかの処理
ENDIF.
* 内部テーブルから条件指定してデータが存在するかチェックしデータ取得できた場合
IF line_exists( it_mara[ matnr = 'MAT0001' mtart = 'ROH' ] ).
" 何らかの処理
ENDIF.
・新構文では以下のような形で条件に合致する内部テーブルの行数を存在するか取得することができます。
変数(行数) = line_index( 内部テーブル[ 項目1 = 値 項目2 = 値 …] ).
* 内部テーブル条件指定
READ TABLE it_mara TRANSPORTING NO FIELDS
WITH KEY matnr = 'MAT0001'
mtart = 'ROH'.
* 内部テーブルから取得できた行数を格納
l_index = sy-tabix.
* 条件に合致する内部テーブルの行数を格納
l_index = line_index( it_mara[ matnr = 'MAT0001' mtart = 'ROH' ] ).
内部テーブルからのデータ取得に関するABAP7.4以降の新構文についての解説は以上じゃ。
まだ新構文はあるので、都度更新していくぞい!
新着のSAPフリーランス案件
【MM】
【PP】
製造業向けSAP PP領域の工場展開支援
【SD】
大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(SD)
【FI】
大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(FI)
【FI】
輸送用機器企業様向けS/4導入案件支援
【CO】
【FI】
S/4HANA Privateの導入支援(開発~単体テスト)
【PP】
生産領域(PP)でのテスト工程支援
【CO】
【FI】
ハードウエアリプレイスに伴うSAPシステム検証支援
【SD】
空調機メーカーS/4導入におけるFiori設計支援
【MM】
【PP】
電気機器メーカー向けSAPの運用保守支援
【MM】
【SD】
ERPシステム要件定義支援
SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!
SAPラボのライターの特徴
・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!
SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。
募集要項
・SAP導入や運用保守プロジェクトへの参画経験1年以上
ご応募/お問合せ先
info@sap-labo.com
少しでもご興味ある方、ぜひお気軽にご連絡下さい!