Calculating PI in ABAP

およそ 4 年振りの SAP ネタです。

つい先日、これまで書き散らしていた諸々のソース コードを整理して、GitHub やら TFS にアップロードしていたのですが、その中に 2009 年に書いた ABAP のコードを見つけました。2009 年と言えば社会人 2 年目。暇つぶしに ABAP で円周率を計算していたとは、舐めた社員ですな。当時、社内のポータル サイトで共有したような記憶がありますが、まあ別にここで公開してもいいでしょう、ということで GitHub にアップロードしました。

https://github.com/msmania/pi

意外にも、GitHub には多くの ABAP のコードがアップロードされていて驚きました。円周率なんて計算してもしょうがないですが、GItHub にはビジネス的に有用なプログラムもあるはずです。

なお、アルゴリズムとしてはマチンの公式を使っています。

もう ABAP については記憶の彼方にいってしまってほとんど覚えていないのですが、aRFC を使って複数ワークプロセスに処理を分散させるぐらいのことまでは実現していました。当時のメモを見ると、今後に向けた改善点として、以下の 3 つが書かれていました。なんかうける。

  • N 型より INT2 型を使う
  • 汎用モジュールからの戻り値を ABAP メモリか SAP メモリに展開してコピーしないようにする
  • 算術幾何平均を使う

といっても、コードを紹介するだけだと面白くないので、久々に NetWeaver の Trial 版をインストールしてみました。4 年前に書いたインストールの記事に関しては、幾つかのブログからリンクして頂けているようで、アクセス数がそれなりにあります。公開資料が少ないこともあって、需要はあるのでしょう。それに ITPro の某特集のように情報がいつまでも古いと申し訳ないですし。

1. まずはダウンロード

かつて SDN (SAP Developer Network) と呼ばれていたサイトは、SCN (SAP Community Network) という名前に変わっていました。開発者以外の人にも見てほしい、ということなんでしょうかね。

その SCN とやらでは、どこのリンクを辿れば ABAP がダウンロードできるのか分かりません。そこで、ダウンロード ページで "ABAP Trial" で検索して、以下のページを見つけました。このページの "Trial Version" というボタンをクリックしてユーザー情報を登録すると、真のダウンロード ページへのリンクを含むメールを受け取ることができます。なんか随分めんどくさくなってるなー。

SAP NetWeaver Application Server ABAP 7.03 64-bit Trial | SAP Store
https://store.sap.com/sap/cpa/ui/sid/0000000218

メールに書いてあったリンクから、↓ のようなページに辿り着きます。NetWeaver 7.03 のダウンロードページなのに、なぜか 7.02 のリンクもあります。とりあえず全部ダウンロードしておきましょう。

image

IE の場合だけかもしれませんが、ここで単純にリンクをクリックすると、rar ファイルをテキストとして開こうとしてブラウザーが大変なことになるので、「右クリック → ファイルを保存」で保存するようにして下さい。

ダウンロードしたファイルは ↓ の 5 つ。全部で 10GB ちょっとです。拡張子は rar、exe、zip とバラバラです。

image

NetWeaver 7.02 と GUI for Java は、成り行きでダウンロードしただけで今回は使いません。使うのは以下の 2 つのファイルです。詳しく調べていませんが、すでに NetWeaver 7.03 ってのも古いのでしょうかね。時代は HANA!クラウド!なのかな。

  • ABAP_7_03_SP04_64_bit_Trial_3_9_2_GB.rar
  • ABAP_SAP_GUI_for_Windows_7_30_PL4_HF1_121_MB.exe

Hyper-V の仮想マシンに入れるので、rar を解凍して、ISO に固めなおしておきます。元の rar と比べて大してサイズはほとんど変わらず・・・。初めから ISO でダウンロードできればいいのに。

2. サーバーの準備

そう言えば、前回の記事でインストールしていたのは 32bit の NetWeaver でした。ブログを見ると、64bit の無償版は提供されていなかったらしく、なんだか時代の変遷を感じます。今回は潤沢なリソースを使って、さくっとインストールを終わらせようと思います。用意したのはこちら ↓

  • OS: Windows Server 2012 R2 (Hyper-V 仮想マシン)
  • 仮想プロセッサー コア数: 4
  • メモリ: 8GB
  • ディスク: 100GB on SSD
  • ネットワーク構成: Windows Server 2012 R2 ドメイン

8GB あれば余裕じゃん、ってことでスワップ領域の設定は特に変えません。VHD は、OS をインストールしたディスクとは別に用意しました。インストール前のディスク構成はこんな感じ。

image

3. sapinst の実行

仮想マシンを起動し、作っておいた ISO をマウントし、以下のパスにある sapinst.exe を起動します。同じフォルダーに PowerShell スクリプトがあってちょっと気になる。名前からしてクラスター環境へのインストール用か。

SAP_NetWeaver_703_Installation_Master\DATA_UNITS\BS2011_IM_WINDOWS_X86_64\sapinst.exe

image

sapinst が起動します。なんか懐かしい!

image

そう言えば SAPinst って Java がないと駄目なんじゃなかったっけ、と思いましたが、今回は特に JRE も JDK も入れていません。プロセス ツリーを見ると、なぜか Java が動いています。どこから来たんだこいつは。

image

どうやら、sapinst.exe の初回実行時に、インストール メディアに入っている SAPJVM4 が自動的に解凍されていたようです。Java.exe は %temp% にコピーされていました。バージョンを見ると、Java1.6 互換になっています。

C:\MSWORK> %temp%\sapinst_exe.2080.1425356341\jre\bin\java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 6.1.021)
SAP Java Server VM (build 6.1.021, Dec 23 2010 01:45:56 – 61_REL – optU – windows amd64 – 6 – bas2:146884 (mixed mode))

話を sapinst に戻します。sapinst の画面は、前回の記事とほぼ同じです。最初の画面で、インストールシステム ABAP+MaxDB+Central System を選択し、Next をクリックします。

ログオフを求められるので、OK をクリックしてログオフし、再度同じユーザーでログオンします。

image

ライセンス条項を確認し、問題なければ accept を選んで Next をクリックします。

image

マスター パスワードの入力です。今まで通り pswd_NSP を使おうとしたら、なぜか弾かれてしまったので Password1 を使いました。

image

パスワードの要件は以下の通りです。MaxDB と NetWeaver でそれぞれ別の要件があるので面倒です。実はこの 2 つに加えて第三の要件、Windows のパスワード要件もあり、それは sapinst ではチェックしてくれないので要注意です。sapinst が OK でも Active Directory で無効なパスワードだと、インストールの最初のフェーズでエラーになります。そうなっても sapinst をやり直せばいいのですが、確実に一発で通したい場合は、入力するパスワードで Windows のユーザーを作れるかどうかを予め確認しておくのが一つの手です。

image

パスワードが通ると、以下のポップアップが出ました。前提条件を満たしていないようですが、ここは強気の続行です。No をクリックします。

image

何を満たしていなかったかと言うと、OS バージョンとスワップ領域のサイズでした。結果的にはどちらも問題になりませんでした。OS は Server 2012 R2 なので Windows 6.3 のはずですが、なぜか 6.2 と表示されています。

image

次がサマリーのページです。縦に長くなりますが、全部貼り付けます。

image

image

image

image

念のため、全部の設定項目を確認しておいたほうがよいです。特に見るべきなのは、インストール先のドライブでしょうか。ウィザードでは何も聞かれませんでしたが、上記の例だと、基本的には全て S: ドライブにインストールされるように自動的に設定されています。もし全部 C: ドライブに入れたい場合は、該当項目にチェックをつけて、Revise をクリックしてください。

今回はこのまま Next をクリックしてインストールを開始します。

先ほど触れましたが、Active Directory のパスワードの要件を満たしていないと、エラーになります。実際に引っかかりましたので、エラーの画面を紹介します。

image

このエラーの続行は不可能なので、Stop をクリックします。すると、ログ ビューアー的な画面が出てきます。

image

エラーメッセージは以下の通り。IADsUser::SetInfo がエラーになっているので、これは Active Directory で既定で有効になっている、複雑なパスワード ポリシーを満たしていないことが原因と考えられます。

ERROR      2015-03-02 20:41:36.75 [synxcuser.cpp:1883]
           CSyUserImpl::addToOS(PSyUserDataInt data, ISyProgressObserver* )
           lib=syslib module=syslib
FSL-00009  System call failed. Error -2147022651 (The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.

) in execution of system call ‘IADsUser::SetInfo‘ with parameter (), line (1882) in file (synxcuser.cpp), stack trace: iaxxejsctl.cpp: 146: EJS_ControllerImpl::executeScript()
d:\depot\bas\720_rel\bc_720-2_rel\gen\optu\ntamd64\ins\sapinst\impl\src\ejs\iaxxejsbas.hpp: 461: EJS_Base::dispatchFunctionCall()
iaxxejsexp.cpp: 178: EJS_Installer::invokeModuleCall()
iaxxbaccount.cpp: 66: CIaOsAccount::createUser_impl()
synxcaccmg.cpp: 168: PSyUserInt CSyAccountMgtImpl::createUser(PSyUserDataInt, ISyProgressObserver*) const
syxxccache.cpp: 284: CSyAccountCache::getUserImpl(name="CONTOSO\SAPServiceNSP", sid="", create=true)
syxxccache.cpp: 293: CSyAccountCache::getUserImpl(name="CONTOSO\SAPServiceNSP", sid="", create=true, ISyProgressObserver* )
synxcuser.cpp: 134: CSyUserImpl::CSyUserImpl(PSyUserDataInt, bool)
synxcuser.cpp: 1669: CSyUserImpl::addToOS(PSyUserDataInt data, ISyProgressObserver* )

新たに sapinst をウィザードからやり直すときは、sapinst の生成したログをすべて削除してから sapinst.exe を実行してください。ログが残っていると、入力済みの値を使ってインストールが勝手に始まってしまいます。

Import ABAP 時の様子はこんな感じです ↓

image image

Import ABAP は何の問題もなく通過しましたが、最後から 4 つ前のフェーズ Start instance でインスタンスの起動に失敗して sapinst がエラーになりました。

image

単純に起動に失敗しただけなので、これは続行できる可能性があるエラーです。sapinst の以下のポップアップはそのままにして、とりあえず SAP インスタンスの手動起動を試みます。

image

既にデスクトップに sapmmc ができているのでそれを開いて・・・

image

アイコンが黄色になっているので、まずは止めます。

image

image

止めた後は特に何もせず、そのまま起動を行なったところ、無事起動しました。原因は不明ですが、まあよくあることです。今回は違いましたが、ここでの原因として、メモリ不足で SAP が起動できなかった、ということもあり得ます。SAP インスタンスの起動中は、タスク マネージャーなどでリソースの状態を確認しておく癖をつけておくと何かと役に立つはずです。

image

このあと SAPinst の画面で Retry をクリックし、無事インストールが終了しました。エラー対応も含めて 1 時間くらい。速い!

image

おまじないとして、この後 OS を再起動してから SAP インスタンスを起動します。起動後でもメモリ消費量は 4GB 弱だったので、仮想マシンへのメモリの割り当てを 5GB に減らしておきました。

4. SAP GUI のインストール

ABAP を使うためには、SAP GUI もインストールしないといけません。クライアント用に別の Hyper-V 仮想マシンを用意します。

無償版のパッケージに入っているインストーラーでは、いきなり SAP GUI 7.30 をインストールできないので、最初に SAP GUI 7.20 をインストールし、その後に 7.30 へのアップグレードを行ないます。7.20 だけなら Java は要らないのですが、7.30 にアップグレードするには 32bit JRE 6 か 7 が必要になります。最新の JRE 8 ではインストールできませんでした。sapinst と違って、SAPJVM はフロントエンド コンポーネント向きではないのでしょうかね。

SAP GUI 7.20 のインストーラーは ↓ のパスにあります。

Frontend&tools\SAP_GUI_for_Windows_7.20_Patchlevel_7_SDN_version_20110701_1428.exe

7.20 のインストール後、別途ダウンロードした ABAP_SAP_GUI_for_Windows_7_30_PL4_HF1_121_MB.exe を実行してアップグレードを行います。

これで SAP GUI 7.30 がインストールできました。

image

先ほどインストールした NetWeaver への接続を作ります。SID は NSP、インスタンス番号は 00 です。

image

作業用には、ユーザー名 bcuser、パスワード minisap のアカウントを使います。クライアントは 001 で。

minisap 環境で使う機会はほとんどなさそうですが、sap* と ddic ユーザーのパスワードは、インストール時に入力したマスター パスワードになっています。

ログオンできました。SAP GUI 7.30 といえど、見た目に大きな変更はないようです。それにしても懐かしい。

image

5. ABAP プログラムを書く

さて、ここからの手順はかなり記憶があやふやです。何はともあれ、トランザクション SE80 を実行します。ドロップダウンでは Local Objects を選んでおきます。シングルシステムで、移送の予定がないからです。移送とか懐かしい・・・

image

まずはクラスから作るので、メニューからクラスライブラリ – クラスを選びます。

image

適当に名前や説明を入れて保存します。

image

ローカル オブジェクトには $TMP というパッケージが自動的に割り当てられる、ということをトレーニングで覚えた気がします。フロッピーのボタンをクリックして保存します。

image

こんな画面になりました。

image

画面上でいちいちインターフェースを作っていくのは面倒なので、Source Code-Based というボタンを押してコード モードに移ります。ここでは、GitHub のリポジトリから z_longint.abap をコピペします。コードを保存したら Ctrl+F2 で文法チェックし、問題なければ Ctrl+F3 で有効化します。

image

多倍長演算を行うクラスができたので、このクラスを使って円周率を計算するプログラムを作ります。幾つかのバージョンを用意していますが、ここでは一番シンプルな奴を使います。

コンテキスト メニューからプログラムの新規作成を選びます。

image

名前を入れてチェックのアイコンをクリックします。

image

タイトルを適当に入力して Save をクリックします。

image

$TMP パッケージが選ばれていることを確認し、フロッピー アイコンをクリックします。

image

コード入力の画面が表示されるので、今度は GitHub から zcalc_pi.abap をコピペして保存します。先ほどと同様に Ctrl+F2 で文法チェックし、問題なければ Ctrl+F3 で有効化します。

image

特に意味はないですが、プログラムの実行は別トランザクションでやってみます。トランザクション SE38 を実行し、プログラム名に先ほど入力した名前 zcalc_pi を入力して F8 キーを押します。

image

無事、結果が表示されました。計算時間は 1 秒ちょっとになっています。さすが ABAP。遅い。

image

というわけで、久々の SAP ネタでした。

広告

[SAP] 新製品やトレンドの備忘録的まとめ

軽い気持ちで SAP の最新技術を調べていたら、かなり興味深かった。せっかくなので記事としてまとめてみます。本業として関わっていた頃はトレンドを追いかける余裕もなく、それほど興味も持っていなかったけど、外部から SAP 技術を眺める立場になると、逆に最新技術に興味がシフトしている。今の時代は、ちょっと指先を動かすだけで誰でもある程度の最新情報を得られるので便利な反面、当事者には厳しい時代になってきました。

斜め読みが多いので、間違いを見つけたらご指摘いただけると助かります。

BI 製品への注力

インメモリー コンピューティング エンジン SAP HANA 1.0 リリース (Dec. 2010)

やっぱりこれが一番ホットなんじゃないかと。残念ながら実物を見たことがないので、実際のところどうなのかは知らない。Intel Xeon 7500 に最適化されているということなので、プロセッサとしては微妙に古い。

後述の EIM 4.0 とか NetWeaver 7.3 が出てきたので、SAP は ERP より BI よりになっていくのだろうか。BI といえば、SAS とか MicroStrategy というイメージもあるが。

http://www.sap.com/press.epx?PressID=14464
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/21904

SAP BI4.0, EIM 4.0 リリース (Mar. 2011)

Business Object 側の製品で新バージョンが出て、HANA との連携を謳っている。元のバージョンを知らないだけに、これもよく分からない。日本に来るのはまだ先の話なのかね。

http://www.sdn.sap.com/irj/boc/bi
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/24307

NetWeaver 7.3 リリース (Nov. 2010)

本丸の登場です。7.2 っていつ出たっけ、という間に NetWeaver 7.3 がリリース。7.2 は BPM 専用ということか。
下のリンクの 2 番目のスライドが面白い。”The first version of BW 7.30X running on HANA (coming soon)” では BWA と NetWeaver BW の演算部分を HANA に置き換えて、ついにはデータベースが不要になるようです。

話は逸れますが、BWA は SAP のインデックス サーバーである TREX の技術をベースにして作られています。NetWeaver 6.4  の認定を取った時から 「こいつは来る」 と睨んでいたので、予想が当たって結構嬉しい。だがその割に TREX をまともに触ることはなかった・・・。

BW 以外の新機能は後述。

http://www.sap.com/japan/about/press/press.epx?pressid=14449
http://www.sdn.sap.com/irj/sdn/edw?rid=/library/uuid/300347b5-9bcf-2d10-efa9-8cc8d89ee72c

SaaS – SAP Business ByDesign

実は 2007 年から中堅市場向けに SaaS を提供しています。要するに、従量課金方式の業務アプリケーションです。ただ、独、米、英、仏、印、中の 6 ヶ国のみで日本では提供していないらしい。そろそろ日本でも機が熟してきたと思うんですけどね。各企業も SaaS に抵抗がなくなってきてそう。で、最近の動きがこちら。

Business ByDesign Feature Pack 2.6 リリース (Feb. 2011)

iPad, Blackberry 向けの SDK が含まれています。営業向けに、出先で CRM にささっとアクセスできるというのがわかりやすいイメージだと思う。iPhone は確か 2.5 でサポートされていたような。Windows Phone 7 と Android は夏に出るらしい 3.0 で対応予定。

ただ、開発環境が Visual Studio で、言語がどうやら C# らしい。このへんが賛否両論を巻き起こしそうなところ。確かに、モバイル向けのアプリ開発者って Visual Studio を使ってるイメージがあまりない。

http://www.sap.com/press.epx?PressID=14707

クラウド開発基盤 – SAP River (Jun. 2010)

いつのまにかこんなものが始まっていて驚いた。REALTECH のブログで取り上げられていたのが凄い。彼らのブログを読んでいれば、SAP のトレンドはばっちりなのではないかと思う。たぶん多くの分野で本家より詳しいと思います。

サーバーサイド JavaScript をベースにした技術らしいです。データ駆動開発で、要件がマッチすれば本当に簡単にアプリケーションを作れそうな感じ。ByDesign が C# になってしまったが、確かに JavaScript ならニュートラルですね。

既に稼働済みのサイトは 2 つ。iApprove は分からないが、Carbon Impact は Amazon EC2 で動いています。OS とか Web サーバーは何でもいいのだろうか。もう少し追いかけてみないと分からない。買収した Coghead の技術をベースにしているらしいです。

http://wiki.sdn.sap.com/wiki/display/EmTech/River
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/22784
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/23695
http://solution.realtech.jp/2011/03/sap-river-sdn.html

Duet Enterprise リリース (Feb. 2011)

Duet 1.0 が世界的にもイマイチな評価だった印象がある中、Duet Enterprise リリース開始。Office 2010 との連携製品で、今回は SharePoint Server 2010 との連携がメインのようです。

製品としては面白いけど敷居が高そう。SharePoint のシェアってどのぐらいなんだろう。便利は便利だけど、市場はそこまで求めてないような気もする。売り方次第では行けるのかな。でもSharePoint も SAP も高いし・・。

http://www.sap.com/japan/press.epx?pressid=14789
http://technet.microsoft.com/ja-jp/library/ff972433(d=lightweight).aspx

仮想化

Citrix XenServer のサポート開始 (Nov. 2010)

これで、ユーザーの選択肢は ESX, Hyper-V, Xen の 3 択になりました。どれかが勝つというよりかは、シェアを分け合いそうな気もします。ただ、サポートの手厚さという意味では、やはり Hyper-V だろうか。でも技術的には VMware はやっぱり強い。Xen は使ったことがないから分からない。一番安いのはどれだろう。

SAP GUI の仮想化

今後は、サーバーだけじゃなくて、クライアントの仮想化も進むと思われます。現在サポートされているのは、VMware View 4.5 と VMware ThinApp ですが、そのうち Microsoft App-V もサポートされるでしょう。でも結局は、仮想デスクトップが主流になるかも。

その他

Silverlight Islands

EhP2 から WebDynpro for ABAP, Java で Silverlight との統合が行われました。特に ABAP で Silverlight が統合されたのは画期的。標準のサンプル アプリケーションで体感できるので、これは環境があれば是非見てほしい。以下 3 つの WebDynpro Component が用意されています。

  • DEMO_SILVERLIGHT_FLIGHTS
  • DEMO_SILVERLIGHT_SEATS
  • WDR_TEST_SILVERLIGHT

image ← パズル

image

2 枚目の画面は従来の WebDynpro コントロールと Silverlight との比較ができるページですが、SIlverlight いいです。さくさく動きます。技術的には、MIME リポジトリの SAP/PUBLIC/BC/UR/nw7/SilverlightIslands 下に SIlverlight Islands エンジンに XAP と DLL が入っています。他のものも MIME に強引に入れれば統合できたり?Windows 以外でもちゃんと動くのかどうかも気になる。これは今度時間を作ってアプリを作ってみたい。ちょうど Silverlight に手を出そうとしていたし。

http://help.sap.com/saphelp_nw70ehp2/helpdata/en/54/07ec96bd5a4764be4996fff231b4de/frameset.htm
http://help.sap.com/saphelp_nw70ehp2/helpdata/en/61/bdfa1563a64a188ec95d2280fbb98e/frameset.htm

SAP NetWeaver 7.3 の新機能

ヘルプ ポータルにリリース ノートが出ていたので、AS ABAP の部分をざっと見て気になったところを箇条書きで。これは 7.0 EhP2 とも被る部分が多い。
http://help.sap.com/saphelp_nw73/helpdata/en/a2/fc644eb17e43b3a6442c5c522ad55e/frameset.htm

# 久々にブログ記事を書いたら、時間がかかるかかる。3時間以上もかかった気がする。継続しないとダメですね。

[SAP on Windows] パスワードを忘れたときは

日々のパスワード管理は大変です。NetWeaver に至っては、OS, RDBMS, SAP ユーザーと、ユーザーアカウントも多様なので、覚えるのが大変です。”sap password forgot” で検索をかけると、国を問わず、人々はパスワードを忘れているようです。忘れる以外にありがちなのは、インストール時に想定外の文字列を入力してしまった場合など。SAPinst のパスワード入力欄はコピー アンド ペーストが可能なので、ひたすらコピーでインストールを進めると、コピー元の文字列が違っていたらアウト、一発退場です。

運用環境であれば、パスワードはきっちり管理されているので問題ないとは思いますが、NSP のように軽い気持ちでインストールする場合は要注意です。大昔にインストールして、久々に使おうとしたらパスワードを忘れていた、ということも多いでしょう。さて、パスワードを忘れてしまった場合は一体どこまで復旧可能なのでしょうか。

実は、Windows の Administrator のパスワードさえ分かれば、以下全てのユーザーの復旧が可能です。といっても、パスワードをリセットすることができるだけで、元のパスワードは神のみぞ知る、です。

  • Windows ユーザー (<sid>adm, SAPService<SID>)
  • 全クライアントの SAP ユーザー
  • MaxDB ユーザー (DBM Operator, Database User)
    以下、順番に手順を紹介します。なお、例によって SAP がサポートしているかどうかは不明なやり方ですし、私としてもログオンできることぐらいしか検証していないので、自己責任で参考にしてください。また、Windows + MaxDB + NetWeaver 7.0 EhP1 の環境限定です。特に EhP2 以降での動作確認は未実施です。

Windows ユーザーのパスワードを忘れた!!

Windows パスワードは単純です。NetWeaver 側で管理されているわけではないので、Administrator などでログオンして Windows ユーザーのパスワードを再設定し、サービス起動アカウントを再入力するだけです。お馴染みの以下のダイアログにパスワードを入れ直して終了です。
WS002

SAP ユーザーのパスワードを忘れた!!

他の管理者アカウントが生きていれば、SU01 からリセットするだけで済む話ですが、クライアントの全ユーザーのパスワードが分からなくなった場合は、そもそもログオンできません。こんなときは、SAP* ユーザーのパスワードをリセットしてログオンすることができます。クライアント コピーを実行したことがある人にはお馴染みの方法です。

まずは、以下のプロファイル パラメーターをデフォルト プロファイルかインスタンス プロファイルに設定します。デフォルト値は 1 なので、明示的に設定しましょう。このプロファイルを有効にするためにはインスタンス再起動が必要なので、再起動して下さい。

login/no_automatic_user_sapstar = 0

次に、以下の SQL クエリを実行して下さい。MaxDB には SQL Studio という GUI 形式の SQL クライアントがあり、NSP にも付属しているので、それを使うと便利です。Database Studio でもよいです。

update usr02 set bname=’SAPSTAR’ where bname=’SAP*’ and mandt=’<該当するクライアント>’

例えば、クライアント 000 と 001 で同コマンドを実行した場合です。SAP* という行が SAPSTAR に変わっています。
WS000

これにより SAP* のパスワードがリセットされ、パスワードは pass になります。クライアント 000 や 001 でも pass になります。SAP* でログオンできれば、SU01 が使えます。DDIC などの管理者アカウントでログオンできるようになったら、上記の UPDATE 文で退避しておいた SAP* の行を元に戻し、SU01 でパスワードを再設定すれば完了です。インターネット検索でも、USR02 を編集する方法は数多く紹介されていますが、DELETE 文で SAP* の行を消してしまう荒業が紹介されていたりします。もちろん同じ結果にはなりますが、SAP* アカウントを新規作成するのは微妙です。UPDATE で退避する方法をお勧めします。

テーブル USR02 には、SAP ユーザー パスワードのハッシュキーが記録されています。SAP ユーザーは、このテーブルのハッシュを照合することで認証されます。しかし、プロファイル login/no_automatic_user_sapstar が 0 に設定されている場合は、 キーが存在しないときの SAP* ユーザーにはデフォルトの pass というパスワードが設定されます。クライアント コピーではお馴染みの知識ですが、実はクライアント 000 でも同様のことが可能です。ただしこれは、NetWeaver 7.0 EhP1 で、バージョンによって仕様が変化する可能性が高い部分です。なお、USR01 などの他のテーブルは一切変更しません。

MaxDB のアカウントを忘れた!!

一番厄介なケースです。そもそも MaxDB の知名度が低いですね。まあ私も大して知りません。そもそも MaxDB にはどんなユーザーがいるかご存知でしょうか。アカウントは 2 種類あり、NSP インストール直後は以下のようになっています。

      • DBM Operator: SUPERDBA, CONTROL
  • Database User: SUPERDBA, SAPNSP
    DBM Operator とは、データベースの起動/停止など、データベースそのものを管理する操作をするときに必要になるアカウントです。Database User は、いわゆるスキーマ ユーザーで、データベース内のオブジェクトを管理するときに必要になるアカウントです。SUPERDBA というアカウントは、一つのアカウントで、両方の役割を兼ねています。同一アカウントなので、パスワードは一つしか持っていません。つまり、インストール直後の NSP の MaxDB には 3 つのアカウントが存在します。そして、これら全部のパスワードを忘れたとしても何とかなります。

MaxDB には xuser という仕組みがあり、インストールしたときのアカウント情報がレジストリに保存され、パスワードを入力しなくても管理コンソールにログオンすることができます。Oracle の conn / as SYSDBA と同じような仕組みです。<sid>adm ユーザーでログオンして、コマンド xuser list を入力すると以下のような出力を得ます。

> xuser list

—————————————————————–
XUSER Entry  1
————–
Key         : DEFAULT          
Username    :SAPNSP
UsernameUCS2:S.A.P.N.S.P. . . . . . . . . . . . . . . . . . . . . . . . . . .
Password    : ?????????
PasswordUCS2:?????????
Dbname      :NSP 
Nodename    :win2008-nw701                    
Sqlmode     :SAPR3  
Cachelimit  :-1
Timeout     :0
Isolation   :0
Charset     :<unspecified>    
—————————————————————–
XUSER Entry  2
————–
Key         :c    
Username    :CONTROL  
UsernameUCS2:C.O.N.T.R.O.L. . . . . . . . . . . . . . . . . . . . . . . . . .
Password    : ?????????
PasswordUCS2:?????????
Dbname      :NSP 
Nodename    :win2008-nw701        
Sqlmode     :SAPR3  
Cachelimit  :-1
Timeout     :0
Isolation   :0
Charset     :<unspecified>    
—————————————————————–
XUSER Entry  3
————–
Key         :c_J2EE    
Username    :CONTROL    
UsernameUCS2:C.O.N.T.R.O.L. . . . . . . . . . . . . . . . . . . . . . . . . .
Password    : ?????????
PasswordUCS2:?????????
Dbname      :NSP   
Nodename    :win2008-nw701   

Sqlmode     :SAPR3  
Cachelimit  :-1
Timeout     :0
Isolation   :0
Charset     :<unspecified>    
—————————————————————–
XUSER Entry  4
————–
Key         :w  
Username    :SUPERDBA          
UsernameUCS2:S.U.P.E.R.D.B.A. . . . . . . . . . . . . . . . . . . . . . . . .
Password    : ?????????
PasswordUCS2:?????????
Dbname      :NSP   
Nodename    :win2008-nw701  
Sqlmode     :SAPR3  
Cachelimit  :-1
Timeout     :0
Isolation   :0
Charset     :<unspecified>    

これがレジストリに保存されているアカウント情報です。SAPNSP, CONTROL, SUPERDBA という 3 つのアカウントが全て保存されていることが分かります。これらのアカウントは key という文字列で管理/識別されます。DEFAULT, c, c_J2EE, w という値です。アカウントのパスワードを忘れても、これらの xuser エントリを使って CUI の管理ツールにログオンし、パスワードを変更することができます。

CONTROL アカウントは純粋な DBM Operator なので、データベースが起動していなくてもパスワードの変更が可能です。しかし、SUPERDBA や SAPNSP は、Database User なので、データベースが起動していないとパスワードを変更することができません。しかし Windows の場合は、MaxDB インスタンスはサービスとして 起動できるので、起動停止時に MaxDB アカウントは不要です。

WS009

パスワードを忘れてしまった場合は、サービス起動によりデータベースを起動してから、以下のようにコマンドを実行します。

>dbmcli -U c -n localhost
dbmcli on localhost : NSP>user_getall
OK
CONTROL
SUPERDBA


dbmcli on localhost : NSP>user_put control set password=新パスワード
OK


dbmcli on localhost : NSP>user_put superdba set password=新パスワード
OK


dbmcli on localhost : NSP>exit
OK

>

dbmcli というのが MaxDB の CUI 管理ツールです。MaxDB をインストールすると、自動的にインストールされます。これで superdba と control ユーザーのパスワードがリセットできました。SAPNSP ユーザーは、この方法では変更できないので、今回は Database Manager の GUI で変更します。コマンドもありそうですが、方法を知りません。

Database Manager を起動し、[Configuration] > [Database User…] をクリックします。
WS005

データベース管理者アカウントを聞かれるので、SUPERDBA アカウントを入力して [Next] をクリックします。CONTROL アカウントは、管理者ではないのでここでは使えません。
WS006

SAPNSP をダブルクリックします。
WS007

[Change] ボタンをクリックすると、パスワード変更画面が表示されます。
WS008

これで MaxDB アカウントのパスワードは全てリセットできました。が、これだけだとダメです。先にちらっと書きましたが、パスワード情報が xuser エントリとしてレジストリに保存されていて、それも変更しないと後々困ります。特に、SAPNSP に該当する xuser エントリは NetWeaver が MaxDB に接続するときに使っているので、SAPNSP のパスワードを変更しただけだと NetWeaver が起動しなくなります。NetWeaver が MaxDB に接続するときはワーク プロセスの実体である disp+work.exe が SAPNSP アカウントを使ってアクセスしに行きます。xuser エントリが間違っている場合は、メッセージ サーバーの起動の後、disp+work の起動でコけます。

WS003

ワーク プロセスの開発者トレースに以下のようなログが出力されます。dev_disp ではなく dev_w0 などに出力されるので注意。

C  Loading SQLDBC client runtime …
C  SQLDBC SDK Version : SQLDBC.H  7.6.0    BUILD 002-121-083-965
C  SQLDBC Library Version : libSQLDBC 7.6.5    BUILD 011-123-196-300
C  SQLDBC client runtime is MaxDB 7.6.5.011 CL 196300
C  SQLDBC supports new DECIMAL interface : 0
C  SQLDBC supports VARIABLE INPUT data   : 1
C  SQLDBC supports keepAlive indicator   : 0
C  INFO : SQLOPT= -I 0 -t 0 -S SAPR3
C  Try to connect (DEFAULT) on connection 0 …

C Wed Dec 29 13:36:40 2010
C  *** ERROR => Connect to database failed, rc = -4008 (POS(1) Unknown user name/password combination)
[dbsdbsql.cpp 137]
B  ***LOG BY2=> sql error -4008  performing CON [dbsh#2 @ 1208] [dbsh    1208 ]
B  ***LOG BY0=> POS(1) Unknown user name/password combination [dbsh#2 @ 1208] [dbsh    1208 ]
B  ***LOG BY2=> sql error -4008  performing CON [dblink#2 @ 431] [dblink  0431 ]
B  ***LOG BY0=> POS(1) Unknown user name/password combination [dblink#2 @ 431] [dblink  0431 ]
M  ***LOG R19=> ThInit, db_connect ( DB-Connect 000256) [thxxhead.c   1449]
M  in_ThErrHandle: 1
M  *** ERROR => ThInit: db_connect (step 1, th_errno 13, action 3, level 1) [thxxhead.c   10563]

NetWeaver の起動に関連するのは SAP<SID> だけなので、SUPERDBA, CONTROL のパスワードをリセットするだけであれば、xuser エントリを更新しなくても NetWeaver の起動には問題ありません。が、そのままにしておくと、次回パスワードを忘れたときに手も足も出なくなります。

xuser エントリの一覧コマンドは xuser list でした。そして、xuser キーと MaxDB アカウントとの対比は以下のようになっていました。

  • DEFAULT –> SAPNSP
  • c –> CONTROL
  • c_J2EE –> CONTROL
  • w –> SUPERDBA
    これもバージョンによって変わる可能性があるので、必ず自分の環境で確認しましょう。基本的にはキーとアカウントの対が合っていればいいのですが、一覧に表示される他のパラメーター(タイムアウトなど)も合わせた方がいいので、必ず変更前の xuser 一覧を記録しておきましょう。
    xuser エントリの変更も xuser コマンドを使います。一度削除してから再設定する場合のコマンドは以下の通りです。

xuser -U DEFAULT clear
xuser -U c clear
xuser -U c_J2EE clear
xuser -U w clear

xuser -u SAPNSP,パスワード -U DEFAULT -d NSP -n ホスト名 -S SAPR3 -t 0 -I 0 set
xuser -u CONTROL,パスワード -U c -d NSP -n ホスト名 -S SAPR3 -t 0 -I 0 set
xuser -u CONTROL,パスワード -U c_J2EE -d NSP -n ホスト名 -S SAPR3 -t 0 -I 0 set
xuser -u SUPERDBA,パスワード -U w -d NSP -n ホスト名 -S SAPR3 -t 0 -I 0 set

    なお、このコマンドはレジストリを書き換えるので、管理者特権で実行する必要があります。特権がない場合もエラーは出ませんが、操作は中断されているので注意が必要です。
    これで NetWeaver も無事起動するようになったはずです。

最後に、パスワードのリセット方法を表にまとめました。

Windows ユーザー Administrator でパスワードを変更
サービス起動アカウントを変更
SAP ユーザー プロファイル パラメータを設定
インスタンス再起動
UPDATE 文を実行して SAP* のパスワードを pass にリセット
MaxDB ユーザー Windows サービスから MaxDB インスタンスを起動
xuser エントリを利用して、CUI 管理コンソールでログオン (dbmcli -U c)
user_put コマンドでパスワードを変更
xuser エントリを更新

[SAP on Windows] NetWeaver サーバーのホスト名を変更する

既にインストールしてしまった NetWeaver サーバーのホスト名は一応変えることも可能です。「一応」というのは、サポートされているかどうか不明だからです。決して運用環境で行ってはいけません。

単に、Windows 上でホスト名を変えただけだと、NetWeaver は起動しなくなります。sapmmc で赤いアイコンを見ることができます。いきなり sapcpe でコけるようですね。
WS002

ホスト名ベースで通信を行なっているので、IPアドレスを変えても特に影響はありません。ですが、ホスト名を変えるには下記の設定が必要です。これを自分でやってみると、NetWeaver 起動時の挙動がある程度分かってきます。やはりソフトウェアの世界は、自分で手を動かすことが大事です。

  1. <sid>adm ユーザーの環境変数
  2. プロファイル ファイル名
  3. プロファイル パラメーター
  4. sapstartsrv 再登録

NetWeaver インストール時に、Windows ユーザーが幾つか追加されました。データベース固有のものを除くと、<sid>adm と SAPService<SID> の 2 つが追加されます。sapmmc で起動操作を行なうと、Windows ユーザー アカウントを聞かれ、通常はここで <sid>adm ユーザーを入力します。インストール時にこのユーザー固有の環境変数が追加されていて、ホスト名情報も実は含まれています。調べればすぐに分かりますが SAPLOCALHOST という環境変数がホスト名を保持しています。そんなわけで変更します。
WS003

次にプロファイル関連の変更を行ないます。すぐに分かるのはファイル名ですかね。起動プロファイルとインスタンス プロファイルのファイル名に含まれているホスト名を変更します。ご丁寧にもファイル名にホスト名が含まれているのは、複数インスタンス構成への対応と思います。インスタンスが増えても、プロファイル ファイルはグローバル サーバーの同一フォルダで一括保管されます。プロファイル ファイル名にホスト名を付加しておくことで、インスタンス番号とサーバーを独立させることができる、というのが趣旨ではないかと思います。

ファイル名だけでなく、プロファイル パラメーターそのものにもホスト名が含まれています。少々強引ではありますが、置換してしまいます。NSPの場合は、デフォルト プロファイルとインスタンス プロファイルにホスト名が含まれているパラメーターがありました。

起動プロファイルのファイル名を変えたので、sapstartsrv サービスを再起動する必要があります。というより、起動プロファイルへのパスが sapstartsrv サービスの起動コマンドの中で引数として与えられているので、そもそも再起動できません。レジストリの値を書き換えて起動コマンドを変更するとか、sc コマンドを使う方法法もありますが、正攻法は sapstartsrv.exe 自身の GUI を使うことです。

sapstartsrv.exe は、サービスとして動くプログラムですが、ダブルクリックして起動することで、サービスとしての自分自身のインストール/アンインストールなどが行なえて便利です。図のように、一度アンインストールしてからインストールし直します。この操作は管理者特権が必要になります。

WS010

サービス起動ユーザーの指定で、ワークグループ ユーザーを指定するときは、接頭辞として .\ をつけないと怒られるので注意。
WS013

このダイアログを必ず確認しましょう。管理者特権がない場合、このポップアップは表示されずに操作は中断されますが、エラーも出ないので気づきにくいです。
WS015

サービスがインストールされ、起動コマンドの起動プロファイルのパスが正しく設定されていることを確認してから、サービスを起動します。操作に誤りがなければすんなりと起動するはずです。

最後に、NetWeaver 起動を確認して終了です。簡単ですね。

WS019

[SAP] ABAP 開発環境をインストールする Part3

前回ので SAP NetWeaver ABAP のインストールは完了しました。ちなみに、試用版のインストールにおける傾向と対策は、下記のような感じでしょうか。

  • そもそも SAPinst が起動しない
    → OS など、環境が対応していない
    → JRE が入っていない
    → アンチウイルス
    → 偶然(サーバー再起動で直ったりします)
  • Windows ユーザー作成
    → パスワードポリシー
  • NetWeaver 起動
    → メモリ不足
    → TCP ポートの競合
    → ネットワーク関連
    → 偶然

エラーの原因は様々なので、結局はイベントログや、NetWeaver の起動ログなどを見て調べることになります。検索エンジンで検索すると、SDN のフォーラムなどがヒットすることもよくあります。必ず英単語で検索しましょう。

次に MaxDB の GUI クライアントツールと SAP GUI をインストールします。前者はゲスト OS、後者はホスト OS にインストールします。

MaxDB の GUI クライアントツールは 2 種類あり、今回ダウンロードした試用版には、Database Manager と、MaxDB Database Studio の両方のインストーラが含まれています。用途は同じなので、どちらか一つをインストールすれば十分です。後者の Database Studio の方が新しく、機能も多いです。しかしDatabase Studio は、Eclipse のプラグインとして開発されており、Database Manager より高負荷です。試用版ではどちらも 32bit ですが、Database Studio は 64bit 版があったりと、それなりに有利な点もあるのですが、起動/停止や、各種パラメータ設定などの基本的な機能は Database Manager でも当然行えます。32bit しかリリースされていませんが、64bit OS でも問題なく動きます。そんなわけで、Database Manager をインストールします。

以下のインストーラを実行して、ウィザードに従って進めるだけです。
MAXDBTOOLS\DBM76.exe

参考までに、Database Studio のインストーラは下記のファイルです。
MAXDBTOOLS\maxdb-studio-desktop-win-32bit-i386-7_8_01_16\SDBSETUP.exe

次に、SAP GUI をインストールします。今回はホスト OS に入れますが、もちろんゲスト OS に入れても動きます。NetWeaver 7.02 の試用版に同梱されているのは最新版の SAP GUI 7.2 のようです。7.2 は Windows 7 にも対応しており、もちろん NetWeaver 7.00 や R/3 などの過去の SAP 製品にログオンすることも可能です。インストーラは下記jのファイルです。

GUI\SAP_GUI_FOR_WINDOWS_720_PL3_CORE\SAP_GUI_for_Windows_7.20_PL3_CORE_Components.exe

なお、これは正式には SAP GUI for Windows というアプリケーションで、SAP GUI for Java と SAP GUI for HTML というアプリケーションも存在しています。for Java は 今回の NetWeaver 7.02 Trial にも入っています。名前の通り Java アプリケーションなので、Windows 以外にも Linux や Macintosh でも動くと思います。試したことはないですが。SAP GUI for HTML は、Web アプリケーションで、これは NetWeaver ABAP の機能の一つなので、特にインストールすることなく、誰でも使えます。微妙に設定が必要ですが、規定の URL にアクセスするだけです。

SAP GUI のインストールもウィザードに従って進めていくだけで、特筆すべきところはなしです。

以上でインストール作業は完了です。

細かい操作手順については、そのうち書いていく予定ですが、とりあえず起動/停止の手順と、SAP GUI 操作の初歩の初歩を紹介します。

まずは NetWeaver の起動/停止。方法はいろいろありますが、GUI を使った基本的な操作から。

NetWeaver をインストールし終わると、デスクトップに SAP Management Console というショートカットができます。これが SAP の GUI 管理ツールです。MMC のスナップインとして自動的にインストールされています。SAPMMC と呼ばれることが多いです。[ファイル名を指定して実行] に sapmmc.msc と入れて実行しても起動できます。

image

MMC スナップインとして追加されている、ということは、そうです、COM です。%SystemRoot%\System32\sapmmc.dll という DLL が存在し、こいつが COM サーバーとして動いています。こいつの仕様が公開されているかどうかはちょっと不明ですが、見たことないです。プログラム的に NetWeaver の起動停止を行ないたい場合は、WSDL が公開されている Web サービスを使うことができます。そもそもコマンドラインツールがあるので、それを使うことが多いです。

こんな画面です。直感的に分かると思いますが、三角が起動で、四角が停止です。なお、このツール自体は、Windows サービスである sapstartsrv.exe と SOAP で通信しており、sapstartsrv サービス経由で起動/停止、及び、コンソールに表示されるプロセスのステータス情報の取得などを行なっています。アイコンが緑色だと起動で、黄色は起動/停止中、灰色が停止です。ライセンス期限が切れると赤くなったりと、カラフルなやつです。
image

NetWeaver は SAPMMC で停止できますが、MaxDB インスタンスは止まっていません。そこで、インストールした Database Manager を使います。スタートメニューとデスクトップにショートカットができているので、そこから起動します。このツールも、見たとおりに操作すれば OK です。ただし、こちらは最初にインスタンスを登録しなければなりません。今回の NetWeaver 試用版では、以下の情報でインスタンスを登録してください。

  • データベース名: NSP
  • ユーザ名: superdba または control
  • パスワード: NetWeaver インストール時に入力したパスワード

インスタンスが登録されると、下図のようにインスタンスの情報が出てきます。シンプルで分かりやすいです。ツールバーの赤いボタンで停止、緑のボタンで起動です。
image

当然のことですが、停止の時は、NetWeaver が先で、その後にデータベースを止めます。起動はその逆で データベース、NetWeaver の順で起動します。実は NetWeaver も データベースも起動中のまま、OS をシャットダウンしても意外と平気だったりしますが。

起動/停止を覚えたところで、次は SAP GUI の操作です。こんな外見です。SAP GUI 7.1 とちょっと見た目が変わりました。
image

こちらも MaxDB と同様、インスタンスを自分で追加しなければなりません。Ctrl+N を押すと、新規エントリ画面が表示されるので、ウィザードに従って進めていきます。

[ユーザ指定システム] のまま、[次画面] をクリックします。
image

必要な情報を入力します。今回インストールしたシステムは以下ですので、それを入力します。

  • システムID: NSP
  • インスタンス番号: 00

あとはデフォルト設定でよいので、ここで [終了] をクリックします。

image

システムが追加されました。ダブルクリックすれば起動します。
image

ですが、その前に、サーバー側でファイアウォールの設定が必要です。SAP GUI と NetWeaver は DIAG というプロトコルで通信していることは触れましたが、DIAG も TCP の上位プロトコルなので普通にポートを開ければいいです。今回はインスタンス番号が 00 なので、3200 ポートを許可する受信ルールを作れば接続できます。使い方次第では他のポートも開ける必要がありますが、とりあえずここでは 3200 だけ開けます。例えば Web サーバーとしては、HTTP ポート 8000 を使っています。

image

接続するには、SAP GUI に追加したエントリをダブルクリックします。ログオン画面が出てくるので、既定のユーザーアカウントを入力します。以下はその一覧です。
(クライアント/ユーザー名/パスワード)

  • 000/SAP*/インストール時に入力したパスワード
  • 000/DDIC/インストール時に入力したパスワード
  • 001/SAP*/インストール時に入力したパスワード
  • 001/DDIC/インストール時に入力したパスワード
  • 001/BCUSER/abcd1234

クライアントって何、という質問に答えるのはけっこう厄介。独立したデータを持てる、NetWeaver 独自の単位です。データの一部を完全に独立して持つことができ、一方 ABAP プログラムは全てクライアント間で共通です。特に決まった使い方はなく、例えば、1つの検証サーバーを立てておいて、検証用クライアントをたくさん作っておくと、複数のデータでの検証が一つのサーバーで実施できてエコ!みたいな感じです。

000 というのは特別なクライアントなので、むやみやたらと変更してはいけません。そんなわけでここでは 001 に ユーザー BCUSER でログオンします。

image

ログオンすると以下の画面が表示されます。
image

左上のテキストボックスに、数百と存在する「魔法のおまじない」を入力してエンターキーを押すと、そのおまじないに沿ったプログラムが実行され、NetWeaver のあらゆる機能を使うことができます。ERP であれば、受注や入庫、入金といった基幹システムの画面が出てくるのです。この「魔法のおまじない」のことを、トランザクションコードと呼びます。

[SAP] ABAP 開発環境をインストールする Part2

インストーラのダウンロード、インストール環境の準備は終わったので、満を持してインストーラを起動します。が、その前に、SAP の構成について簡単にまとめます。

まず、SAP って何よって話。基幹システム、ERP、R/3、SD/MMとかでしょ?などといろいろ答えが返ってきそうです。専門分野によっても異なるんでしょうね。厳密にいうと、SAP という製品は存在せず、SAP とは単なる会社名です。多岐にわたる製品を販売していますが、その中でもメジャーな製品は SAP ERP と、SAP NetWeaver でしょうか。で、SAP ERPって何、と聞く人はあまりいないでしょう。文字通り、SAP 社が開発/販売している ERP システムです。

混同されやすいのが SAP NetWeaver です。端的に言えば SAP NetWeaver とは、SAP 社が開発/販売している アプリケーション サーバーの製品名です。ジャンル的には Apache や IIS、J2EE と同じですね。IIS の場合は C# や VB.NET で開発して、Web アプリケーションとしてブラウザで閲覧するのが主要な使い方ですが、これが NetWeaver の場合は、ABAP や Java で開発して、ブラウザ、もしくは SAP GUI という専用クライアントから操作する、という話になります。

開発言語は ABAP と Java の 2種類あります。NetWeaver の上に ERP のロジックを ABAP プログラムで書いてデプロイしたものが SAP ERP です。(正確にいうと、ERP の Java コンポーネントもありますが・・・) 基本的には NetWeaver ABAP と NetWeaver Java は別々に構築する必要があります。1つのNetWeaver で両言語をサポートさせる構成については、NetWeaver 7.01 になってから不可能になりました。なお、NetWeaver Java は一応 J2EE 準拠だったと思います。

ABAP は ERP などの基幹系のロジックを記述するバックエンドのプログラムに使い、Java は フロントエンドの UI 開発に使う、というのが基本的な使い方です。NetWeaver ABAP 自体は HTTP, SOAP, RPC (RFC) などのプロトコルに対応していますが、SAP GUI という専用クライアントは DIAG とかいう未知のプロトコルを使って通信しています。DIAG の試用は確か非公開です。したがって、SAP GUI のようなクライアントソフトを他社が開発することはできないようになっています。

最後に、NetWeaver は RDBMS がないと動きません。

以上を踏まえて、今回インストールするのは NetWeaver ABAP です。ダウンロードした 4GB 弱のファイルの中に以下のものは全部含まれています。JRE は別途ダウンロードが必要でしたけどね。

  • SAP NetWeaver ABAP 本体
  • MaxDB サーバー
  • MaxDB 管理ツール (CUI)
  • MaxDB 管理ツール (GUI)
  • SAP GUI

最初の 3つ、NetWeaver と MaxDB は一度のインストールで勝手に入ります。MaxDB の GUI 管理ツールと、SAP 専用クライアントである SAP GUI は別途インストールする必要があります。今回は VMware 仮想マシンを使うのですが、SAP GUI だけは ホスト OS にインストールすることにします。

今回も前置きがずいぶん長くなりましたが、まずは NetWeaver 本体のインストールです。ゲスト OS でインストーラを実行します。ダウンロードしたファイルを全部ゲスト OS 上にコピーするのは面倒なので、解凍したインストーラを ISO で固めて、ゲスト OS にマウントさせると楽です。ISO 化は Windows AIK に付属している oscdimg を使いました。もちろん WinRAR でもなんでもいけます。

次のプログラムを実行します。管理者特権が必要なので、Administrator でインストールします。

SAP_NetWeaver_702e_Installation_Master\IM_WINDOWS_I386\sapinst.exe
image

図のように選択し、[Next] をクリックします。
image

インストールのための環境変数などが自動的に設定されるので、一度ログオフする必要があります。[OK] をクリックすると、ログオフします。
image

使用許諾を読み、[I accept] を選択してから [Next] をクリックします。
image

パスワードを設定します。このパスワードは、SAP用に作成される Windows ユーザー、MaxDB ユーザー、SAP ユーザーに適用されます。Windows のパスワードポリシーに合致していないと、インストール中にユーザー作成が失敗して面倒なことになるので、それなりに複雑なものを設定しましょう。私は pswd_NSP を使っています。
image

マシンのスペックが足りない、と怒られます。インストール画面にも出ていますが、無視可能です。[Cancel] をクリックします。
image

サマリ画面が表示されます。[Next] をクリックするとインストールが開始されます。なお、選択画面が表示されずにデフォルト設定になっているものが数多くあるので、必ず設定項目を確認しましょう。特に、インストールドライブは要注意です。今回はすべて C ドライブにインストールするのでデフォルト設定で構わないのですが、もしドライブを分けたければ、ここで必要な項目にチェックをつけて [Revise] をクリックして下さい。すると、ドライブ選択の画面が表示されます。インストールドライブのほかに、データベースファイルの個数や、サイズなども変更可能です。なお、SID については NSP で固定です。確かこれを変えてインストールを続行すると、インストールがエラーになってしまいます。なお、NSPというのは Mini SAP の略語です。 書き忘れましたが、インスタンス番号は 00 です。これは変えられるかもしれませんが、やったことないです。
image

インストール中の画面です。Import ABAP というフェーズで数時間かかります。エラーのときはポップアップが出るので、何も出ていない限りは問題なく動いています。気長に待ちましょう。
image

プロセッサもメモリも頑張っています。
image

無事にインストールが終わると、次のポップアップが表示されるので [OK] をクリックします。私の環境では特にエラーもなく、6時間ぐらいかかりました。ずっと張り付いているのは現実的ではないので、夜にインストールして睡眠を取りましょう。
image

[SAP] ABAP 開発環境をインストールする Part1

せっかくなので、SAP についても取り扱っていこうと思います。

転職サイトなどでは、希望職種でエンジニアを選ぼうとすると、汎用系、オープン系、Web 系に分かれている場合が多いですね。SAP 自体は Windows や Linux でも動かすことができるので、オープン系と言えなくもないのですが、SAP システムそのものは汎用系になるでしょう。ABAP を中心に触ってきた SAP 系エンジニアだと、C や Java を書けない人が多い気がします。SAP の知識はそれだけで飯の種になっていたという事実の表れでしょうか。というのも、SAP 関連の情報はほとんどネット上に出回っていませんし。SAP に限らず、いわゆる基幹系システム、メインフレーム系の OS/DB、なども同様ですね。高いお金を払って、トレーニングを受けなけれななりません。一応本も出ていますが、けっこう古い情報だったりします。

さて SAP は、ライセンスを購入しなくても、それなりに情報を公開していたりします。以下のサイトは基本中の基本です。

SDN – SAP Developer Network
http://www.sdn.sap.com/irj/sdn
開発者向けの情報が中心ではありますが、リリースされたばかりの製品情報や、製品概要、製品デモなどもあるので、一般ユーザーにも有益な情報があったりします。フォーラムはかなり使えます。
いつからか、SDN でネット検索すると SDN48 が先頭に出てくるようになってしまいました。日本おそるべし。

SAP Help Portal
http://help.sap.com/
オンラインヘルプです。丁寧に書かれていて読みやすいのですが、製品リリースからしばらく経たないとヘルプが出てきません。最近は日本語訳リリースのペースも早くなってきて助かります。内容については、全機能を網羅しているわけではないので注意が必要です。ユーザー向けの情報というよりは、管理者、エンジニア向けのアーキテクチャの説明が中心だったりします。検索機能がいまいちなので、検索には慣れが必要かもしれません。

日本人にとって、いつも問題となるのは言語の壁ですね。SAP に限らず、欧米企業の情報はやはり英語で知るのがベストです。逆に、英語に抵抗がなく、ちょっと読めるだけで大多数の日本人よりは優位に立てるんだ、と前向きに考えると幸せになれます。タイムリミットが迫ってきて、焦っているときに英語の情報しかないと泣きそうになりますが。

閑話休題。SAP を始めるにあたって、まずは環境を用意しなければなりません。意外と知られていない事実ですが、NetWeaver だったら無償ダウンロードが可能です。さすがに ERP は無理です。

大昔に ITPro で無償版 SAP が紹介されたことがありましたが、中途半端に終わってしまっています。執筆者が退職されたのでしょうか。

http://itpro.nikkeibp.co.jp/article/COLUMN/20080214/293837/

何しろ 2年前の記事なのでバージョンが変わっていますが、この記事と同じようなことをやってみます。ようやく本題です。

まずはインストーラをダウンロードしなければなりません。先に紹介した SDN にアクセスし、Downloads > SAP NetWeaver Main Releases とリンクを辿っていきます。

http://www.sdn.sap.com/irj/scn/nw-downloads

2010 年 12 月 26 日現在での最新版は SAP_NetWeaver Application_Server_ABAP_702_SP6_32bit_Trial_Version です。SAP NetWeaver 7.0 EhP2 の ABAP スタックです。メインリリースだと 32bit 版はもう存在しないはずですが、逆に無償版はまだ 64bit に対応していません。

#### 2015/3/4 追記

もうこの記事を書いてから 4 年以上も経っていますが、NetWeaver のインストールをやり直してみました。これからインストールを行なうという方は、こちらのページをご覧下さい。NetWeaver 7.03 64bit を Windows Server 2012 R2 にインストールする手順です。

Calculating PI in ABAP | すなのかたまり
https://msmania.wordpress.com/2015/03/04/calculating-pi-in-abap/

####

なお、無償バージョンのライセンスは Developer Edition とTrial Version があり、微妙に使い方が違っているので注意です。Developer Edition の方が使いやすそうですが、NetWeaver 7.02 はまだ Trial しかないので、ここでは 7.02 Trial のインストールを紹介します。

http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=156697029

インストール要件などが書いてあるページ上部の [Click here for download] をクリックすると使用許諾が表示され、同意するとダウンロードできます。ファイルは 2つに分割されていて、2GB と 1.8GB です。今となってはあまり驚きに値しないサイズですね。ダウンロード速度はけっこう速いです。

ブログに載せるということもあり、一応使用許諾を読んでみました。「運用環境で使わないでね」 「逆アセンブルしないでね」 というようなことが書いてあります。画面キャプチャも SAP の所有物ですよ、ということは書かれていますが、ウェブに公開するなとは書いていない、と。

さて、次に 2つのファイルをダウンロードしました。RAR 形式を解凍できるソフトが必要です。分割解凍しているものなので、必ず二つともダウンロードしてから解凍しましょう。

  • NWASABAPTRIAL70206.part1.rar
  • NWASABAPTRIAL70206.part2.rar

フォルダ構成が複雑で分かりにくいのですが、とりあえずは無視して次にインストール環境を用意します。今回は以下の環境を用意しました。

  • サーバー: VMware 仮想マシン
  • CPU: 1つ
  • RAM: 2GB
  • スワップメモリ: 4GB
  • OS: Windows Server 2008 SP2 32bit 英語版
  • HDD: 100GB
  • その他: DHCP、ワークグループ、インターネット接続なし

一応ダウンロードページのインストール要件に合わせてあります。試しに 64bit 環境へのインストールも試みましたが、エラーになってダメでした。ごり押しすれば入りそうな気もしますが、それは応用編ってことで。

物理メモリ 2GB に加え、スワップ領域を 4GB 確保しています。インストールの後半で SAP が起動されるのですが、そのときにスワップ領域も使い果たすと、当然インストーラーがクラッシュします。メモリ領域は余分に確保しておきましょう。

ハードディスクに関しては、インストール後の状態で、OS も含めて 50GB ちょうどぐらいです。使っていくうちに増えていくので、100GB ぐらい用意しておくと安心です。

SAP のインストーラである SAPinst は GUI が Java で書かれているので、Java が必要です。JRE 1.4.2 か JRE 1.5 が必要と書かれていますが、1.4.2 はたぶん入手不可能なので、手元にない人は 1.5 をダウンロードしましょう。ライフサイクル的にはもうサポート切れですが、まだダウンロードは以下の URL から可能です。Java6 でも動きそうな気はしますけどね。誰か試してみてください。

http://java.sun.com/j2se/1.5.0/ja/download.html

これでインストール環境が整いました。インストーラ起動は次回で。