1. 程式人生 > >SAP 呼叫外部程式(nco作為服務端)

SAP 呼叫外部程式(nco作為服務端)

SAP 的方法(函式)如何用其它語言實現,是SAP的funcation module 如果在外面實現,就是在SAP裡建立一個FM,然後在外面用其它語言,JAVA,.net實現這個方法完成複雜功能。

在SAP外部啟動一個服務,這個服務連線SAP的geteway service,當SAP呼叫RFC方法時這個方法根據DESTINATION 指定的RFC名稱(SM59),找到這個服務程式,找到實現方法。

作用:
1.實現複雜的業務處理,比較abap語言實現困難的
2.與外部系統做介面,比較當SAP做業務時觸發外部作業
3.從外部獲取資料,前題是SAP為主動
4.SAP與外部語言的無關性
5.例如SAP與生鮮磅稱的介面,當SAP做收貨,稱重量時,用這種方法呼叫外部程式,把重量反回SAP系統。very good!

 RFC 配置:

                         i.T-CodeSM59;建立一個RFC連線,需要配置的專案:輸入RFC DestinationConnection Type選擇T(表示用TCP/IP方式),輸入Description(描述),Technical Settings裡選擇Registered server program ,配置Program ID這個很重要與PC上外部註冊的服務程式名稱一致,Gateway host(主機閘道器,這個資訊由Basis人員提供)xxx.xxx.xxx.xxxGateway service (閘道器服務,這個資訊由Basis人員提供,例如:sapgw10).
                       ii.
測試Test Connection ,如果配置成功應通過。沒有錯誤提示。
FM建立:

    SE37 ,注意屬性要設定為遠端方式(remote -enabled module),其它與建立普通FM一樣。
FM呼叫方式:
  ***初始化L_ITAB_DATA內表***
  L_RFC_DESTINATION = 'SM59DesName'.  "'RFCSCALE'.  "指定RFC程式
  L_WA_WEIGHT-WAAGE = 'SM59ProgramID'. "在配置SM59時最好兩個名一樣,
  APPEND L_WA_WEIGHT TO L_ITAB_WEIGHT.  "向Internal Table中賦值


***呼叫SAP FUNCTION MODULE獲取資料***'HU_GET_RFC_DATA' 是外部實現的方法名,請參考例項
  CALL FUNCTION 'HU_GET_RFC_DATA' DESTINATION L_RFC_DESTINATION
    TABLES
      ET_WEIGHT             = L_ITAB_WEIGHT
    EXCEPTIONS
      COMMUNICATION_FAILURE = 1  MESSAGE MSG_TEXT
      SYSTEM_FAILURE        = 2  MESSAGE MSG_TEXT. 
    
C#實現FM:

SAP.net實現非常簡單,用SAP.net服務生成RFC介面訪問方法類。

附件:sap.net標準例項
https://download.csdn.net/download/champaignwolf/10316254