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
(注:參考來源 http://wenku.baidu.com/link?url=NNWN6JwQIEIsCmGX2z56W-GmNiWf0mX99coAK8BBYxylhl8khM-GttTb70RsWS_X2kkGkh591cQIhUqB0smanFJwm5PZGIWkXuKjY6B152K )
(注:該文是本人在實踐中的結果,如果有什么不足與問題望大家能指出,謝謝!O(∩_∩)O~!!!)