PR

【SAPメモリ】SET/GET PARAMETER IDを3分でわかりやすく解説

ABAP

SET PARAMETER IDGET PARAMETER ID 命令は、画面間のデータを受け渡すための一般的な方法の1つ。これら2つの命令は、画面間でデータを保持する一時的な領域(SAPメモリ)にデータを格納するために使用されます。

" SET
SET PARAMETER ID '<parameter_id>' FIELD <data>.

" GET
GET PARAMETER ID '<parameter_id>' FIELD <data>.

このページでは、SAPメモリとは何か?SET/GET PARAMETER IDの使い方をSAP/ABAP初心者向けにサンプルコード付きでわかりやすくご説明します。

このページで学べる内容
  • SAPメモリとは?
  • SET PARAMETER ID の使い方
  • GET PARAMETER ID の使い方

SAPエンジニアやABAPerを目指す方であれば知らないと恥ずかしい基本知識ですので、是非最後までご覧ください。

参考 ABAPの基本構文ルール

スポンサーリンク

SAPメモリとは

ABAPの SET PARAMETER IDGET PARAMETER ID コマンドで使用する一時的な領域(SAPメモリ)は、その名の通り「SAPのメモリ領域」で、特定のデータを一時的に格納して、それを他のプログラムやトランザクションからアクセスできるようにするための場所です。

SAPメモリの基本、その特徴を以下にまとめます。

  1. セッション間での共有:SAPメモリは全ての内部セッションで共有されます。つまり、あるプログラムが SET PARAMETER ID を使用してSAPメモリにデータを設定した場合、その後のプログラムが GET PARAMETER ID を使用してそのデータを取得することが可能。
  2. 寿命:SAPメモリはSAPセッション(ログオンセッション)の寿命に連動。つまり、ユーザーがログオンしている間はデータが保持され、ユーザーがログオフするとデータは消去される。
  3. 限定的な容量:SAPメモリはリソースに対する制限があるため、大量のデータを格納するのには適していない。
  4. 汎用性:SAPメモリは、非常に広範な用途に使用され、あらゆる種類の情報(例えば、ユーザーID、選択したレコードのキー、他の画面から渡された情報など)を一時的に保存するために使用される。

SET PARAMETER IDGET PARAMETER ID を使用することで、必要なデータをSAPメモリに格納し、同じセッション内の異なるプログラムやトランザクションからそれを取得することが可能になります。

以下に SET PARAMETER IDGET PARAMETER ID を使用するいくつかの典型的なシナリオを挙げてみます。

シナリオ例説明
顧客マスタの画面間でのデータ受け渡し顧客マスタデータの一部(例えば、顧客ID)を取得し、SET PARAMETER ID を使用してSAPメモリに格納。次に別の画面で GET PARAMETER ID を使用してそのデータを取り出し、新しい画面で使用する。
ユーザー情報の画面間でのデータ受け渡しユーザーが特定のフィールドに入力した値を SET PARAMETER ID を使用してSAPメモリに格納。別の画面で GET PARAMETER ID を使用してそのデータを取り出し、新しい画面でその値を使用する。
トランザクション間のデータ受け渡しあるトランザクションで取得した特定のデータ(例えば、注文番号)を SET PARAMETER ID を使用してSAPメモリに格納。別のトランケーションで GET PARAMETER ID を使用してそのデータを取り出し、新しいトランザクションでそのデータを使用する。
レポート/プログラム間でのデータ受け渡しレポートまたはプログラムの一部で取得した特定のデータ(例えば、選択した行のキー)を SET PARAMETER ID を使用してSAPメモリに格納。次に、別のレポートまたはプログラムで GET PARAMETER ID を使用してそのデータを取り出し、新しいレポート/プログラムでそのデータを使用する。

以上がSAPメモリを利用する簡単な例です。他にも様々な場面で利用することが可能で、要件に応じた適切な設計が重要になります。

SAPメモリが何なのか?が何となくわかったところで、実際にSET/GET PARAMTER IDを利用する方法を学習していきましょう。

ABAP:SET PARAMETER ID

SET PARAMETER ID は、SAPメモリにデータを格納するために使用されます。

構文ルール

SET PARAMETER ID '<parameter_id>' FIELD <data>.

" <parameter_id>: 使用するパラメータ ID。これは通常、SAP によって定義されている。
" <data>: 一時的な領域に格納したいデータ。

