SAP調用外部數據庫


SAP 中可以通過配置數據庫的鏈接,來完成從SAP鏈接到外部的數據庫中進行處理數據,具體操作如下:

1、先進入事務:DBCO,設置數據庫鏈接。進入該事務后,如果系統已經有配置過類似鏈接則會出現在如下畫面中,如圖1:

(圖1)

2、在該配置中的難點在於您使用的服務器類型,sap中提供多種選擇,如圖2:

(圖2)

3、說其是難點,是因為不同的數據庫類型,在‘鏈接信息’這欄填寫的內容格式是不一樣的,重點說明MSS和ORA(因為我只用到了這兩種);

a)、SQL Server

 

這里的連接信息很接近 Sql  Server  的連接字符串,但是參數名略有不同。指定主機IP、端口號、數據庫名即可。

b)、Oracel

 

oracel的鏈接信息比較隱晦,必須在 SAP 應用服務器上安裝 Oracel client  ,然后設置鏈接,再在這里的鏈接信息進行指定。

4、設置完事務DBCO后,就可以進行編寫代碼測試鏈接是否成功。(注:任何數據庫配置信息都存放在表DBCON中)

 

測試代碼:(也可以見附件)

 

附件代碼:

  1 *&---------------------------------------------------------------------*
  2 *& Report  ZQIU_TEST46
  3 *&
  4 *&---------------------------------------------------------------------*
  5 *& 從SAP獲取SRM中的數據
  6 *& SRM的數據庫為Oracel
  7 *&---------------------------------------------------------------------*
  8 
  9 REPORT  zqiu_test46.
 10 
 11 TABLES dbcon.
 12 
 13 TYPES: BEGIN OF gs_asn,
 14         vendor_code(100) TYPE c,"供應商代碼
 15         vendor_name(100) TYPE c,"供應商名稱
 16         ship_date        TYPE d,"發貨日期
 17         "creation_date    TYPE d,"創建日期
 18         org_code(100)    TYPE c,"公司代碼
 19         item_code(30)    TYPE c,"物料編碼
 20         item_name(1000)  TYPE c,"物料描述
 21         "ship_quantity
 22         segment1(30)     TYPE c,"訂單號
 23         line_num(30)     TYPE c,"行號
 24        END OF gs_asn.
 25 
 26 DATA: gt_asn TYPE STANDARD TABLE OF gs_asn,
 27       gw_asn TYPE gs_asn.
 28 
 29 FIELD-SYMBOLS:<fs_asn> TYPE gs_asn.
 30 
 31 CONSTANTS p_connr TYPE dbcon-con_name  VALUE 'ZDBC0002'.
 32 
 33 *TRY.
 34 *  EXEC SQL.
 35 *    CONNECT TO :p_connr
 36 *  ENDEXEC.
 37 *  EXEC SQL.
 38 *    SET CONNECTION :p_connr
 39 *  ENDEXEC.
 40 *
 41 *  IF sy-subrc EQ 0.
 42 *    WRITE: / '連接成功!'.
 43 *  ELSE.
 44 *    WRITE: / '連接失敗!'.
 45 *  ENDIF.
 46 *ENDTRY.
 47 
 48 START-OF-SELECTION.
 49   PERFORM frm_get_data.
 50 
 51 *&---------------------------------------------------------------------*
 52 *&      Form  frm_get_data
 53 *&---------------------------------------------------------------------*
 54 *       text
 55 *----------------------------------------------------------------------*
 56 FORM frm_get_data.
 57   TRY.
 58     EXEC SQL.
 59       connect to :p_connr
 60     ENDEXEC.
 61     EXEC SQL.
 62       set connection :p_connr
 63     ENDEXEC.
 64     EXEC SQL PERFORMING frm_get_lines.
 65       select a.vendor_code,
 66              a.vendor_name,
 67              a.ship_date,
 68              a.org_code,
 69              b.item_code,
 70              b.item_name,
 71              b.segment1,
 72              b.line_num
 73         into :gw_asn-vendor_code,
 74              :gw_asn-vendor_name,
 75              :gw_asn-ship_date,
 76              :gw_asn-org_code,
 77              :gw_asn-item_code,
 78              :gw_asn-item_name,
 79              :gw_asn-segment1,
 80              :gw_asn-line_num
 81         from inv_asn_headers a inner join inv_asn_lines b on a.asn_header_id = b.asn_header_id
 82         where b.segment1 = '60036078'
 83           and b.status = 'NEW'
 84 
 85     ENDEXEC.
 86 
 87     "關閉連接
 88     EXEC SQL.
 89       DISCONNECT :p_connr
 90     ENDEXEC.
 91   ENDTRY.
 92 
 93   IF gt_asn IS NOT INITIAL.
 94     WRITE:/ '獲取數據成功!'.
 95 
 96     PERFORM frm_out_put.
 97   ENDIF.
 98 
 99 ENDFORM.                    "frm_get_data
100 
101 
102 *&---------------------------------------------------------------------*
103 *&      Form  frm_get_lines
104 *&---------------------------------------------------------------------*
105 *       text
106 *----------------------------------------------------------------------*
107 FORM frm_get_lines.
108   APPEND gw_asn TO gt_asn.
109 ENDFORM.                    "frm_get_lines
110 
111 
112 *&---------------------------------------------------------------------*
113 *&      Form  frm_out_put
114 *&---------------------------------------------------------------------*
115 *       text
116 *----------------------------------------------------------------------*
117 FORM frm_out_put.
118   LOOP AT gt_asn ASSIGNING <fs_asn>.
119     WRITE: / <fs_asn>-vendor_code,<fs_asn>-vendor_name,<fs_asn>-ship_date,<fs_asn>-
120 
121 org_code,<fs_asn>-item_code,<fs_asn>-item_name,<fs_asn>-segment1,<fs_asn>-line_num.
122   ENDLOOP.
123 ENDFORM.                    "frm_out_put
View Code

 (注:參考來源 http://wenku.baidu.com/link?url=NNWN6JwQIEIsCmGX2z56W-GmNiWf0mX99coAK8BBYxylhl8khM-GttTb70RsWS_X2kkGkh591cQIhUqB0smanFJwm5PZGIWkXuKjY6B152K )

(注:該文是本人在實踐中的結果,如果有什么不足與問題望大家能指出,謝謝!O(∩_∩)O~!!!)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM