（初）第八弾　ABAPー訓練「拡張」

:writing_hand_tone1:[第七弾](https://qiita.com/luyu1567/items/d724ca99a263d0ae2442)
:writing_hand_tone1:[SAP 訓練目次](https://qiita.com/items/dd1fdf83a42f90a78c6e)
#1.SAP概要
##1.1. SAPとは

- SAP：System,Application and Product in Data Processing

- 場所：ドイツに本社を置くソフトウェア会社

- 業務：ERPパッケージ製品
  - ERP:Enterprise Resources Planningは、経営の基本となる資源要素を適切に分配し、
有効活用する。

##1.2．SAPの特徴

![saperp_all_dataflow.jpg](https://qiita-image-store.s3.amazonaws.com/0/185058/9bf3be18-bdad-7516-4eba-74c2382392c5.jpeg)

---

###1.2.1. 情報の一元管理

- 一連の工程
- リアルタイム
- 情報の見える化
- 過去データの蓄積

###1.2.2. 業務の標準化「コンサルタント」
####会計管理
- FI：財務会計
- TR：財務／資金管理
- IM：資本投資管理
- CO：管理会計
- PS：プロジェクト管理
- EC：経営管理

####ロジスティクス
- MM：在庫／購買管理
- PP：生産計画／管理
- SD：販売管理
- PM：プラント保全
- QM：品質管理
- LO：ロジスティクス一般

####ヒューマン・リソース
- PA：人材管理
- PD：人事計画

####ベーシス（Basis）
- システム管理
- データベース管理
- サービス／通信管理
- ABAPワークベンチ

###1.2.3 ローカル化

- 多言語

- 多通貨

- 多国籍

---

###1.2.4 On the Internet

- 伝統Ｒ／３

- HANA

###1.2.5 アドオンとは Add-on
- ABAP開発
- レポート開発
- ALV開発
- Dynpro開発
- 汎用モジュール開発
- 帳票開発
- 拡張開発

#1.3 SAPシステム開発概要

##1.3.1 クライアント・サーバ構成
![SC.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/e5e8dd15-66e7-2d21-ccf1-6ef3c3588b84.png)

##1.3.2 ．構造と役割
![System.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/36e44421-2253-87d1-b57a-3b7fa1274fc9.png)

---

##1.3.3 クライアント
![DeOps.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/ff7d3026-561c-7f13-9be1-eb5a639a45de.png)


##1.4 データ構造
![DataModel.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/886c7708-6671-7c6d-ebd8-49164aaa4568.png)

##1.5 調整
![Custom.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/333ae12e-2dae-cfef-5a14-8df8e6696a6a.png)

##1.6 ランドスケープ
![landscape.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/00c6febb-0f51-573e-d551-ed299d38d5b0.png)

##1.7 移送
![Remove.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/67f19925-9078-3d31-729a-d585ce78579c.png)

---

##1.8 開発プロジェクト管理
![Develop.PNG](https://qiita-image-store.s3.amazonaws.com/0/185058/b8a7acc3-684b-a743-ad61-0ef8c54b5781.png)

#2.お客様のニーズによる対処方法
#2.1 カスタマイズ
- 優先度：最高
- 応用パターン：開発の必要はなく、パラメータの設定でシステムの動きを調整し、お客様の業務プロセスを実現します。 
- ポジション：コンサル
- 訓練：これからのモジュール訓練予定

#2.2 拡張（カスタマEXIT、ユーザEXIT、BAdI）
- 優先度：高
- 応用パターン：あらかじめ用意された拡張領域を利用してプログラム、項目を追加したり細かな要望を実現します。
- ポジション：コンサルと開発
- 訓練：今回のポイント内容

---

#2.3 アドオンプログラム開発
- 優先度：一般
- 応用パターン：お客様独自の機能や画面・帳票を、SAP ERP上に追加でプログラムを開発して実現します。
- ポジション：開発
- 訓練：第一弾～第七弾の参考

#2.4 モディフィケーション
- 優先度：最低
- 応用パターン：SAPの標準オブジェクト（プログラム、標準テーブル等）を直接変更して要望を実現します。ただし、これについては、SAP ERPを変更することで予期しない影響が出る恐れがあるためお勧めしません。
- ポジション：標準プログラムなどの改修開発
- 訓練：予定しないです


#3.カスタマEXIT
- Tr-Cd:SMOD CMOD
- 呼出元：CALL CUSTOMER-FUNCTION <3桁数字>
- 呼出先：EXIT_<プログラム名>_<3桁数字>
- 分類：
１）E.ファンクション拡張
２）C.GUI拡張
３）S.スクリーン拡張
４）T.構造拡張
探し方①
Tx-cd:SPRO  SAP完全版IMGボタンを押下し、モジュールを選択 
             モディフィケーション→カスタマExit 

---

探し方②
Tx-cd:SE16N テーブル「MODSAP」

#4.ユーザEXIT（User Exit:Function）
探し方① 
  Tx-cd:SPRO  SAP完全版IMGボタンを押下し、モジュールを選択 
             モディフィケーション→ユーザExit 

探し方② 
  Tx-cd:SE30 実行時間分析 
  探したい処理を行うトランザクションコードを指定し処理を行う 
  分析ボタン押下後、一覧から'USEREXIT_'を検索する 

#5.クラス拡張（BAdI）
[BAdi実装の検索](http://sapecc.insidekb.jp/doku.php/96/76/16/46)
- Tr-cd:SE18  ビジネスアドイン 定義更新 
- Tr-cd:SE19  ビジネスアドイン 実装更新 

探し方①
  Tr-cd:SE24 
  クラスブラウザボタン押下 
　ラジオボタン『ビジネスオブジェクト』を選択し、続行 
探し方②
 例:Tr-cd:VA01
メニューの「システム」-「ステータス」：プログラムには'CL_EXITHANDLER'を検索する

#6.展望
- [System Upgrade And Update](https://wiki.scn.sap.com/wiki/display/SL/System+Upgrade+And+Update)
  
- [SAP S/4 HANA](https://qiita.com/pi-su/items/4a619311ad16dccc7e7e)
- [SAP Fiori](https://www.sap.com/japan/products/fiori.html)
- [SAP S/4HANA に移行する前に検討すべきポイント](https://www.business-on-it.com/2001-migration-sap-s4hana-whats-next/)
- [NEC SAP移行](https://jpn.nec.com/sap/solution/hana02.html)
- [2025年保守切れ問題](https://www.sbbit.jp/article/cont1/35329)
- [S/4HANAアドオン移行のコツ(計画・準備編)](https://www.realtech.jp/blog/s4hanacustom-code-migration-worklist.html)

#6.概要仕様書テンプレート
## シート名：
###要素：
設計書表紙→変更履歴→機能概要→機能フロー図→No.01_画面設計書→No.01_画面項目定義→No.01_処理詳細
## 設計書表紙
###要素：
- 会社名
- システム名
- モジュール名
- 機能ID
- 機能名称
- 業務部門承認
- 承認者
- 作成者

##変更履歴
###要素：
- 作成日
- 作成者
- 変更日
- 変更者
- No.日付
- 管理番号
- 変更箇所
- 変更内容
- 担当者
- 承認日
- 承認者
- 備考

##機能概要
###要素：
- 会社名
- システム
- モジュール名
- 機能名称
- 作成日
- 変更日
- 作成者
- 変更者
- 処理サイクル（日次／随時／週次／月次／半期／年次／その他）
- 機能分類
- 処理時間帯（オンライン処理／バッチ処理）
- 内容（１．目的／２．概要／３．注意事項・制限事項／権限要件／変更点概要）

##機能フロー図
###要素：
- 作成日
- 作成者
- 変更日
- 変更者
- 機能名称
- プログラムリスト（No.ProgramID／プログラム名称／Write帳票／ALV／SmartForms／BDC「BAPI」／Upload／Download／サーバーInbound／サーバーOutbound／テーブル更新／その他）

-フロー図-凡例

| 機能名       |       フロー図 | 
|:-----------------:|:------------------:|
|バッチ|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/e058a21a-34e4-2cba-b345-2df0d82d0c3a.png)
|
|オンライン|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/8bc8918e-0933-8f30-2050-0fe9f4fca9c3.png)|
|定義済機能|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/b6bba50b-f23b-bad7-8fb8-9cd2d0e6e814.png)|
|テーブル|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/953403de-9936-cd30-8af6-4b7b900c9b83.png)|
|リスト|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/b49e95c3-8126-dc7d-35aa-8396bbd73d4d.png)|
|帳票|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/8a1825b1-4257-e5c9-fb60-fb4865700517.png)|
|データファイル|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/3aabce6c-03b8-e2f7-d8e6-63824d00f516.png)|

## No.01_画面設計書
###要素：
- 作成日
- 作成者
- 変更日
- 変更者
- プログラム名称
- ProgramID
- 表題
- 画面番号
- 機能キー
- 画面
- メニューバー
- 標準ツールバー
- アプリケーションツールバー

画面-凡例

| 画面機能       |       画面要素 | 
|:--------------:|:------------------:|
|実行（F8）|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/4f6e6f69-d50b-450c-52d9-f5314611b6ed.png)|
|バリアント|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/770cb1a2-3c4f-126b-0e71-4f1d69a2cfd5.png)|
|選択オプション|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/1863f32e-078e-10fc-fc4e-c792a8e581f9.png)|
|チェックボックス（TRUE）|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/326f1562-43a7-cf23-7101-778cd9dfcf39.png)|
|チェックボックス（FALSE）|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/f40b580a-3f6b-3233-ac6a-ea2c64da1684.png)|
|ラジオボタン（TRUE）|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/eefcb6a5-8864-0a3e-e9dc-f6574914f418.png)|
|ラジオボタン（FALSE）|![image.png](https://qiita-image-store.s3.amazonaws.com/0/185058/bda85220-e4d9-9628-3ec0-a85baef82fef.png)|

##No.01_画面項目定義
###要素：
- 作成日
- 作成者
- 変更日
- 変更者
- プログラム名称
- 画面番号
- ProgramID
- No.・項目名称・種別・必須・属性・桁数・検索ヘルプ・CHECKBOX・ラジオボタン・ラジオボタングループ・入出力・参照項目（テーブル名・項目ID）・初期値・補足説明
##No.01_処理詳細
###要素：
- 作成日
- 作成者
- 変更日
- 変更者
- プログラム名称
- ProgramID
- 処理------備考----

####処理
```ruby:設計書
<CLASS DEFINIIONS>
<CLASS IMPLEMENTATION>
<AT SELECTION-SCREEN>
<AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_XX>
<AT SELECTION-SCREEN OUTPUT>
<START-OF-SELECTION>

<END-OF-SELECTION>
```
###備考

```ruby:設計書
start by person name 修正内容 yyyymmdd 
end by person name 修正内容 yyyymmdd
```

:writing_hand_tone1:[SAP 訓練目次](https://qiita.com/items/dd1fdf83a42f90a78c6e)