峯このトピックでは、SAP標準で用意された採番システムの使用方法を取り上げて説明します。採番処理のために共通的な仕組みを提供します。格納テーブルNRIV番号範囲間隔メンテナンスSNRO番号範囲オブジェクトSM56番号範囲バッファの管理汎用モジュール下記の汎用モジュールを使用できます。峯このトピックでは、ツールバー関連のプログラミングを取り上げて説明します。押ボタンが有効化されます。間にある値を入力しなければなりません。フェース作業領域を宣言しなければなりません。タン上に表示されます。ボタンにテキストは表示されません。サンプルSAP標準のMIR5請求書一覧照会トランザクションのエキスパートモード機能の実装を例として解説します。峯ALV出力時の項目カテゴリ制御は主に以下三つの方法があります。自動生成マニュアル生成半自動生成このトピックでは、各方法をそれぞれ取り上げて説明します。出力テーブルの構造がデータディクショナリに定義されている場合、汎用モジュールを呼び出す際に入力パラメータI_STRUCTURE_NAMEで構造体の名前を指定することにより、項目カテゴリは内部に自動的に生成されることになります。ここで注意すべきのは、出力テーブルは必ず該当構造体を使って定義しなけれなりません。ない場合、なかみが同じでも、実行時ランタイムエラーが発生します。16をこのやり方で見直す場合、ABAPディクショナリに該当構造体を定義しておけば、以下のようにソースプログラムがすごくシンプルになります。よって項目カタログが定義されています。項目カタログテーブルの各行には、出力テーブルの項目が記述されています。項目カタログのマニュアル生成は、上記のテーブルを作成して、汎用モジュールを呼び出す際に入力パラメータIT_FIELDCATとして受け渡します。カタログの半自動生成は、ABAPディクショナリーの構造体から項目カタログを自動生成する自動生成された項目カタログに対してマニュアル修正を加えるというプロセスになります。ABAPディクショナリーの構造体から項目カタログを自動生成するには、汎用モジュールLVC_FIELDCATALOG_MERGEを使用します。峯このトピックでは、BTEの検索方法を取り上げて説明します。検索機能利用BTEを検索するには、SAP標準から以下のトランザクションが用意されています。上記のトランザクションはトランザクションコードを直接入力するほか、FIBFの「環境」メニューからも起動することができます。TASKコマンドで更新プロセスを利用しなければならないことが分かります。上記の文書から該当BTEが呼び出されるときに伝票番号がまだ採番されていないことが分かります。プログラム内一括検索BTEを呼び出すには、必ず「OPEN_FI_PERFORM_~」という名前の汎用モジュールを使用しているため、OPEN_FI_PERFORMというキーワードで、標準プログラムのソースを一括検索すれば、該当標準プログラムからどんなBTEを呼び出しているかが分かります。OpenFIという呼び方はここから由来しているものと見受けられます。Intefaceを示しております。会計伝票を転記するプログラムSAPMF05Aを例として、プログラム内の一括検索方法を示します。該当先一覧が表示されるOPEN_FI_PERFORMBTEは当初FIモジュールの業務拡張方法として導入されて、その後別のもじゅーるにも利用できるような汎用的な拡張方法に変わったため、FI以外のモジュールでBTEを呼び出す汎用モジュールも同じく「OPEN_FI_PERFORM_~」のような名前を付けております。以下の図はSDモジュールの受注処理プログラムの例です。アプリケーションサーバ内で実行されます。ABAPプログラムには以下のプログラムタイプがあります。新たなプログラムタイプの追加はありません。ABAPプログラムの概説は、以下のリンクからご参考くださ。閲覧数このトピックでは、ABAPプログラムの構成を取り上げて説明します。大きく分けるとABAPプログラムは、処理ロジックと各画面コンポーネントから構成されます。GUIをもっていないプログラムは、処理ロジックのみとなります。SAPのドキュメントでは、処理ロジックのみをABAPプログラムと呼ぶことも多く見受けられます。画面を持つABAPプログラムの構造を以下の図で示します。処理ロジック以下の図ではABAPプログラムの処理ロジックの構造を示します。ABAPプログラムは常に導入命令から始まります。導入命令はプログラムのタイプによって異なります。プログラムの処理ブロックを列挙することができます.以下の下のタイプの処理ブロックが利用可能です。(メソッド、サブルーチン、汎用モジュール。独自のローカルデータ領域を使用)画面コンポーネント画面を構成するコンポーネントはいかのようなものがあります。DynproGUIステータスGUI表題メッセージWebDynproそれぞれ独立したオブジェクトとして存在します。閲覧数このトピックでは、ABAPプログラム実行時のメモリ構造を取り上げて説明します。メインセッションサーバへログインすると、ユーザに1つの「ユーザセッション」が開かれます。ユーザが同時に最大6つのウィンドウを開くとができます。これらのウィンドウはそれぞれ、アプリケーションサーバ上で共有メモリの専用領域を使用する「メインセッション」に対応しています。M)が呼び出されるたびに、新しい内部セッションが作成されます。その他プログラムは新しい内部セッションを作成することがなく、必ず呼び出し元のアプリケーションプログラムの内部セッションで動作します。共有メモリABAPプログラムの間にデータを共有できるメモリは、SAPメモリとABAPメモリの2種類がありまして、それぞれスコープが異なります。SAPメモリ同じユーザセッション内にすべて可視です。別々のメインセッションで起動された各プログラムは同じSAPメモリを共有できます。ABAPメモリ同じメインセッション内なら可視です。同じメインセッションで動作する各プログラムは同じABAPメモリを共有しています。閲覧数このトピックでは、ABAP開発の構造化手法を取り上げて説明します。構造化手法はモジュール化とも呼ばれます。概要ABAPプログラムの処理ロジックは処理ブロックで構成されます。命令による呼出が可能な処理ブロックの2種類があります。ABAP命令による呼出が可能な処理ブロックは、プロシージャと呼ばれます。処理ブロックは分離不可能な構文的モジュール化単位であり、他の処理ブロックを含むことはできません。Dynno制御ロジックのPAI、PBOを通して、呼び出されます。命令によって終了します。以下の図でダイアログモジュールの呼出イメージを示します。dialogで呼ばれている「ダイアログモジュール」とは別物です。LUWの中に動く「dilalog」として呼び出すための名称というものです。以下の図でダイアログモジュールの実装イメージを示します。1(実行可能プログラム)の選択画面や一覧画面から呼び出される処理ブロックです。サブルーチンサブルーチンは、主としてローカルなモジュール化で使用されます。一般に、サブルーチンは、そのサブルーチンが定義されているプログラムから呼び出されます。サブルーチンを使用して、プログラム内で繰り返し使用する機能を記述することができます。全てのABAPプログラムで定義することができます。汎用モジュール汎用モジュールは、グローバルなモジュール化で使用され、常に別のログラムから呼び出されます。汎用モジュールは汎用グループで定義する必要があり、任意のプログラムから呼び出すことができます。汎用モジュールにより、データ交換の固定インタフェースが処理されます。入力パラメータにデフォルトの値を割り当てることができます。このインタフェースでは例外処理もサポートしています。これによって、エラーを検出し、そのエラーを対処するため呼び出し元プログラムに返し、処理させることができます。汎用モジュールは独自のメモリ領域を使用します。呼び出し元プログラムと汎用モジュールとが、共有メモリ領域を使ってデータ交換を行うことはできません。汎用モジュールインタフェースを使用しなければなりません。閲覧数このトピックでは、ABAP開発のオブジェクト指向要素を取り上げて説明します。オブジェクト指向とはプログラミングにおけるオブジェクト指向とは、いかのようなコンセプトでプログラムを構築する手法で。プログラムをオブジェクトに分割して、オブジェクト間のコラボレーションによりアプリケーション機能を実現オブジェクトはデータを内蔵しており、それをアクセスできる属性やメソッドをインタフェースとして外部に提供オブジェクトは継承することにより、汎用化することができるクラスとインタフェースクラスとはデータとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したものです。クラスはインスタンス化することができます。インタフェースとは、クラスのアクセスインタフェースを明確に定義したものです。インタフェースからインスタンスを作成することができません。クラスの種類クラスは、ローカルクラスとグローバルクラスの2種類があります。ローカルクラスローカルクラスは、レポートプログラムやダイアログプログラムなど、個別プログラムの内部で実装されるクラスです。ローカルクラスは外部のプログラムに不可視です。グローバルクラスグローバルクラスのソースコードはクラスビルダを使って記述し、システム全体のクラスライブラリに格納されます。グローバルクラスはどのプログラムからも使うことができます。ローカルクラスとグローバルクラスはスコープが異なりますが、その以外の違いはとくにありません。属性は、オブジェクトに関連付けられているデータに対するインタフェースです。属性はクラスのインスタンスに作用するインスタンス属性と、クラスそのものに作用する静的属性があります。メソッドメソッドは、クラスに関連付けられているサブルーチンです。大半のメソッドは、クラスのインスタンスに作用します。中には、クラスそのものに作用するメソッドもあります、これは静的メソッドと呼ばれます。OBJECT命令を使用します。閲覧数このトピックでは、プログラムの実行方法を取り上げて説明します。ユーザからトランザクションコード指定レポートプログラムにトランザクションコードを割り当てておけば、トランザクションコード指定により、レポートを実行することができます。レポートプログラムに割り当てられたトランザクションは、レポートトランザクションと呼ばれます。トランザクションの確認SE93を実行MIR5を入力、照会ボタンを押下トランザクションの実行MIR5を入力Enterキーを押下プログラム名指定SE38でプログラム名を指定してプログラムを実行することができます。プログラムからプログラミングからは、submit命令を利用すれば、別のレポートプログラムを起動することができます。