三崎レイナ
社会人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フリーランス案件
【FI】
S/4HANAへのバージョンアップ支援(Jrコンサル可)
【PP】
メーカー向けSAP移行プロジェクト支援
【MM】
【SD】
製造業向けロジ領域の運用保守支援
【BASIS】
【MM】
【SD】
製造業向け運用保守支援支援
【CO】
【FI】
【MM】
【PP】
【SD】
大手メーカー社向けSAP導入支援
【FI】
商社向け基幹システムバージョン支援
【FI】
SAP運用業務支援
【FI】
SAP導入プロジェクト支援
【FI】
光学機器 S/4HANA導入テスト支援
【CO】
一般消費財メーカーS/4 HANAバージョンアップ
・新構文では以下のような形で内部テーブルから指定した行を構造に格納できます。
構造 = 内部テーブル[ 指定行数 ].
・ただし新構文でデータ取得できない場合は例外(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フリーランス案件
【FI】
S/4HANAへのバージョンアップ支援(Jrコンサル可)
【PP】
メーカー向けSAP移行プロジェクト支援
【MM】
【SD】
製造業向けロジ領域の運用保守支援
【BASIS】
【MM】
【SD】
製造業向け運用保守支援支援
【CO】
【FI】
【MM】
【PP】
【SD】
大手メーカー社向けSAP導入支援
【FI】
商社向け基幹システムバージョン支援
【FI】
SAP運用業務支援
【FI】
SAP導入プロジェクト支援
【FI】
光学機器 S/4HANA導入テスト支援
【CO】
一般消費財メーカーS/4 HANAバージョンアップ
SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!
SAPラボのライターの特徴
・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!
SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。
募集要項
・SAP導入や運用保守プロジェクトへの参画経験1年以上
ご応募/お問合せ先
info@sap-labo.com
少しでもご興味ある方、ぜひお気軽にご連絡下さい!
株式会社Luxy(https://luxy-inc.com/company_info/)と株式会社アガルートITパートナーズ(https://agaroot-itp.com/about/)の代表取締役。
新卒でSAPエンジニアとして働き始める。副業で事業を開始したのち、2015年に独立しシステム開発会社を設立。SAPの案件に従事しつつシステム開発事業を成長させ、2021年に会社をバイアウト。その後も創業会社とグループ会社で代表を兼任。
SAPエンジニア・コンサルタント歴は10年以上。
一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!