【SAP ABAP】ABAP7.4以降のS4HANAでの新構文(データ格納)

登場人物紹介

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

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!

この記事を読むメリット

  • ABAP7.4以降のデータ格納についての新構文を理解することができます。

ABAP7.4以降では変数(構造)や内部テーブルへのデータ格納方法に新構文が追加されました。
これまで面倒だった処理がスッキリ書けるようになっているのでぜひ覚えておきましょう!

博士

ここでは構造や内部テーブルへデータ格納する際の新構文を解説していくのじゃ!

・同じプログラム内で旧構文と新構文は同居可能です。

SAPフリーランスバンク SAPフリーランスバンク

新着のSAPフリーランス案件

【CO】

【FI】

製造業様SAP S/4 HANA導入検討支援(コンサルリード)

要スキル:
・会計領域におけるプロジェクト管理の実施 ・10名以上のメンバー管理の経験をお持ちであること ・エンドユーザとの調整を含めたマネジメントスキル ・SAP導入プロジェクトの経験
月額単価:
~1,250,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP新規導入における、プロジェクト管理支援 ・会計・生産領域(FI/CO/PS/PP/QM)におけるプロジェクト管理支援 ・ファシリテート ・領域タスク推進/進捗管理 ・個別課題整理・解決

【CO】

【FI】

【MM】

【PP】

【SD】

【その他】

建設コンサルタント企業向けSAP保守支援(チームリード)

要スキル:
・SAP関連のプロジェクトで複数モジュールでの経験があること 【尚可】 ・ロジから会計に連動するところの知見
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
複数モジュールにまたがった保守チームの管理を行っていただきます。 問い合わせや障害等のタスク管理や優先順位付けなどを顧客とやり取りしながら差配していくのが中心となります。

【CO】

【FI】

【MM】

【SD】

製造業会社向けSAP保守支援(会計もしくはロジ)

要スキル:
・会計もしくはロジ領域でのSAPプロジェクトの業務経験 ・ABAPでの開発経験
月額単価:
~950,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
問い合わせ対応や調査等の保守作業(会計/ロジ)

【MM】

【SD】

複数社に対するSAP運用保守とS/4へのVerUp対応支援

要スキル:
SAPロジ領域での保守や導入のプロジェクト経験
月額単価:
~1,300,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
20社前後に対するSAPの保守業務を担当頂きます。 (不具合調査、障害対応、機能追加・改修、法改正対応など) またS/4へのバージョンアップを控えているため、そちらも対応頂きます。

【CO】

【FI】

【MM】

【PP】

【SD】

光学機器製造会社向けSAP導入プロト支援

要スキル:
・SAPの構想策定フェーズからプロジェクトに参画したことがある経験 ・プロト機の設定などをおこなってきた経験
月額単価:
~1,800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・業務フローの整理と作成 ・プロト機の準備

【FI】

製造業会社向けS/4導入検討支援(会計リード)

要スキル:
・SAP導入プロジェクトの経験 ・会計領域におけるリード経験(10名以上目安) ・顧客折衝の経験
月額単価:
~1,250,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
海外テンプレート構築検討を進めており、会計チームでのリードを担当頂きます。 ・顧客に対する進捗報告 ・顧客からの相談窓口 ・チーム全体の、品質、進捗、コストの管理 ・領域横断課題の検討(チケット起票単位の整理等)

【SD】

SAP導入コンサル支援(SD)

要スキル:
・SAPプロジェクトにて要件定義経験5年以上 ・要件定義からカスタマイズの設定 ・SAP(SDモジュール)経験5年以上 ・コミュニケーション能力 【尚可】 ・リモート環境での作業経験
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
SAP導入コンサルポジションとして要件定義より参画予定となります。 ・要件定義の確認と課題対応 ・残課題の背景・内容を定義 ・SAPソリューションの検討・討議

【FI】

製造業向けS/4新規導入支援(FI-AP/AR)