SET PARAMETER ID の一般的な使用例としては、例えばユーザーが入力した顧客番号をメモリに格納し、その顧客の詳細画面を開く際にそれを再利用するというケースが考えられます。

以下のコードはその一例で、まずユーザーに顧客番号を入力させ、それをSAPメモリに保存。続いて CALL TRANSACTION を使用して顧客マスタの表示(XD03)トランザクションを呼び出します。XD03 トランザクションは顧客番号をパラメータ ID 'KUN' で取得するため、先に保存した値が自動的に使用されます。

DATA: lv_kunnr TYPE kunnr.

PARAMETERS: p_kunnr TYPE kunnr OBLIGATORY.

START-OF-SELECTION.

  lv_kunnr = p_kunnr.
  SET PARAMETER ID 'KUN' FIELD lv_kunnr.

  CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.

参考 DATA / PARAMETERS / START-OF-SELECTION

↑のコードでは、まず lv_kunnr にユーザーが入力した値(p_kunnr)を格納し、その後、SET PARAMETER ID を使用してこの値をSAPメモリに保存しています。

ABAP:GET PARAMETER ID

GET PARAMETER ID は、SAPメモリからデータを取り出すために使用されます。

構文ルール

GET PARAMETER ID '<parameter_id>' FIELD <data>.

" <parameter_id>: データを取得するパラメータ ID
" <data>: データを取り出す変数

以下に、GET PARAMETER ID を使用した一例を示します。この例では、前のトランザクションまたはプログラムで SET PARAMETER ID を使用して設定された顧客番号を取得します。

DATA: lv_kunnr TYPE kunnr.

START-OF-SELECTION.

  GET PARAMETER ID 'KUN' FIELD lv_kunnr.

  IF lv_kunnr IS INITIAL.
    WRITE: / 'No customer number found'.
  ELSE.
    WRITE: / 'The customer number is', lv_kunnr.
  ENDIF.

参考 IF文 / WRITE命令

↑のコードでは、GET PARAMETER ID を使用してパラメータ ID 'KUN' から顧客番号を取得。それを変数 lv_kunnr に格納します。このパラメータ ID 'KUN' は、以前のトランザクションまたはプログラムで SET PARAMETER ID を使用して設定されたものです。

このように、GET PARAMETER ID を使用することで、あるトランザクションまたはプログラムで設定されたデータを他のトランザクションまたはプログラムで取得できます。これにより、異なるトランザクション間で一貫性を保つことが可能になります。

SET/GET PARAMETER ID を利用する際の注意点

最後に、SAPメモリを利用する際の注意点について解説しておきます。

注意点1 パラメータ ID

パラメータ ID は固有のキーで設定した値を取得する際に必要となります。このキーは通常、トランザクションコードデータベーステーブルのフィールド名に基づいています。同じパラメータ ID を使用して異なるデータを設定すると、以前のデータは上書きされます。

注意点2 データの種類

SET PARAMETER IDGET PARAMETER ID は、文字列型のデータを保存するために使用されます。これらの命令を使用して複雑なデータ構造(例えば、内部テーブルや構造体)を直接保存することはできません。

注意点3 エラーハンドリング

GET PARAMETER ID を使用してデータを取得する際、該当のパラメータ ID でデータが設定されていない場合、エラーではなく初期値が返されます。したがって、データを取得した後は、それが初期値でないことを確認するためのチェックが必要となります。

以上の点に注意して、SAPメモリを適切に利用できるようになりましょう。

SAPメモリ:SET/GET PARAMTER ID のまとめ

SAPメモリ

  • SAPメモリはSAPシステム内でのユーザーセッション間のデータ共有を可能にする一時的なメモリ領域。
  • 一度ログオフすると、SAPメモリのデータはクリアされる。
  • 1つのトランザクションやプログラムから別のトランザクションやプログラムへデータを渡すために使用する。

SET/GET PARAMETER ID の基本

DATA: lv_kunnr TYPE kunnr.

lv_kunnr = '0001234567'.
SET PARAMETER ID 'KUN' FIELD lv_kunnr.

...

DATA: lv_kunnr_get TYPE kunnr.
GET PARAMETER ID 'KUN' FIELD lv_kunnr_get.

WRITE: / 'The customer number is', lv_kunnr_get.

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました