ABAPプログラムのメモリ構造
0 643

このトピックでは、ABAPプログラム実行時のメモリ構造を取り上げて説明します。 

サーバへログインすると、ユーザに1つの「ユーザセッション」が開かれます。 ユーザが同時に最大6つのウィンドウを開くとができます。これらのウィンドウはそれぞれ、アプリケーションサーバ上で共有メモリの専用領域を使用する「メインセッション」に対応しています。

メインセッションで起動した最初のアプリケーションプログラムによって、メインセッション内の内部セッションが開きます.

上記の図で示した通り、プリケーションプログラム(TYPE 1、TYPE M)が呼び出されるたびに、新しい内部セッションが作成されます。その他プログラムは新しい内部セッションを作成することがなく、必ず呼び出し元のアプリケーションプログラムの内部セッションで動作します。

ABAPプログラムの間にデータを共有できるメモリは、SAPメモリとABAPメモリの2種類がありまして、それぞれスコープが異なります。

  • SAPメモリ
    同じユーザセッション内にすべて可視です。別々のメインセッションで起動された各プログラムは同じSAPメモリを共有できます。
  • ABAPメモリ
    同じメインセッション内なら可視です。同じメインセッションで動作する各プログラムは同じABAPメモリを共有しています。

0 643
みんなのツイート (0)

