ABAP Development Tools (ADT)とSAP ABAP Platform 1909, Developer EditionでHelloworldしてみる

SAP ABAP Platform 1909, Developer EditionをAWSで構築する[記事](https://qiita.com/SAITO_Keita/items/d826c66d0853282f4b9c)と、Windows環境に`ADT`をインストールする[記事](https://qiita.com/SAITO_Keita/items/7e56763bab6f8084d268)を書いたので、次は`ADT`からHelloworldと表示するABAPプログラムを作成してみます。

プログラミングの基本ですね。

## ドキュメント

`SAP Tutorials for Developers`にちょうどよいチュートリアルがあるので`ADT`に関してはこちらも参考になるかと思います。

[Start Developing ABAP Repository Objects](https://developers.sap.com/group.abap-dev-repository-objects.html)

## 今回利用する環境

クライアント側

- Windows 10 21H1
- ABAP Development Tools 2021-12 (4.22)

サーバー側

- SAP ABAP Platform 1909, Developer Edition

[SAP ABAP Platform 1909, Developer Edition（dockerhub）をopenSUSE Leap 15.3（EC2）で起動してみる](https://qiita.com/SAITO_Keita/items/d826c66d0853282f4b9c)で構築した`SAP ABAP Platform 1909, Developer Edition`なります。

## ABAPパースペクティブの表示

ADTがインストールされたEclipseを起動し、まずはABAPパースペクティブの表示をします。

パースペクティブは各画面のレイアウトを定義している要素。

`Eclipse`ではJavaだったり、`ADT`をインストールして追加されたABAPのパースペクティブが用意されているため、まずはABAPパースペクティブを表示します。

`Eclipse`を起動し、Welcomeページが開いている場合は閉じる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/4408bb5f-803f-7b4b-8e2e-7292744cdc7a.png)

メニューバーからABAPパースペクティブを選択する（`Window -> Perspective -> Open Perspective -> Other... -> ABAP`）

もしくは下記画像赤枠の`Open Perspective`から`ABAP`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/aaf77a06-dd46-5869-46e9-8474f2554386.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0e1b0011-9f8c-e863-899a-e6aee5bfba3b.png)

ABAPパースペクティブが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/12ddbcee-ee20-3cf8-057f-da5663c4fdd5.png)

## ABAPプロジェクト作成する

`ADT`で`SAP`システムに接続するために`ABAPプロジェクト`を作成する必要があるため、まずは`ABAPプロジェクト`を作成します。（システム接続ごとにプロジェクトが必要）

メニューバーの`File -> New -> ABAP Project` もしくは　画像の `Create an ABAP project`から新しいABAPプロジェクを作成する。

### System Connection

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ff5b76e9-fc5e-fc48-48f5-9b5ec60e529a.png)

System Connectionのダイアログが出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/413be9b2-6253-6b26-7e59-8c058a94d11a.png)

ここでは、`SAP Logonpad`に登録したSAPシステム一覧がでてくるようです。

上記画像では、[SAP GUI for Windowsをインストール。SAP Logonに接続エントリを追加してSAPシステムにログインしてみる](https://qiita.com/SAITO_Keita/items/cc1681d16d8364701b44)で登録して接続エントリ、`ABAP Platform 1909 Developer Edition`が表示されています。

今回は、既存の接続エントリを選択してNextを選択すると次画面で既存の接続設定をつかって`Connection Settings`が入力されます。

今回は既存の接続設定を選択してNextを選択します。

接続エントリがない場合は、`new system connection` のボタンからイチから設定を登録します。

### Connection Settings

今回接続するSAPシステムは`SAP ABAP Platform 1909, Developer Edition`となり。

- SystemID はA4H
- Connection Type がCustom Application Server
- Application Server が10.10.10.182で構築したのでこのIPアドレスを入力
- InstanceNo 00

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b5533b3b-f358-a58d-bdd1-71927839f72d.png)

接続したい`SAP`システムの接続情報を入力して`Next`を選択。

### Logon to System

Loton to Systemの画面がでてくるので、接続に利用するユーザ情報を入力します。

今回は、

- Client 001
- User DEVELOPER
- Language EN

を入力して`Next`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/c9df4b6f-add8-d2da-753e-f3f74cb79a9c.png)

### Project Name and Favorite Packages

Project Name and Favorite Packagesの画面がでてきます。
ここではプロジェクト名を変更できますが、今回プロジェクト名はデフォルトのままで問題はないので、そのまま`Finish`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/59f70e77-6b98-9417-eb3f-fbbd96031652.png)

### ABAPプロジェクト作成確認

`Project Explorer`に今回作成した`ABAPプロジェクト`が表示されているのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/cd464839-b30f-4bcd-54e7-54bdb8cddc35.png)

## ABAPパッケージの作成

[Create an ABAP Package](https://developers.sap.com/tutorials/abap-dev-create-package.html)

SAPではプログラムを作成する際に、プログラムはパッケージに割り当てる必要があります。
ローカルパッケージ$TMPと呼ばれるパッケージを利用してもよいのですが、上記ドキュメントでパッケージを登録しているので今回は、`ZABAPTUTORIAL`というパッケージを登録してみます。

作成したABAPプロジェクト`A4H_001_developer_en`を選択して`右クリック -> New -> ABAP Package` を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/9b0984a0-64f9-1868-d501-35827884ec00.png)

