【SAP】NW AS ABAP Developer Editionで開発環境を作る（2）Cloud Platformとの接続

##はじめに
この記事では、DockerコンテナにインストールしたSAP NW AS ABAPをCloud Connectorを使いCloud Platformと接続します。

前回の記事：[【SAP】NW AS ABAP Developer Editionで開発環境を作る（1）](https://qiita.com/tami/items/031c8c8e12e24b467e75)

##構成
環境はAWSのEC2上のUbuntu(18.04)です。
Cloud ConnectorはNW AS ABAPとは別のコンテナにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/bddedbdd-5d8a-1f0c-901b-a8f4cf290c01.png)

##Cloud Connectorのインストール
###概要
インストールの手順は以下のGitHubリポジトリで説明されている通りです。
https://github.com/SAP-samples/cloud-platform-workflow-virtual-event/blob/master/exercises/03/readme.md

ただし、リポジトリにあるDockerfileだとChromeで実行ができないので、[プルリクエスト](https://github.com/SAP-samples/cloud-platform-workflow-virtual-event/pull/3/files)にある修正を追加してからDockerイメージを作成してください。

###つまづいたところ
今回はNW AS ABAPとCloud Connectorが別々のコンテナにあるので、Cloud Connectorの設定でちょっとつまづきました。

NW AS ABAPにはUbuntuのブラウザからlocalhost(127.0.0.1)でアクセスできていたので、Internal Hostを`127.0.0.1:8000`としたところNot Reachableとなってしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/1f5bc8cf-b2b3-54e6-0888-c6fcac8d7338.png)

実際には、ここにはCloud Connectorのコンテナから見てアクセスできるIPアドレスを指定する必要がありました。2つのコンテナはデフォルトのネットワークである"bridge"につながっており、ネットワーク内でそれぞれのコンテナにIPが振られていました。Cloud ConnectorからNW AS ABAPのコンテナにアクセスするには`172.17.0.2`を指定すればよさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/bd827931-91f8-d705-a773-049c6ddd41f0.png)

コンテナのIPは以下のコマンドで見ることができます。

```
docker inspect <コンテナ名> 
```
一番下に"Networs"というセクションがあり、そこのIPAddressを見ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/0ba00a27-4179-c092-65a5-338f6ef7dff7.png)

Internal Hostに`172.17.0.2`を指定したところ、Reachableになりました。ただ、このIPはコンテナの起動順によって変わってしまいそうな気がします。対応として、NW AS ABAP → Cloud Connectorの順に起動するようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/e7ac82b1-c01c-dd3a-73ef-23a19395510e.png)

###起動・停止用のシェルを修正
[Part1](https://qiita.com/tami/items/031c8c8e12e24b467e75#%E8%B5%B7%E5%8B%95%E5%81%9C%E6%AD%A2%E7%94%A8%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%AB)で作成した起動、停止用のシェルにCloud Connectorの起動・停止を追加します。

```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
}

start_scc(){
  #start scc
  sudo docker container start myscc
}	

stop_scc(){
  #stop scc
  sudo docker container stop myscc
}	

start_env(){
  start_sap
  start_scc
}	

stop_env(){
  stop_scc
  stop_sap
}	
```
これ以降、SAPとSCCを同時に起動するときは`start_env`、停止するときは`stop_env`を実行します。

##Cloud PlatformのDestination登録
Cloud Platform(CF)にDestinationを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/d5423da4-a8a6-df54-f467-824c30131104.png)

Additional Propertiesの内容は以下の通りです。

|パラメータ |設定値 | 
|:-----------|:------------|
|HTML5.DynamicDestination |true | 
|HTML5.Timeout |60000 | 
|sap-client |001 | 
|WebIDEEnabled |true | 
|WebIDESystem |NPL | 
|WebIDEUsage |odata_abap | 

Check Connectionを実行すると以下のようにエラーが出ますが、Business Application Studioから接続できていれば問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/fc0a4ff1-b67a-d5b9-ba4c-435f816a31ae.png)

##ここまでできたこと
- ローカルのNW AS ABAPとCloud Platformが接続できるようになりました。
- Business Application StudioからNW AS ABAPのODataサービスを使用することができます。

次回は、Fioriアプリケーションの開発とデプロイをやってみたいと思います。

##参考
- [SAP Cloud Platform Workflow - Ex.03 - Installing & configuring the SAP Cloud Connector](https://www.youtube.com/watch?v=JjiMA9gT8ss&t=5s)（動画）
- [Exercise 03 - Installing & configuring the SAP Cloud Connector](https://github.com/SAP-samples/cloud-platform-workflow-virtual-event/blob/master/exercises/03/readme.md)（GitHub）
- [【SAPCP】トライアル環境とCloud Connectorをつないでみた](https://qiita.com/tami/items/c36eb787b03b437c6c5b)