要スキル:
SAP導入プロジェクトにおいてFI(AP/AR)コンサルタントとしての業務経験
月額単価:
~2,000,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
S/4新規導入PJのFIメ(AP/AR)メンバーとして参画頂きAP/AR領域について以下を担当頂きます。  -業務フロー作成  -プロトシナリオ作成  -プロト用パラメータ設定、プロト実施  -課題対応(SAP標準を使ったソリューション検討)  -議事録作成など

【FI】

SAP HANAバージョンアップにおける会計機能設計支援

要スキル:
・FI領域の要件定義書から基本設計を現行を参考に作成し、  後続作業も出来る方。 ・SAP標準機能と会計業務に関する知識 <尚可> FI-AA経験、TRM経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP FIコンサルまたはJrコンサル S/4HANAへバージョンアップに向け、会計領域の要件定義フェーズ作業 ・現行SAPの調査支援(標準機能の含む) ・ToBe詳細業務フロー作成支援 ・現行アドオン調査・整理 ・ToBeアドオンへの置き換え時の実現ポイント調査・整理

【FI】

自動車メーカー向けS4HANA導入支援(FI/CO)

要スキル:
・FIもしくはCOモジュールでの業務要件定義の経験(導入~)
月額単価:
~950,000円 / 月
稼働場所:
広島県
稼働率:
100%
作業内容:
S4導入要件定義フェーズにおいて以下の業務を行っていただきます。 ・要件定義 ・業務フロー作成 ・既存Add-On整理&再設計 ・財務関連コード定義
この記事のポイント

構造へのデータ格納

・新構文では以下のような形で構造にデータを格納することができます。

①構造がまだ定義されていない場合
DATA(構造) = VALUE データ型( 項目1 = 値 項目2 = 値 … ).

②構造が既に定義されている場合
構造 = VALUE #( 項目1 = 値 項目2 = 値 … ).

旧構文
* 構造定義
DATA:
  wa_data TYPE ty_data.

* 構造へデータ設定
wa_data-comp1 = 1.
wa_data-comp2 = 'name1'.
新構文①(構造が定義されていない場合)
* データ型定義
TYPES:
  BEGIN OF ty_data,
    comp1 TYPE i,
    comp2 TYPE string,
  END OF ty_data.

* 構造へデータ設定
DATA(wa_data) = VALUE ty_data( comp1 = 1 comp2 = 'name1' ).
新構文②(構造が既に定義されている場合)
* 構造へデータ設定
wa_data = VALUE #( comp1 = 1 comp2 = 'name1' ).

内部テーブルへのデータ格納

基本的な構文

・新構文では以下のような形で構造にデータを格納することができます。

①構造がまだ定義されていない場合
DATA(内部テーブル) = VALUE テーブル型( 項目1 = 値 項目2 = 値 … ).

②構造が既に定義されている場合
内部テーブル = VALUE #( 項目1 = 値 項目2 = 値 … ).
※既に内部テーブルに格納されていたものは削除され、指定したデータが格納されます

旧構文
* 内部テーブルへ格納(1レコード目)
CLEAR wa_data.
wa_data-comp1 = 1.
wa_data-comp2 = 'name1'.
APPEND wa_data TO it_data.

* 内部テーブルへ格納(2レコード目)
CLEAR wa_data.
wa_data-comp1 = 2.
wa_data-comp2 = 'name2'.
APPEND wa_data TO it_data.

* 内部テーブルへ格納(3レコード目)
CLEAR wa_data.
wa_data-comp1 = 3.
wa_data-comp2 = 'name3'.
APPEND wa_data TO it_data.
新構文①(内部テーブルが定義されていない場合)
* データ型定義
TYPES:
  BEGIN OF ty_data,
    comp1 TYPE i,
    comp2 TYPE string,
  END OF ty_data.

* テーブルタイプ定義
TYPES:
  tty_data TYPE TABLE OF ty_data WITH EMPTY KEY.

* 内部テーブルへ格納
DATA(it_data) = VALUE tty_data( ( comp1 = 1 comp2 = 'name1' )
                                ( comp1 = 2 comp2 = 'name2' )
                                ( comp1 = 3 comp2 = 'name3' ) ).
新構文②(内部テーブルが既に定義されてる場合)
* 内部テーブルへデータ格納
it_data = VALUE #( ( comp1 = 1 comp2 = 'name1' )
                   ( comp1 = 2 comp2 = 'name2' )
                   ( comp1 = 3 comp2 = 'name3' ) ).
博士

「comp1がすべて同じ値で格納したい!」という時は、以下のようにcomp1は1回だけ指定すればよいのじゃ!

新構文
* 内部テーブルへデータ格納
it_data = VALUE #( comp1 = 1 ( comp2 = 'name1' )
                             ( comp2 = 'name2' )
                             ( comp2 = 'name3' ) ).
博士

上記の新構文(内部テーブルが定義されていない場合)では注意点があるのじゃ。

既に内部テーブルに格納されていたら、それらは削除され上書きされてしまうのじゃ!

既存の内部テーブルデータを使いたい場合

博士

「内部テーブルを上書きせず追加したい!」という時は以下を参考にするのじゃ。

内部テーブルを上書きせずに追加したい場合は「BASE 内部テーブル」を使います。使用方法は以下を参照下さい。

新構文(内部テーブルにデータを追加する場合)
* 内部テーブルにデータ追加
it_data = VALUE #( BASE it_data
                   ( comp1 = 4 comp2 = 'name4' )
                   ( comp1 = 5 comp2 = 'name5' )
                   ( comp1 = 6 comp2 = 'name6' ) ).
博士

「既存の内部テーブルの内容を追加したい!」ということもあるじゃろう。
そんな時は以下を参考にするのじゃ!

内部テーブルを上書きせずに追加したい場合は「LINES OF 内部テーブル」を使います。使用方法は以下を参照下さい。

新構文(既存の内部テーブルレコードを他の内部テーブルへ追加する場合)
* 内部テーブル定義した際、既存の内部テーブル(it_data)のレコードを追加
DATA(it_data2) = VALUE tty_data( ( comp1 = 10 comp2 = 'name10' )
                                 ( LINES OF it_data ) ).

【参考】RANGEテーブル

博士

ABAPerであればRANGEテーブルを使用することは必ずあるじゃろう。
これまでの解説した内容を使えばできるのじゃが、念のため旧構文と新構文の書き方の違いの例を書いてみるのじゃ!

旧構文
* RANGEテーブルへ格納(1レコード目)
CLEAR wa_range.
wa_range-sign   = 'I'.
wa_range-option = 'EQ'.
wa_range-low    = 'name1'.
APPEND wa_range TO it_range.

* RANGEテーブルへ格納(2レコード目)
CLEAR wa_range.
wa_range-sign   = 'I'.
wa_range-option = 'EQ'.
wa_range-low    = 'name2'.
APPEND wa_range TO it_range.

* RANGEテーブルへ格納(3レコード目)
CLEAR wa_range.
wa_range-sign   = 'I'.
wa_range-option = 'EQ'.
wa_range-low    = 'name3'.
APPEND wa_range TO it_range.
新構文
* RANGEテーブルへ格納
it_range = VALUE #( sign = 'I' option = 'EQ' ( low = 'name1' )
                                             ( low = 'name2' )
                                             ( low = 'name3' ) ).

繰り返し処理で格納する構文

指定した終了条件まで繰り返し処理し格納

・新構文では以下の形で繰り返し処理を実施し内部テーブルにデータを格納することができます。

内部テーブル = VALUE #( FOR カウンター THEN カウンター演算 UNTIL 繰り返し処理を終了する条件 ( 項目1 = 値 項目2 = 値 … ) ).
※カウンターは暗黙的に定義されるため事前の定義は不要です。

