【SAP】NW AS ABAP Developer Editionで開発環境を作る（1）

##はじめに
個人でABAPを書いたりCDSビューを作ったりする環境、みなさんはどうしていますか？私は現在、とあるABAP環境をサブスクしています。当然ながら毎月料金がかかるので、自分だけの環境があればいいなと思っていました。

そんなとき、こんな動画に出会いました。
[SAP ABAP Trial in Docker | Windows Setup Guide [Tutorial]](https://www.youtube.com/watch?v=fL4XkwB617w)
Docker環境があったのでやってみることにしました。動画も10分弱と短く、手軽に始められそうです。

###NW AS ABAP Developer Editionとは？
ASEというデータベース（HANAではない！）で稼働するABAPアプリケーションサーバで、ABAP開発ツール、Fiori Launchpad、Cloud Connector、ロール、サンプルアプリケーションなどが使用できるということです。
参考：[AS ABAP 752 SP04, developer edition: NOW AVAILABLE](https://blogs.sap.com/2019/07/01/as-abap-752-sp04-developer-edition-to-download/)

##やったこと
せっかくなので、トライアル環境でどこまでできるか色々と試してみました。

- NW AS ABAP Developer Editionをインストール（今回の記事）
- [Cloud Connectorの設定、Cloud PlatformのDestinationに登録](https://qiita.com/tami/items/c1af0948f6d501a06875)
- [Cloud Platformで開発したアプリをデプロイ](https://qiita.com/tami/items/454068dcef8feb45b51e)
- [Fiori Launchpadでアプリを開く](https://qiita.com/tami/items/d468e49c915c7d55ac25)
- [abapGitをインストール](https://qiita.com/tami/items/11da1cca1bc61a0c54de)

##NW AS ABAP Developer Editionをインストール
###環境
動画では、DockerがインストールされたWindows端末を使って説明していました。
私が使用した環境はAWSのEC2上のUbuntu(18.04)です。WindowsでもLinuxでも手順に変わりはありません。

＜構成＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/e8305452-1d80-e811-4d1f-d5b450082db0.png)

###ハードウェア要件
こちらの[ブログ](https://blogs.sap.com/2019/07/01/as-abap-752-sp04-developer-edition-to-download/)にハードウェア要件が記載されています。**100 GB free disk space**というのが鬼門で、EC2のインスタンスにボリュームを追加せざるを得ませんでした。

- x86_64 processor based hardware
- at least 4 GB RAM and about 8 GB swap space
- about 100 GB free disk space for the server installation
- about 2 GB free disk space for the client installation

###インストールの流れ
手順については[動画](https://www.youtube.com/watch?v=fL4XkwB617w)と[GitHub](https://github.com/brandoncaulfield/sap-nw-abap-trial-docker-windows)を見れば大体わかります。ただ、動画になかった超ベーシックなところで迷ったので、そこを中心に記載します（ステップ1～2）。あとは動画を見ながら手を動かせばスムーズにいくと思います。（繰り返しですがディスク容量には余裕をもって！）

####1. Gitリポジトリをクローン
任意のフォルダを作成し、[Gitリポジトリ](https://github.com/brandoncaulfield/sap-nw-abap-trial-docker-windows)をクローンします。リポジトリにはNW AS ABAPをインストールするためのDockerfileなどが入っています。

####2. SAP NetWeaver AS ABAP Developer Editionのインストーラをダウンロード
[こちら](https://developers.sap.com/trials-downloads.html)からSAP NetWeaver AS ABAP Developer Edition 7.52 SP04のrarファイルをダウンロードします。SAP ABAP AS Part1～Part11まで、全てです。結構時間がかかりますので、気長に待ちます。
ダウンロードしたら、[7-zip](https://www.7-zip.org/)などを使ってPart1のファイルを解凍します。すると、すべてのファイルが格納され以下のような状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/00aed764-ba81-8b24-05c4-16d5e79bd795.png)

1.でクローンしたフォルダの中にsapdownloadsというフォルダを新たに作成し、解凍されたものを格納します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/f5bd9020-a23f-2b2e-ece3-d038ca1ea37f.png)

####3. Dockerイメージを作成する
カレントディレクトリを1. でクローンしたフォルダに移動し、以下のコマンドを入力します。

```
docker build -t nwabap:7.52 .
```

※ディスクの容量が足りないとイメージを作成しているときにエラーが出ます。

####4. vm.max_map_countの値を増やす
このパラメータは[大きなデータベースを扱うためのパラメータ](https://groonga.org/ja/docs/reference/tuning.html#:~:text=vm.max_map_count,%E5%9B%9E%E6%95%B0%E3%82%92%E5%88%B6%E9%99%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82)だそうです。

```
sysctl -w vm.max_map_count=1000000
```

以下のコマンドでvm.max_map_countが増えたことを確認します。

```
sysctl vm.max_map_count
```

####4. Dockerコンテナを起動する

```
docker run -p 8000:8000 -p 44300:44300 -p 3300:3300 -p 3200:3200 -h vhcalnplci --name nwabap752 -it nwabap:7.52 /bin/bash
``` 

上記のコマンドを実行すると、コンテナの中に入った状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/327373e6-2df4-1b52-b08d-552abab9e2e2.png)
**ポートについて**
NW AS ABAPは4つのポートを公開します。Dockerfileを見たところCloud Connector用のポート8443というのもあるらしく、もし公開していればCloud Connectorをそのまま使えたのかもしれません。（別の記事で書きますが、今回Cloud Connectorは別コンテナにインストールしました）

|ポート |用途 | 
|:-----------|:------------|
|8000 |HTTP | 
|44300 |HTTPS | 
|3300 |ABAP in Eclipse| 
|3200 |SAP GUI| 

####5. NetWeaver AS ABAPをインストール
以下のコマンドでインストールを開始します。

```
/usr/sbin/uuidd
./install.sh
```
ライセンス契約に同意するか聞かれるので、"yes"と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/b2a75f86-22e9-3d51-1742-3a34823e3944.png)
途中でパスワードを設定するよう求められるので、8桁以上のパスワードを入力します。ただ実際にログインに使うのは**Down1oad**というパスワードなので、ここで設定したパスワードが何に使われるのかは不明です。
インストールは結構時間がかかりますので、気長に待ちます。
インストールが完了すると以下のメッセージが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/186f7ed6-3951-5204-4316-8dadb82ebe09.png)


####6. サーバを起動
以下のコマンドでサーバを起動します。

```
su npladm
startsap ALL
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/79f9a952-8fec-1d8b-dab9-bef4a4c7427d.png)
`Instance on host vhcalnplci started`というメッセージが出ればOKです。

##GUI、ADTと接続
###GUIと接続
インストールが完了したら、GUIとつなぎます。GUIのインストーラはsapdownloads/client/SAPGUI4Windowsに入っています（Windowsの場合）。私はNetWeaverはUbuntuにインストールしましたが、WindowsPCのGUIから接続して使っています。

ログオンパッドの設定は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/e693cbf8-a71d-86e0-10ca-254f2a33abd5.png)
###ADTと接続
ADTの設定方法については、以下のブログに記載しています。
[【ABAP】ABAP Development Tools (ADT) をインストールする方法](https://qiita.com/tami/items/c0c01cd7b6b950e3a1ab)

##インストール後の作業
SAP NetWeaverのライセンスキーを取得してインポートする必要があります。この作業はGUIにログインして行います。手順については、[GitHub](https://github.com/brandoncaulfield/sap-nw-abap-trial-docker-windows)の**Important Post Installation Steps**をご参照ください。

##サーバの停止と再起動
###停止

```
stopsap ALL --サーバを停止
exit --npladmを抜ける
exit --Dockerコンテナを停止
```

###再起動

```
docker container start nwabap752  --Dockerコンテナを起動
docker container attach nwabap752 --コンテナの中に入る
/usr/sbin/uuidd                   --何らかのシェル
su npladm                         --npladmにユーザを変更
startsap ALL                      --サーバを起動
```

###起動・停止用のシェル
毎回上記のコマンドを打つのは大変なので、シェルを作りました。（エラーハンドリング等は考慮していません。あしからず）

```bash:managesap
#!/bin/bash

start_sap(){
  #start container
  sudo docker container start nwabap752
  #start sap
  sudo docker exec -it nwabap752 /usr/sbin/uuidd 
  sudo docker exec -it nwabap752 su - npladm -c "startsap ALL"
}

stop_sap(){
  #stop sap
  sudo docker exec -it nwabap752 su - npladm -c "stopsap ALL"
  #stop container
  sudo docker container stop nwabap752
}
```

動かすときはシェルを置いたディレクトリに移動して、以下のコマンドを実行します。

```
. managesap
start_sap  --sapを起動
stop_sap   --sapを停止
```

##ここまででできたこと
- 自分専用のNW AS ABAPサーバが手に入りました。
- GUI、ADTからアクセスしてABAP開発などを行うことができます。

##参考
- [SAP ABAP Trial in Docker | Windows Setup Guide [Tutorial]](https://www.youtube.com/watch?v=fL4XkwB617w)（動画）
- [SAP NW ABAP Trial in Docker on Windows](https://github.com/brandoncaulfield/sap-nw-abap-trial-docker-windows)（GitHub）
- [AS ABAP 752 SP04, developer edition: NOW AVAILABLE](https://blogs.sap.com/2019/07/01/as-abap-752-sp04-developer-edition-to-download/)（ブログ）