iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0

Hi 大家好
昨天介紹了RFC
今天用一個簡單的案例來示範
情境:外部系統傳入料號跟廠別希望抓到物料的標準成本

創建RFC的T-CODE:SE37

https://ithelp.ithome.com.tw/upload/images/20240924/20169147Clt5JfQzcN.png

按建立後選擇要的Function group
https://ithelp.ithome.com.tw/upload/images/20240924/20169147RYVw6wBZSX.png

Function group的功能

一般會使用模組或是專案來建立Function group,
放在同一function group的RFC可以共享全局變數還有RFC內的子程式,
來減少開發重複的代碼。

https://ithelp.ithome.com.tw/upload/images/20240924/2016914705julOm96d.png
選擇Remote-Enabled moudule才能讓外部系統調用

開始設定參數

讓外部傳入的參數

https://ithelp.ithome.com.tw/upload/images/20240924/201691471vUH2PxJfj.png
跟寫ALV的時候一樣 宣告變數都要有參照的資料類型,

SAP回傳的參數

https://ithelp.ithome.com.tw/upload/images/20240924/20169147P8T5G8BPKS.png

1.Price : 物料價格
2.ZMSG :當RFC找不到物料號碼時回傳錯誤訊息
3.ZRET :回傳成功或失敗

代碼

FUNCTION ZTESTRFC.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(MATERIAL) TYPE  MATNR
*"     VALUE(PLANT) TYPE  WERKS
*"  EXPORTING
*"     VALUE(PRICE) TYPE  STPRS
*"     VALUE(ZMSG) TYPE  CHAR255
*"     VALUE(ZRET) TYPE  CHAR1
*"  EXCEPTIONS
*"      NODATA   "設定異常參數
*"----------------------------------------------------------------------

TABLES : mbew .  "宣告要用的table ,如果同function group中有宣告過的話可以不用再宣告

select single stprs from mbew into price where matnr = material and bwkey  =  plant .

 if sy-subrc ne 0.   "如果上面的select失敗 沒有抓到資料的話回傳E 表示error 
    zret = 'E'.
    zmsg = 'Data do not exist'.
    raise nadata .    "若select 失敗 ,拋出異常參數
    return.
  else.
    zret = 'S'.
  endif.

ENDFUNCTION.

這樣一支RFC就開發完成啦

接著來嘗試看看從內部調用剛開發的RFC看看

REPORT ZTESTEASON.

PARAMETERS p_matnr  type matnr .
PARAMETERS p_werks type werks .
DATA l_price type stprs .

call FUNCTION 'ZTESTRFC'
exporting
  material = p_matnr
  plant = p_werks
IMPORTing
  price = l_price
  EXCEPTIONS
    nodata = 1    " 若select 失敗 ,異常參數no data 為1
    OTHERS = 2 .


IF sy-subrc = 1.
  WRITE: 'no material price found .'.
ELSEIF sy-subrc = 0.
  WRITE: l_price.
ENDIF.

https://ithelp.ithome.com.tw/upload/images/20240924/201691473FBKcxu6PK.png
為了觸發異常故意輸入錯誤的料號

https://ithelp.ithome.com.tw/upload/images/20240924/20169147FoqSyeICgN.png
成功拋出異常參數

以上就是今天的RFC分享, 明天見~


上一篇
Day 09 3分鐘了解 SAP如何跟外部做資料交換
下一篇
Day 11 工程師每日任務 ABAP中的Debug介紹
系列文
從0開始的ABAP之旅 12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言