NetWeaverとは
NetWeaverとは、SAP社のソリューションであり、従来のABAP技術を活かしながら、J2EE技術を土台として全面的に取り込み、人・情報・ビジネスを統合する「次世代統合プラットホーム」として、SAP社からERPを含めた全てのビジネススイートのアプリケーション基盤という位置づけをしております。
NetWeave ABAPは、SAP ERP Central Component(SAP ECC、従来のR/3部分)の稼働基盤であり、R/3までの時代ではBasis(ベーシス)と呼ばれてきました。
NetWeaverの利用タイプ
NetWeaver Platformは、完全にコンポーネントベースのアーキテクチャ構成を実現できています。NetWeaver Platformを構成する機能は、利用タイプとして分けており、インストール時に必要に応じてインストール単位として選ぶことができます。
以下の表でバージョン毎の製品名およびその利用タイプを説明します。あくまでも筆者の認識で整理した内容ですので、間違いがあれば、有識者達にご指摘していただきたいです。
バージョン | 製品名 | 利用タイプ | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
AsABAP | AsJAVA | BW | CE | DI | EPC | EP | MI | PI | ||
7.0 | NetWeaver Platform | ○ | ○ | - | ○ | ○ | ○ | ○ | ○ | ○ |
7.1 | Netweaver CE | ○ | ○ | - | ○ | ○ | ○ | ○ | - | ○ |
NetWeaver PI | - | ○ | - | - | - | - | - | - | ○ | |
NetWeaver Mobile | - | ○ | - | - | - | - | - | ○ | - | |
7.2 | Netweaver CE | ○ | ○ | - | ○ | ○ | ○ | - | - | ○ |
7.3 | NetWeaver Platform | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
7.4 | NetWeaver Platform | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
NetWeaverの開発環境
NetWeaverの開発環境は、ABAPとJAVAによって分かれております。
- ABAP
ABAPワークベンチ(SapGUI利用) - JAVA
NWDS(Eclipseベース)
Eclipse基盤が提供した機能はとくに説明しません。
概述
Composite Application
Composite Designer
Desgin Time Repository
Development Infrastructure
Dictionary
Enterprise Portal
Process Development
Process Modeling
SAP Management
Virtual Composer
WebDynpro
Deployment
このトピックでは、Eclipseの概要を取り上げて説明します。
画面構成
画面イメージ
ワークベンチ
Eclipseを起動すると、1つの作業台が起動します。この作業台のことを「ワークベンチ」と呼びます。
ワークベンチは、次に説明するパースペクティブやエディター、ビューの土台となっている部分のことで、ワークベンチそのものが画面上に表示されることはありません。
パースペクティブ
パースペクティブは視角、視野といういみをもっています。
ワークベンチには、たくさんの機能があります。しかし、ある1つの作業をする際には、その一部の機能しか使いません。そのため、Eclipseでは必要な機能だけを選んで画面上に表示するようにしています。
どの機能を表示するかを選んだもの、さらに選んだ機能をどのように配置するかを決めたものを、「パースペクティブ」と呼びます。
Eclipseを起動すると、1つのパースペクティブが選択されて画面に表示されます。
エディタ
パースペクティブは、エディターとビューで構成されています。
エディターは、プログラムなどのデータの作成、編集、保存を行う機能です。
ビュー
ビューは、さまざまな情報を表示し、かつそれらに対して操作を行うことのできるウィンドウです。
このトピックでは、エラーハンドリング処理のプログラミング方法を取り上げて説明します。
概述
エラーハンドリング (英:error handling)とは、、プログラムの処理中に処理が妨げられる事象が発生した際、その処理をエラーとして対処する処理のことです、例外処理とも呼ばれます。
エラーハンドリングの処理内容は、プログラム内にあらかじめ用意しておく必要がありますので、このトピックでは、WDJ開発におけるエラーハンドリング処理の方法や手順を取り上げて説明します。
エラーハンドリング処理を行う必要がある。
Webdynproでは、エラーハンドリング処理は以下の手順で行う。
エラーハンドリング処理の概要手順
① Message Poolの定義追加
② Message Poolへのアクセス
③ UIへの出力領域の定義
④ エラーハンドリング処理
メッセージの定義
メッセージはメッセージプールに定義されます。メッセージプールはWebdynproコンポーネント毎に一つのみが存在します。
メッセージはプログラムが格納されたDCのメッセージプールに定義すること以外、共通的なDCを一つ用意して、そのなかのメッセージプールでメッセージを纏めて定義することによりメッセージの共通化を図ることができます。
メッセージ文言はパラメータをつけることができます。
メッセージの取得
Webdynproでは、Message PoolへのアクセスやMessage Poolからメッセージの取得に、以下の手順で行う。
IWDTextAccessor APIを利用し、Message Poolへの接続を作成する。
Message Poolへの接続を用い、MessageKeyをもとに、メッセージを取得する。
Object[] parameters = new Object[1]; parameters[0] = parameter;IWDTextAccessor textAccessor = wdComponentAPI.getTextAccessor();
String msg = textAccessor.getText('dbupderror'), parameters);
メッセージ領域の定義
エラーハンドリング処理
Webdynproでは、エラーハンドリング処理により、アプリケーション例外を発生させ、予め定義されるエラーメッセージ内容をします。
具体的な手順やコード例は以下のように示します。
if (!wdThis.check()){
//MessageManagerを取得
IWDMessageManager msgmgr = wdThis.wdGetAPI().getComponent().getMessageManager();
//メッセージを出力
msgmgr.reportContextAttributeMessage(
wdThis.wdContext.currentMyDataElement(), // エラーメッセージにリンクしているUIエレメント
wdThis.wdContext.nodeMyData().getNodeInfo().getAttribute("Name"), // チェック項目
IMessageUIComp.DBUPDERROR, // MessagePoolに登録されるメッセージキー
null,
true);
}
このトピックでは、WebdynproでのRFCモデル作成方法及び手順を取り上げて説明します。
Model作成
Webdynproでは、RFCの呼出にはaRFC用のModelを作成する必要がある。またModel作成の際に、
モデルデータとメタデータオブジェクトをセットで定義する必要がある。
aRFC呼出Modelの作成イメージを下図に示す。
データバインド
概要イメージ
Webdynproでは、RFCのモデルデータをWebdynpro内で利用するには、Webdynpro のCustom Controllerへバインドする必要があります
また、モデルデータをUIに表示するには、さらにView Controllerへバインドする必要があります
RFCモデルデータのバインドイメージを下図に示す。
RFC I/F呼出
// 通貨単位取得 String waers = wdThis.getWaers(); // ex: USD // 通貨単位の小数桁数を取得 BAPI_CURRENCY_GETDECIMALSModel model = new BAPI_CURRENCY_GETDECIMALSModel(); Bapi_Currency_Getdecimals_Input input = new Bapi_Currency_Getdecimals_Input(model); input.setCurrency(waers); wdContext.nodeBapi_Currency_Getdecimals_Input().bind(input); input.execute();String type = wdContext.currentReturnElement().getType();
if (type.equals(MSGTYP_ERROR)) {
IWDMessageManager msgMgr = wdComponentAPI.getMessageManager();
sgMgr.reportException(wdContext.currentReturnElement().getMessage());
}
int curdecimals = wdContext.currentCurrency_DecimalsElement().getCurdecimals();
※wdContext.nodeOutput().invalidate()の呼出により、RFCの処理結果はWebdynproで取得可能になる