2009-09-23 32 views
21

Python có thể được sử dụng để truy vấn cơ sở dữ liệu SAP không?SAP có thể làm việc với Python không?

+0

SAP làm công cụ cơ sở dữ liệu !? Bạn có thể giải thích về điều đó không? – middus

+2

Ý tôi là SAP là một hệ thống rất phức tạp nhưng với mục đích của câu hỏi này tôi chỉ cần có khả năng nhận được kết quả đầu ra của các chương trình ABAP (chúng gọi là đầu ra 'list', tôi nghĩ). –

+0

Bạn tham khảo một cái gì đó gọi là "danh sách abap". Nó không dễ dàng để có được cùng một đầu ra bên ngoài. Hầu hết một tiêu chuẩn không được thực hiện như chức năng. Vì vậy, bạn chỉ có thể không nhận được đầu ra từ bên ngoài nhựa mà không có một số chương trình abap. –

Trả lời

18

Python SAP RFC module dường như không hoạt động - last (insignificant) commit 2 năm trước - nhưng có thể phục vụ quý khách:

Pysaprfc là một wrapper quanh SAP librfc (librfc32.dll trên Windows, librfccm.so hoặc librfc.so trên Linux). Nó sử dụng gói mở rộng ctypes tuyệt vời của Thomas Heller để truy cập librfc và định nghĩa các kiểu dữ liệu tương thích với SAP.

Phiên bản SAP hiện đại đi theo số Web Service way - bạn có thể tạo SAP Web Service và sử dụng nó Python.

Với SAP NetWeaver, nhà phát triển có thể kết nối ứng dụng và nguồn dữ liệu để tích hợp quy trình sử dụng dịch vụ web.

Cụ thể, các nhà phát triển có thể sử dụng một cơ sở hạ tầng để xác định, triển khai và sử dụng các dịch vụ web theo tiêu chuẩn công nghiệp. SAP NetWeaver hỗ trợ các mô hình dịch vụ web đồng bộ, không đồng bộ, trạng thái và không trạng thái - cho phép các nhà phát triển hỗ trợ các kịch bản tích hợp khác nhau.

sapnwrfc hỗ trợ SAP NetWeaver chức năng này, supersedes cũ RFC SDK, và đang tích cực duy trì.

+3

+1: Dịch vụ web Python rất dễ viết bằng cách sử dụng urllib2. –

+0

Tuyệt vời, dịch vụ web là con đường để đi! –

+1

Đây rõ ràng là câu trả lời kỹ thuật cho câu hỏi - nhưng nếu tất cả những gì bạn đang làm là viết các truy vấn, tại sao? SQ01 & SQVI cung cấp truy vấn truy vấn vào cơ sở dữ liệu. –

4

Sap KHÔNG phải là máy chủ cơ sở dữ liệu. Nhưng với mô-đun SAP SAP RFC bạn có thể truy vấn hầu hết các bảng khá dễ dàng. Nó đang sử dụng một số chức năng không được hỗ trợ sap (mà tất cả thế giới đang sử dụng). Và hàm này có một số hạn chế về kích thước trường và kiểu dữ liệu.

+0

Vâng, SAP có rất nhiều chức năng ... –

+0

bạn có thể sử dụng nó như một máy chủ cơ sở dữ liệu - mặc dù rất tốn kém: P – Esti

5

Nếu bạn đang nói về (những gì từng được đặt tên) cơ sở dữ liệu SAP AKA SapDb, và bây giờ là MaxDB (trong một thời gian cũng được phân phối bởi MySql Inc, now một lần nữa bởi SAP chỉ - và đặt tên như vậy SAP MaxDB), nó đi kèm với một số mô-đun truy cập Python, được ghi thành tài liệu here.

Đây là ý nghĩa duy nhất tôi có thể đính kèm vào "SAP làm công cụ cơ sở dữ liệu" - mà bạn muốn truy cập SAP MaxDB. Các câu trả lời khác đưa ra các giả định khác nhau và (tôi tin) cũng đúng ... theo các giả định khác nhau.

+0

Câu hỏi ban đầu không rõ ràng và cách diễn giải của bạn rất phù hợp. SAP cài đặt trong lĩnh vực này không sử dụng SAP MaxDB, vì vậy tôi đoán tại một ý nghĩa hơi khác nhau. – gimel

+0

Trên thực tế, tôi có nghĩa là cài đặt SAP trung bình, tha thứ cho sự mơ hồ của tôi. –

2

Như đã nêu ở trên, khi bạn chỉ muốn đọc bảng hoặc thực hiện cuộc gọi RFC hoặc BAPI, bạn có thể sử dụng CPython với mô-đun Python SAP RFC không được duy trì hoặc SAP RFC của Piers Harding. Các cuộc gọi RFC để chỉ đọc một bảng là RFC_GET_TABLE_ENTRIES hoặc RFC_READ_TABLE, nơi mà trước đây được ưa thích, nhưng cũng không được phát hành cho khách hàng.

Để biết cách chính thức hơn, bạn có thể sử dụng trình kết nối JCO của SAP với Jython hoặc .Net Connector with Ironpython của SAP; cả hai kết nối có thể được tải xuống từ thị trường dịch vụ của SAP và cả hai cho phép gọi chức năng RFC bao gồm cả hai cuộc gọi được liệt kê ở trên.

Như đã nêu ở trên, cách đề xuất của SAP để truy cập chức năng phụ trợ là thông qua cơ sở hạ tầng SOA rộng lớn của SAP. Ở đây bạn có thể sử dụng Jython với ví dụ: thư viện Axis hoặc Ironpython với Microsofts WCF. Lưu ý, rằng các dịch vụ được cung cấp bởi SAP rõ ràng sẽ không cho phép bạn truy cập vào các bảng đơn giản, thay vào đó bạn chỉ có thể gọi, những gì một dịch vụ cung cấp. SAP đã cung cấp khoảng 3.000 dịch vụ (xem ES Wiki trên SDN), và việc tạo ra dịch vụ của riêng bạn thực tế là chết đơn giản, một khi bạn có logic kinh doanh của bạn trong một mô-đun chức năng kích hoạt từ xa.

2

SAP bây giờ có một kết nối Python RFC gọi pyrfc. Điều này thay thế sapnwrfc.

này có thể được tìm thấy tại địa chỉ: https://github.com/SAP/PyRFC

"Gói pyrfc Python cung cấp bindings Python cho SAP Thư viện RFC NetWeaver, cho một cách thoải mái gọi module ABAP từ Python và Python module từ ABAP, qua SAP từ xa Chức năng Gọi (RFC) giao thức. "

+0

@bsrdjan Có thể với PyRFC để tự động hóa các tác vụ mà người dùng sẽ thực hiện bình thường trên GUI của SAP không? (với mục đích tự động hóa kiểm tra) –

+0

Nó phụ thuộc vào chức năng bạn muốn gọi, không phải tất cả các hàm đều được viết để làm việc với RFC. Nó được một lúc, nhưng đào vào tài liệu của mỗi chức năng sẽ tiết lộ nếu nó có thể được gọi là bởi RFC – hansonap

+0

Nếu so sánh với [CCo] (http://cco.stschnell.de/) hoặc JCo - hiện PyRFC bao gồm các chức năng tương tự ? –

Các vấn đề liên quan