iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
佛心分享-IT 人自學之術

從0開始的ABAP之旅 系列 第 19

Day 19 SAP中物件導向的增強技術 BADI

  • 分享至 

  • xImage
  •  

Hi 大家好

今天來介紹另一種增強技術BADI,
BADI,全名是Business add in ,
跟昨天介紹的User exit、Customer exit 一樣,
都是可以在SAP標準程式之上做額外的開發 。

BADI跟其他EXIT的不同之處

一般的EXIT只允許實現一次,一個SMOD enhance只能被分配到一個project中,
BAdI允許用戶在一個標準程序中創建多個實現(Multiple Implementations),
在相同的 BAdI 增強點中,可以有不同的邏輯並且可以根據條件進行不同實現的執行。

舉例:不同Company code的業務處理
假設你在一家跨國公司工作,該公司在多個國家運營,每個國家的稅務規則不同。你需要在創建銷售訂單時,根據不同的Company Code來設定不同的稅率。

BAdI 多實現場景:

你可以創建一個 BADI,在這個BADI 的篩選器條件中使用公司代碼作為篩選依據。
為每個國家的公司代碼創建不同的實現。
實現 1:針對德國的公司代碼,應用德國的稅率計算邏輯。
實現 2:針對美國的公司代碼,應用美國的稅率計算邏輯。

如何找到t-code中隱藏的BADI

Step1 : se24 查找類 ->輸入CL_EXITHANDLER
https://ithelp.ithome.com.tw/upload/images/20241003/20169147dvqLfj3lOs.png

點擊get instance
https://ithelp.ithome.com.tw/upload/images/20241003/20169147yjtxkeBpuT.png

在第14行打上斷點
https://ithelp.ithome.com.tw/upload/images/20241003/20169147PmNNHwMOys.png

step2 :執行我們要的t-code
以T-CODE:ME21N為例
https://ithelp.ithome.com.tw/upload/images/20241003/20169147Dfvi7GcrVH.png
有進入debug模式就是有進入到增強,
找參數exit_name 就是我們的BADI名稱,
這邊可以看到名稱是ME_PROCESS_PO

查看BADI

T-CODE:SE18
https://ithelp.ithome.com.tw/upload/images/20241003/201691479txeNh9ZTS.png

點擊上方的Implement -> overview 可以看到所以implement

https://ithelp.ithome.com.tw/upload/images/20241003/201691473hCVtikTr4.png

點擊implement 可以看到實現的class名稱 ->CL_IM_WB2_PROCESS_PO
https://ithelp.ithome.com.tw/upload/images/20241003/20169147frrppCMFy7.png

添加邏輯

T-Code:se24

輸入剛剛implement 的class名稱
https://ithelp.ithome.com.tw/upload/images/20241003/20169147B1FUCU0cma.png

這裡的method點進去後就是我們添加邏輯的地方
https://ithelp.ithome.com.tw/upload/images/20241003/20169147SUREMCMVX7.png

以上就是今天的分享~


上一篇
Day 18 SAP中的外掛-增強Enhancement介紹
下一篇
Day20 SAP中批量匯入資料的工具-LSMW
系列文
從0開始的ABAP之旅 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言