旧構文
* 内部テーブルに10レコード分格納
DO 10 TIMES.
  l_cnt = l_cnt + 1.
  CLEAR wa_data.
  wa_data-comp1 = l_cnt.
  wa_data-comp2 = 'name' && l_cnt.
  APPEND wa_data TO it_data.
ENDDO.
新構文
* 内部テーブルに10レコード分格納
it_data = VALUE #( FOR l_cnt_temp = 1 THEN l_cnt_temp + 1 UNTIL l_cnt_temp > 10
                   ( comp1 = l_cnt_temp comp2 = 'name' && l_cnt ) ).

条件に合う内部テーブルのレコードを繰り返し読み込んで格納

・新構文では以下の形で、ある内部テーブルの条件を指定しそれに合う条件のレコード内容を別の内部テーブルにデータを格納することができます。

内部テーブル = VALUE #( FOR 構造 IN 内部テーブル WHERE ( 条件 ) ( 項目1 = 値 項目2 = 値 … ) ).

旧構文
* 内部テーブルのcomp1が4より大きい際にRANGEテーブルを作成
LOOP AT it_data INTO wa_data WHERE comp1 > 4.
  wa_range-sign   = 'I'.
  wa_range-option = 'EQ'.
  wa_range-low    = wa_data-comp2.
  APPEND wa_range TO it_range.
  CLEAR:
    wa_data.
ENDLOOP.
新構文
* 内部テーブルのcomp1が4より大きい際にRANGEテーブルを作成
it_range = VALUE #( FOR wa_data_temp IN it_data
                    WHERE ( comp1 > 4 )
                  ( sign   = 'I'
                    option = 'EQ'
                    low    = wa_data_temp-comp2 ) ).
博士

項目が一つであれば( 項目1 = 値 項目2 = 値 … )の部分は省略できるのじゃ!

旧構文
* 内部テーブルから条件指定し、他の内部テーブルへ格納
REFRESH it_name.
LOOP AT it_data INTO wa_data WHERE comp1 > 3.
  APPEND wa_data-comp2 TO it_name.
ENDLOOP.
新構文
* 内部テーブルから条件指定し、他の内部テーブルへ格納
it_name = VALUE #( FOR wa_data_temp IN it_data
                   WHERE ( comp1 > 3 )
                         ( wa_data_temp-comp2 ) ).
博士

構造や内部テーブルからのデータ格納に関するABAP7.4以降の新構文についての解説は以上じゃ。
まだ新構文はあるので、都度更新していくぞい!

新着のSAPフリーランス案件

【CO】

【FI】

製造業様SAP S/4 HANA導入検討支援(コンサルリード)

要スキル:
・会計領域におけるプロジェクト管理の実施 ・10名以上のメンバー管理の経験をお持ちであること ・エンドユーザとの調整を含めたマネジメントスキル ・SAP導入プロジェクトの経験
月額単価:
~1,250,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP新規導入における、プロジェクト管理支援 ・会計・生産領域(FI/CO/PS/PP/QM)におけるプロジェクト管理支援 ・ファシリテート ・領域タスク推進/進捗管理 ・個別課題整理・解決

【CO】

【FI】

【MM】

【PP】

【SD】

【その他】

建設コンサルタント企業向けSAP保守支援(チームリード)

要スキル:
・SAP関連のプロジェクトで複数モジュールでの経験があること 【尚可】 ・ロジから会計に連動するところの知見
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
複数モジュールにまたがった保守チームの管理を行っていただきます。 問い合わせや障害等のタスク管理や優先順位付けなどを顧客とやり取りしながら差配していくのが中心となります。

【CO】

【FI】

【MM】

【SD】

製造業会社向けSAP保守支援(会計もしくはロジ)

要スキル:
・会計もしくはロジ領域でのSAPプロジェクトの業務経験 ・ABAPでの開発経験
月額単価:
~950,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
問い合わせ対応や調査等の保守作業(会計/ロジ)