関連サマリー


  • ABAP開発 0 Votes 538 閲覧数


    このトピックでは、ABAP開発の構造化手法を取り上げて説明します。構造化手法はモジュール化とも呼ばれます。

     概要

    ABAPプログラムの処理ロジックは処理ブロックで構成されます。

    処理ブロックには、ABAP 実行システムによって外部プログラムから呼び出される処理ブロックと、ABAPプログラムの ABAP 命令による呼出が可能な処理ブロックの2種類があります。

    ABAP命令による呼出が可能な処理ブロックは、プロシージャと呼ばれます。

    カテゴリ処理ブロック呼出元ローカルデータ領域画面制御ダイアログモジュールPBO、PAI
    (個別画面)無イベントブロックPBO、PAI
    (標準の選択、一覧画面)無プロシージャサブルーチン 有汎用モジュール 有メソッド 有

    処理ブロックは分離不可能な構文的モジュール化単位であり、他の処理ブロックを含むことはできません。

    ダイアログモジュール

    ダイアログモジュールは、画面の初期表示時やユーザがなんらかのアクションを起こした後に、ABAP実行環境(ダイアログプロセッサ) から、Dynno制御ロジックのPAI、PBOを通して、呼び出されます。

    ダイアログモジュールは MODULE 命令によって導入され、ENDMODULE 命令によって終了します。

    以下の図でダイアログモジュールの呼出イメージを示します。

    ここのダイアログモジュールはcall dialogで呼ばれている「ダイアログモジュール」とは別物です。

    call dialogで呼ばれている「ダイアログモジュール」はアプリケーションプログラムを通常の「Transaction」ではなく、呼出元のプログラムのSAP LUWの中に動く「dilalog」として呼び出すための名称というものです。

    以下の図でダイアログモジュールの実装イメージを示します。

    イベントブロック

    イベントブロックはTYPE 1(実行可能プログラム)の選択画面や一覧画面から呼び出される処理ブロックです。

    サブルーチン

    サブルーチンは、主としてローカルなモジュール化で使用されます。一般に、サブルーチンは、そのサブルーチンが定義されているプログラムから呼び出されます。サブルーチンを使用して、プログラム内で繰り返し使用する機能を記述することができます。

    サブルーチンは 全てのABAPプログラムで定義することができます。

    汎用モジュール

    汎用モジュールは、グローバルなモジュール化で使用され、常に別のログラムから呼び出されます。

    汎用モジュールは汎用グループで定義する必要があり、任意のプログラムから呼び出すことができます。

    汎用モジュールにより、データ交換の固定インタフェースが処理されます。たとえば、入力パラメータにデフォルトの値を割り当てることができます。また、このインタフェースでは例外処理もサポートしています。これによって、エラーを検出し、そのエラーを対処するため呼び出し元プログラムに返し、処理させることができます。

    汎用モジュールは独自のメモリ領域を使用します。呼び出し元プログラムと汎用モジュールとが、共有メモリ領域を使ってデータ交換を行うことはできません。汎用モジュールインタフェースを使用しなければなりません。


  • ABAP開発 0 Votes 413 閲覧数


    このトピックでは、プログラムの実行方法を取り上げて説明します。

    ユーザからトランザクションコード指定

    レポートプログラムにトランザクションコードを割り当てておけば、トランザクションコード指定により、レポートを実行することができます。 レポートプログラムに割り当てられたトランザクションは、レポートトランザクションと呼ばれます。

    トランザクションの確認SE93を実行
    MIR5を入力、照会ボタンを押下
    トランザクションの実行MIR5を入力
    Enterキーを押下
    プログラム名指定

    SE38でプログラム名を指定してプログラムを実行することができます。

    プログラムから

    プログラミングからは、submit命令を利用すれば、別のレポートプログラムを起動することができます。


  • ABAP開発 0 Votes 590 閲覧数


    SAPが標準で用意した各モジュールやアドオンとして開発された各アプリケーションは、すべてSAPのプログラムとして、アプリケーションサーバのワークプロセスに対して、 アプリケーションサーバ内で実行されます。

    ABAPプログラムには以下のプログラムタイプがあります。

    TYPE 1: 実行可能プログラムTYPE M: モジュールプールTYPE F: 汎用グループTYPE K: クラスプールTYPE J: インタフェースプールTYPE S: サブルーチンプールTYPE T: タイププールTYPE I: インクルードプログラム

    WebDynproは、処理ロジックを記述するにクラスプールとインタフェースプールを利用してるため、 新たなプログラムタイプの追加はありません。

    ABAPプログラムの概説は、以下のリンクからご参考くださ。

    ABAPプログラム - NwABAP@InsideKb


  • ABAP開発 0 Votes 471 閲覧数


    このトピックでは、ABAPプログラムの構成を取り上げて説明します。


    プログラムの構成

    大きく分けるとABAPプログラムは、処理ロジックと各画面コンポーネントから構成されます。GUIをもっていないプログラムは、処理ロジックのみとなります。

    SAPのドキュメントでは、処理ロジックのみをABAPプログラムと呼ぶことも多く見受けられます。

    画面を持つABAPプログラムの構造を以下の図で示します。

    処理ロジック

    以下の図ではABAPプログラムの処理ロジックの構造を示します。

    プログラム導入部
    独立した ABAPプログラムは常に導入命令から始まります。導入命令はプログラムのタイプによって異なります。グローバル宣言部
    すべての ABAP プログラムにおいて、プログラム導入部の後ろにグローバルデータ、クラス、および選択画面のための宣言部が続きますグローバルデータ、クラス、選択画面のための宣言部処理ブロック
    プログラムのソースコード内のグローバル宣言部の下には、任意の順序で ABAP プログラムの処理ブロックを列挙することができます.
    以下の下のタイプの処理ブロックが利用可能です。
    ●ダイアログモジュール (ローカルデータ領域なし)
    ●イベントブロック (ローカルデータ領域なし、2 つの例外あり)
    ●プロシージャ (メソッド、サブルーチン、汎用モジュール。独自のローカルデータ領域を使用)画面コンポーネント

    画面を構成するコンポーネントはいかのようなものがあります。

    DynproGUIステータスGUI表題メッセージWebDynpro

    それぞれ独立したオブジェクトとして存在します。


  • ABAP開発 0 Votes 667 閲覧数


    このトピックでは、ABAP開発のオブジェクト指向要素を取り上げて説明します。

     オブジェクト指向とは

    プログラミングにおけるオブジェクト指向とは、いかのようなコンセプトでプログラムを構築する手法で。

    プログラムをオブジェクトに分割して、オブジェクト間のコラボレーションによりアプリケーション機能を実現オブジェクトはデータを内蔵しており、それをアクセスできる属性やメソッドをインタフェースとして外部に提供オブジェクトは継承することにより、汎用化することができるクラスとインタフェース

    クラスとはデータとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したものです。 クラスはインスタンス化することができます。

    インタフェースとは、クラスのアクセスインタフェースを明確に定義したものです。 インタフェースからインスタンスを作成することができません。

    クラスの種類

    クラスは、ローカルクラスとグローバルクラスの2種類があります。

    ローカルクラス
    ローカルクラスは、レポートプログラムやダイアログプログラムなど、個別プログラムの内部で実装されるクラスです。
    ローカルクラスは外部のプログラムに不可視です。グローバルクラス
    グローバルクラスのソースコードはクラスビルダを使って記述し、システム全体のクラスライブラリに格納されます。
    グローバルクラスはどのプログラムからも使うことができます。

    ローカルクラスとグローバルクラスはスコープが異なりますが、その以外の違いはとくにありません。

    属性

    属性は、オブジェクトに関連付けられているデータに対するインタフェースです。 属性はクラスのインスタンスに作用するインスタンス属性と、クラスそのものに作用する静的属性があります。

    メソッド

    メソッドは、クラスに関連付けられているサブルーチンです。大半のメソッドは、クラスのインスタンスに作用します。中には、クラスそのものに作用するメソッドもあります、これは静的メソッドと呼ばれます。

    クラスのインスタンス化

    クラスをインスタンス化するには、CREATE OBJECT命令を使用します。