matsukawar’s blog

個人的な技術ブログです。SAPネタを充実したい。Twitter : https://twitter.com/matsukawar

SAP AS ABAP Developer Edition でABAPの学習環境・開発環境を構築する

はじめに

最近、SAP NetWever AS ABAP 7.51というERP製品の導入プロジェクトに参加する機会があり、このERPシステム上に作られたアドオンの修正や、機能追加などの案件が多くなってきています。

 

このERPパッケージで使われている言語がABAPという言語です。C言語JAVAC#VBAなど、様々な言語の要素が一色単に混じったようなそんな面白い言語となっています。いろんな文法があるため習得するのが大変です。

SAP社は、おそらくJAVAへの移行を目指しているようですが、日本の大手企業で、SAP導入プロジェクトとなれば、このABAPという言語で、アドオンの開発などを行っているようです。

 

AS ABAP Developer Edition を始める

自宅でもABAPの勉強がしたいということで、AS ABAP Developer Editionという開発者向けの無償のお試し環境があると知り、さっそく、公式ブログで推奨されているスペックを満たすPCを部品をかき集めて準備し、インストールの作業に着手できましたので、紹介がてら。

 

ハードウェアスペック概要

 

ソフトウェアスペック概要
  • SAP NetWeaver 7.51 SPS2 Developer Edition (※個人無償トライアル版。SAP PortalGmailなどを使ってユーザー登録後、2~3日たつと、ダウンロードできるようになりました。よって、SAP社から何かを買う必要はありません。)
  • Windows 10 Home Edition (ホスト用。これは、買うしかないです。)
  • Vmware Workstation Player 15 (注:個人利用は無料。会社でやるときは、vSpereや有償版の仮想化製品を買う必要があります)
  • Open Suse Linux Leap (AS ABAPインストール用,  無料)
  • Eclipse IDE for Java Developers 2019-3 (無料。DLはこちらから。Eclipseは主にCDS-Viewの開発環境になります。)
  • SAP GUI for Java 7.40 rev 12 (※個人無償トライアル版。AS ABAP Developer Editionのパッケージの中に内包されています。)
  • Java Runtime Environment (個人利用は無料Eclipseのインストールで必要となります。DLはこちら)

ご覧の通り、SAP社の推奨インストール手順によれば、Open Suse Linuxの仮想環境を構築した後に、AS ABAPのインストールをするように推奨されています。従って、Open Suse Linuxのインストールと各種設定をはじめに行わないといけないので、ハードルが少し高いです。

 

インストール手順

基本的には公式ブログのガイドを参考にやっていくだけです。

このブログでは、ポイント毎に注意点を書きたいと思います。※もし構築をする中で、困った点など質問などがありましたら、ご連絡頂ければ、お答えいたします。

 

OSインストール時の注意点

言語は英語とすることと、パーティション設定に注意する必要があります。パーティション設定の方法については、こちらに、詳しく手順が紹介されていますので、ぜひ、参考にしてください。

 

追加パッケージのインストール

OSのインストールが終わったら、追加プログラムのインストールを行います。

# sudo yast

Open SuSEはこのYASTという管理ツールで設定ができるので便利です。Software - Software Managerから、追加でインストールしたいパッケージを検索して、インストールを行います。uuiddlibaio-develSUSEFirewall2(※ファイアーウォールを有効化する場合)いうパッケージを追加でインストールします。

 

YAST でのネットワーク設定時の注意点

AS ABAPをインストールする際に、静的IPアドレスの設定が必要となります。そこで、私は、VmWareの仮想ネットワークアダプタを2個用意し、片方は、DHCPでインターネットへ行けるように設定をし、もう一方は静的IPアドレス(例:192.168.1.2)でネットワーク構築を行いました。

 

具体的には、eth0をDHCPでインターネットにつなげれるような設定を行い、eth1を閉域として組んで、仮想環境とホスト環境間で通信ができるように組みました。

f:id:matsukawar:20190504184441p:plain

 

ホスト名の変更

同じく、Network Settings で、[Hostname/DNS]のメニューから、ホスト名をvhcalnplciに設定をしておきます。この名前でないとだめらしいです。

f:id:matsukawar:20190506132121p:plain

 

ホストPCからのみの利用のため、FirewallはOFFにする場合

YASTのSoftware Manager でインストール可能な、SUSEFirewall2を利用することで、Firewallの設定変更が細かく行えます。ただし、Web APIEclipseがどのポートが使っているのか定かではないため、Firewallの機能自体をOFFにしても問題がない場合は、OFFにしたほうがいいと思います。

# sudo systemctl disable firewalld

# sudo systemctl stop firewalld

 

AS ABAPのインストール

AS ABAPのインストールについては、公式のガイドの通り実行すれば、OKだと思います。インストールの最後に、Installation of NPL successfulが表示されれば成功です。

# chmod +x install.sh

# ./install.sh -s

...

Installation of NPL successful

 

AS ABAPのサービス開始

AS ABAPのインストールが終わると、npladmというユーザーが作成されていますので、このユーザーのコンソールに入り、SAPのサービスを起動します。

# su npladm

vhcalnplci:npladm 1> startsap ALL

 

ヘルプによると、stopsapなどのコマンドもあるようです。

このコマンドは、SAPのサービスやデータベースを起動します。サービスが正常に起動すると、ポート3200のリッスンが有効になる(ログインなどで利用される)ので、以下のコマンドを入力して、動作確認を行います。

# netcat -zv 192.168.1.2 3200

Connection to 192.168.1.2 3200 port [tcp/tick-port] succeeded!

 

このsapstartコマンドは、仮想OS起動毎に実施することが必要なので、あらかじめ起動時スクリプトを書いておくと良いかもしれません。

 

Eclipseのインストール

Java Runtime Environment(JRE)のインストールが完了したら、ABAP Development Tools、通称ADTをインストールします。何のことはありません。EclipseをインストールしてADTのプラグインを追加インストールします。SAP GUI(or SAP GUI for JAVA)というClientツールも有るのですが、こちらは、有料課金ユーザーしかダウンロードできないみたいだったので、無課金ユーザーは、Eclipseを使って開発を行います。

 

ADTはEclipseのメニューの [Help] - [Install New Software] からダウンロードURL(https://tools.hana.ondemand.com/2019-03)を指定する事で、インストール可能です。とりあえず、現時点では、チェックボックスが2個出ますから、全選択してインストールをします。

f:id:matsukawar:20190506132429p:plain

 

S/4 HANAを使っている方は、パフォーマンスの分析ツールがこのEclipseプラグインで提供されているので、インストールしておく必要があります。

 

SAP GUI for JAVAのインストール

SAP GUIは、有料課金ユーザーにしか配布されていないのですが、SAP GUI for JAVAというツールが無償提供プログラムに内包されていることがわかりましたので、これも併せてインストールしておきます。

f:id:matsukawar:20190506135858p:plainf:id:matsukawar:20190506141211p:plainf:id:matsukawar:20190506141316p:plain

 

SAPGUI4Windowsというフォルダもあるのですが、実際は、更新パッチしか入っていないようで、実際にインストール出来たのは、PlatinGUI740_12-20012038.JARのみでした。こちらは、SAP GUI for JAVAの本体となります。SAPGUI4Windowsのフォルダに本体が入っていないのは、入れ忘れか何らかのミスではないかと想像します。

 

初期設定

ここまでインストールは終わりとなります。次に初期設定を行います。

 

SAP GUI for JAVAでログイン

インストールが終わったら、さっそく起動をして、メニューの[ファイル]-[新規接続]から接続プロパティの設定画面を開き、内容説明を記入して、[詳細]タブの[エキスパートモード]にチェックを入れて、接続情報を入力して、[保存]ボタンをクリックします。

f:id:matsukawar:20190506142049p:plain

conn=/H/192.168.1.2/S/3200

 

作成した接続情報をダブルクリックすると、ログイン画面に到達します。

f:id:matsukawar:20190506142412p:plain

 

クライアント001、ログオン言語ENを入力します。資格情報としては、クライアント001に以下の4アカウントが用意されています。いずれもパスワードはAppl1anceです。

  • DDIC
    Data Dictionary用
  • SAP*
    管理者用。開発用途ではなく、ライセンス適用などで利用する。
  • DEVELOPER
    開発者用アカウント。
  • BWDEVELOPER
    開発者用アカウント。

 

ハードウェアキーの取得

とりあえず、ライセンス適用でハードウェアキーが必要になるので、SAP*でログインし、トランザクションコード(T-Code) SLICENSEを実行します。そうすると、SAP License Administrationの画面が開くので、Active Hardware Keyをコピーます。

f:id:matsukawar:20190506144146p:plain

 

ライセンスファイルの取得

こちらにアクセスして、ライセンスの申請を行います。3か月有効なライセンスを取得することができ、延長の場合は、新たに申請を行うことができます。一覧からNPL - SAP NetWeaver 7.x (Sybase ASE)を選択して、ハードウェアキーと、必要項目を記入の上[Generate]ボタンをクリックします。これで、ライセンスファイルが取得できます。

f:id:matsukawar:20190506151702p:plain

 

ライセンスファイルの適用

T-Code:SLICENSEの画面に戻り、すでに適用済となっているライセンス行を右クリック-[Delete License]から削除します。

f:id:matsukawar:20190506152522p:plain

 

そして、[Install License]ボタンをクリックし、先ほど取得した、ライセンスファイルをインストールします。

f:id:matsukawar:20190506152810p:plain

 

さっそくプログラムを作る!

ABAPの開発が行える状態になりましたので、簡単なプログラム作成ということで、Hello Worldを行うだけの、レポートプログラムと、ユーザー一覧を取得するCDS-Viewを用いた、レポートプログラムを作ります。

 

Hello World レポートプログラムの作成

簡単なプログラムを作って動かしてみます。

T-Code:SE38を実行して、サンプルプログラムを作ります。ここでは、プログラム名ZHELLOWORLDを入力して、[CREATE]ボタンをクリックします。ちなみに、作成するプログラム類は、すべて、ZまたはY始まりの名前である必要があります。

f:id:matsukawar:20190506155715p:plain

 

次に、内容説明にHello worldなどと好きなコメントを入れて、プログラムの種別として、Executable program - Test Programを選択して、[Save]ボタンをクリックします。
f:id:matsukawar:20190506155544p:plain

 

[Local Object]ボタンをクリックします。ローカルオブジェクトが嫌な場合は、既存のパッケージしか使えないみたいです。T-Code:SE21でパッケージを作ることができませんでした。TESTという既存のパッケージが使えそうです。

f:id:matsukawar:20190506160012p:plain

 

とりあえず、簡単なプログラムを書いてみます。

*&---------------------------------------------------------------------*
*& Report ZHELLOWORLD
*&---------------------------------------------------------------------*
*& Sample Program
*&---------------------------------------------------------------------*
REPORT ZHELLOWORLD.

DATA NAME TYPE STRING VALUE 'WORLD'.
WRITE / |Hello { NAME } !|.

 

その後、

  1. [Check]ボタンをクリックして、構文チェックを行います。
  2. [Save]ボタンをクリックして、保存を行います。
  3. [Activation]ボタンをクリックして、有効化します。
  4. [Direct Processing]ボタンをクリックして、プログラムを実行します。

f:id:matsukawar:20190506160627p:plain

 

実行結果です。

f:id:matsukawar:20190506160938p:plain

 

EclipseのSAPへの接続

次に、CDS-Viewを作ろうと思います。CDS-ViewはABAPレイヤー上のビューなので、ASEデータベースを使用しているこのDeveloper Editionでも作成することができます。ただし、AMDPと呼ばれるHANAデータベース上のプロシージャーについては、作成はできません。(※作れるけど、実行時エラーになります。)

 

まず、EclipseProject ExplorerCreate an ABAP projectをクリックします。System IDにNPL、Application ServerにサーバーのIPアドレス、Instance Number に00(ゼロを2個)を入力して、[Next]ボタンをクリックします。

f:id:matsukawar:20190506161743p:plain

 

クライアントに001、UserにDEVELOPER、言語にENを指定して、[Finish]ボタンをクリックします。ログインに成功すると、SAP内部のオブジェクトのツリーがProject Expolorerに表示されます。

f:id:matsukawar:20190506161935p:plain

 

CDS-Viewを作成する

Project Explorer から、[Favorite Package]-[$TMP]を右クリックし、[New]-[Other ABAP Repository Object]をクリックします。

f:id:matsukawar:20190506162230p:plain

 

CDS-Viewを作りたいので、[Core Data Services]-[Data Definition]を選択して[Next]ボタンをクリックします。

f:id:matsukawar:20190506162435p:plain

 

今回は、ユーザー一覧のビューを作ってみようと思います。CDS-View作成時、別名での登録をする必要があるようなので、Nameの欄を入力するときは、ZUSERS_V (_Vの部分は本来要らない)と命名します。

f:id:matsukawar:20190506163341p:plain

 

エディターが開くので、ビューを作っていきます。ここで、sqlViewNameに別名ではなく実際の名前(ZUSERS)を指定する必要があります。CDS-Viewは、ローカルオブジェクト以外の場合、削除リリースするまで論理削除状態となり消えないので、要注意です。

f:id:matsukawar:20190506165123p:plain

@AbapCatalog.sqlViewName: 'ZUSERS'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Get User List.'
define view ZUSERS_V as
select
r.mandt,
r.bname,
a.name_first,
a.name_last,
a.date_from,
a.date_to
from usr21 as r

inner join adrp as a on
a.persnumber = r.persnumber

 

SE38でプログラムを作成したときと同じ要領で、[Save]ボタンをクリックした後に、[Activate]ボタンをクリックします。画面下にActivation for ZUSERS_V successfulが表示されていればOKです。

f:id:matsukawar:20190506164207p:plain

 

その後、[Execute]ボタンをクリック or F5キーを押すと、実行結果が表示されます。Client001 にはビルトインユーザー以外に、開発者2名しか登録されていないので、合ってそうです。

f:id:matsukawar:20190506165254p:plain

 

Eclipseで作成したCDS-Viewをさっそく、レポートプログラムに組み込んでみます。

T-Code:SE38ZUSERSというプログラムを作成しました。

f:id:matsukawar:20190506170205p:plain

*&---------------------------------------------------------------------*
*& Report ZUSERS
*&---------------------------------------------------------------------*
*& get users.
*&---------------------------------------------------------------------*
REPORT ZUSERS.

SELECT * FROM ZUSERS WHERE MANDT = '001' INTO TABLE @DATA(ALL_USERS).
CL_DEMO_OUTPUT=>DISPLAY_DATA( ALL_USERS ).

 

実行結果はこんな感じです。ここで、クライアントIDの指定を外すと、Client000の値も取得されてしまいます。よって、先ほどのCDS-ViewにはMANDTの項目が必要となります。

f:id:matsukawar:20190506170333p:plain

 さいごに

今回、自宅に、ABAPの学習をする環境を構築することができました。S/4になってからの、新しい文法や、ABAPという言語の動作検証などをして、GitHubなどにアップしていければいいなと思っています。