### New ABAP Package

- Project A4H_001_developer_en
- Name ZABAPTUTORIAL
- Description abap tutorial

を入力して`Next`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/52aea7b9-eab8-3e01-0d63-f2cb581bfb88.png)

- `Software Component` に `HOME`を設定して`Finish`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/3bff7ad1-ba00-eec7-0b0a-fd553da47a2b.png)

### Select Transport Request

移送依頼(Transport Request)に登録する必要がありますが、ここでは`Create a new request`を選択して新規移送依頼(Transport Request)を作成します。

`Create a new request`を選択肢、
- `Request Description` abap tutorial を入力

上記入力して`Finish`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a0df2cd2-7b55-6514-d6bf-3cc7ccc7b6f1.png)

ZABAPTUTORIALのパッケージができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ab2e56fc-55a0-87e5-a1c2-619f8c0eba96.png)

## ABAPプログラムZHELLOWORLDを作成する

[Create and Run an ABAP Application](https://developers.sap.com/tutorials/abap-create-basic-app.html)

ここまででHELLOWORLDを表示するABAPプログラムの下準備が整いました、ここからABAPプログラムを作成していきます。

メニューバーから`File -> New -> Other`を選択

### Select a wizard

`ABAP Program`を選択して`Next`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7eb7e92b-6733-283d-e9d4-e26089df7a98.png)

### ABAP Program

- Project A4H_001_developer_en
- Package ZABAPTUTORIAL
- Name ZHELLOWORLD
- Description hello world

を入力して`Next`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/1bb3153c-2ac1-d6e4-a607-af68e8ca4951.png)

### Select Transport Request

今度は先程、ABAPパッケージを登録したときの移送依頼が表示されるのでそれを選択。

Description `abap tutorial` となっている移送依頼が今回作成した移送依頼。

該当業を選択して`Finish`を選択。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ee6568cf-0e0a-e82a-2dbd-5023f0f1068d.png)

`ABAPプログラム`、`ZHELLOWORLD`が登録されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/86930e58-9536-e462-cfd8-11c3cd0a56dd.png)

### helloworld　保存

作成されたABAPプログラム`ZHELLOWORLD`に`WRITE 'Hello World'.`の一文を追加し、保存ボタンで保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/11c96314-2671-3840-78dd-5d06e3f873d3.png)


```abap:zhelloworld
*&---------------------------------------------------------------------*
*& Report zhelloworld
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zhelloworld.

WRITE 'Hello World'.
```

### helloworld 有効化

ABAPプログラムは保存したあと有効化する必要があるので赤枠のボタンから有効化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/59ea6fc3-80cc-c3d5-6e32-ee3924cd2b5c.png)

### helloworld 実行　ABAP Application

ABAPプログラムが完成したので実行します。

赤枠の実行ボタンから `Run As -> ABAP Application` を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a358e27c-4fb6-df5b-7808-69f2e005af2c.png)

新しいタブ`[A4H] ZHELLOWORLD`でプログラムが実行され結果が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d323495f-b318-38bd-06eb-9ff918879373.png)

### helloworld 実行　ABAP Application(Console)

`run as -> ABAP Application(Console)で実行するとコンソールに実行結果が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b1fbf896-4ba2-d6ee-21d8-fe13d11898c8.png)

コンソールに実行結果が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ab8f1e27-f06b-d873-3c41-797be1ee3e5e.png)

## 【余談】今現在はSAPにまったく関係ない状態からABAPを学べるか？

- [ABAPを実行するSAP Developer Editionの構築記事](https://qiita.com/SAITO_Keita/items/d826c66d0853282f4b9c)
- [SAP GUI for windowsのインストール記事](https://qiita.com/SAITO_Keita/items/cc1681d16d8364701b44)
- [WindowsにADTをインストールする記事](https://qiita.com/SAITO_Keita/items/7e56763bab6f8084d268)
- ADTを使ったhelloworldの記事（本記事）

がそれぞれ用意できました。

2022年現在、これらの環境は`Sユーザ`が必要ない状態で揃える事ができるので。
`SAP`？？？？ みたいな人でもやろうと思えば、`ABAP`学習ができる環境が手に入る事が確認できたかと思います。

ただし、結局の所この`Helloworld`の記事もそうですが、`ABAPワークベンチ`をさわった事がある人ならば理解できるレベルでしか説明しておらず。

本当に何も知らない人だと、途中出てくる。

- パッケージ？
- 移送依頼(Transport Request)
- 保存、有効化

らへんの未知の要素がでてきてしまい、これは？　となっても調べるのが大変な気はします……

本記事ではここらへんはそういうものがあると理解する程度で、プログラムの基本である`helloworld`を実行する事を優先しています

## 総評

自分がはじめて`ABAP`にさわったときに、これを自由に勉強できる環境があればーとは何度も思ったものでした。
`Sユーザ`も必要とせずに、こんな感じでさわれる環境が用意できるのか……すごい！　といった感覚はあります。