【MM】

【SD】

複数社に対するSAP運用保守とS/4へのVerUp対応支援

要スキル:
SAPロジ領域での保守や導入のプロジェクト経験
月額単価:
~1,300,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
20社前後に対するSAPの保守業務を担当頂きます。 (不具合調査、障害対応、機能追加・改修、法改正対応など) またS/4へのバージョンアップを控えているため、そちらも対応頂きます。

【CO】

【FI】

【MM】

【PP】

【SD】

光学機器製造会社向けSAP導入プロト支援

要スキル:
・SAPの構想策定フェーズからプロジェクトに参画したことがある経験 ・プロト機の設定などをおこなってきた経験
月額単価:
~1,800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・業務フローの整理と作成 ・プロト機の準備

【FI】

製造業会社向けS/4導入検討支援(会計リード)

要スキル:
・SAP導入プロジェクトの経験 ・会計領域におけるリード経験(10名以上目安) ・顧客折衝の経験
月額単価:
~1,250,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
海外テンプレート構築検討を進めており、会計チームでのリードを担当頂きます。 ・顧客に対する進捗報告 ・顧客からの相談窓口 ・チーム全体の、品質、進捗、コストの管理 ・領域横断課題の検討(チケット起票単位の整理等)

【SD】

SAP導入コンサル支援(SD)

要スキル:
・SAPプロジェクトにて要件定義経験5年以上 ・要件定義からカスタマイズの設定 ・SAP(SDモジュール)経験5年以上 ・コミュニケーション能力 【尚可】 ・リモート環境での作業経験
月額単価:
~1,300,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
SAP導入コンサルポジションとして要件定義より参画予定となります。 ・要件定義の確認と課題対応 ・残課題の背景・内容を定義 ・SAPソリューションの検討・討議

【FI】

製造業向けS/4新規導入支援(FI-AP/AR)

要スキル:
SAP導入プロジェクトにおいてFI(AP/AR)コンサルタントとしての業務経験
月額単価:
~2,000,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
S/4新規導入PJのFIメ(AP/AR)メンバーとして参画頂きAP/AR領域について以下を担当頂きます。  -業務フロー作成  -プロトシナリオ作成  -プロト用パラメータ設定、プロト実施  -課題対応(SAP標準を使ったソリューション検討)  -議事録作成など

【FI】

SAP HANAバージョンアップにおける会計機能設計支援

要スキル:
・FI領域の要件定義書から基本設計を現行を参考に作成し、  後続作業も出来る方。 ・SAP標準機能と会計業務に関する知識 <尚可> FI-AA経験、TRM経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP FIコンサルまたはJrコンサル S/4HANAへバージョンアップに向け、会計領域の要件定義フェーズ作業 ・現行SAPの調査支援(標準機能の含む) ・ToBe詳細業務フロー作成支援 ・現行アドオン調査・整理 ・ToBeアドオンへの置き換え時の実現ポイント調査・整理

【FI】

自動車メーカー向けS4HANA導入支援(FI/CO)

要スキル:
・FIもしくはCOモジュールでの業務要件定義の経験(導入~)
月額単価:
~950,000円 / 月
稼働場所:
広島県
稼働率:
100%
作業内容:
S4導入要件定義フェーズにおいて以下の業務を行っていただきます。 ・要件定義 ・業務フロー作成 ・既存Add-On整理&再設計 ・財務関連コード定義

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

株式会社Luxy(https://luxy-inc.com/company_info/)と株式会社アガルートITパートナーズ(https://agaroot-itp.com/about/)の代表取締役。

新卒でSAPエンジニアとして働き始める。副業で事業を開始したのち、2015年に独立しシステム開発会社を設立。SAPの案件に従事しつつシステム開発事業を成長させ、2021年に会社をバイアウト。その後も創業会社とグループ会社で代表を兼任。
SAPエンジニア・コンサルタント歴は10年以上。

一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!

この記事のポイント