مساء الخير يا هبر!
أريد مشاركة تجربة مهمة مثيرة للاهتمام حول كيفية التفاعل بسهولة مع أنظمة SAP باستخدام Python - لا يهم أي وحدة أو إصدار من النظام الأساسي.
إذا كان الحل الفني فقط مثيرًا للاهتمام ، فقم بتخطي جميع كلمات الأغاني وشاهد مثالًا للتنفيذ.
الأغاني
كل ذلك يتلخص في حقيقة أن أحد العملاء يحتاج إلى تنزيل البيانات من نظام SAP ERP ، من خلال التلاعب بالفعل في إنشاء التقارير وإرسالها بالبريد إلى الأشخاص المهتمين عبر البريد الإلكتروني ، بالإضافة إلى الإجراءات الأخرى.
في الواقع ، عند مناقشة حل مثل هذه المشكلة ، اقترحنا ، كمقاول ، خيارات مختلفة وأحدها الأكثر وضوحًا هو القيام بكل ذلك بمساعدة وظيفة SAP الداخلية ، بطريقة بسيطة بين "خبراء الحرب" لـ Zed all with ABAP.
أول شيء واجهناه هو معايير اختيار البيانات التي لا تتسم بالشفافية التامة من كلمات العميل ، أي بيانات الجداول ، ولماذا ، ولماذا ، وما هي الإجراءات التي يجب تنفيذها معها. إذا أعطيت مثالاً ، فيجب على العميل تفريغ حضور موظفي المكتب ، مع البيانات في سياق الجداول الزمنية والعطلات. كان من الضروري أيضًا إنشاء تقارير حول أداء الموظفين مع التحليلات في الوقت الذي يقضيه في مكان العمل ، ولن أخوض في التفاصيل ، ولكن سأقول أن مقدار الوقت الذي يقضيه يؤثر على الإنتاجية ، ولكن لمعرفة ذلك ، تحتاج إلى حساب مقدار الوقت في العمل نتيجة العمل والكثير آخر. هذا مجرد مثال واحد على تقرير ، وقد حقق العميل الكثير خلال المناقشات.
بعد محادثات طويلة ، أدركنا أن مثل هذا الحل يمكن أن يكون SAP Query أو BI \ BO ، لكن العميل لم يكن سعيدًا جدًا بالتكلفة المقدرة للحل وليس بالمرونة الأكثر ملاءمة.
حل بايثون
ثم فكرت برأسي حول مقال عن مورد حول مكتبة pyrfc ، وكما لم أكن مبرمجًا في python ، ولكن بعد قراءتها مرة واحدة ، قررت أن أدرسها في المنزل ، ولدهشتي ، كنت من الهواة في سهولة من لغة البرمجة هذه ، وجدت أن الاتصال بأي نظام SAP بسيط للغاية ؛ علاوة على ذلك ، يستغرق الأمر 20 دقيقة.
عشرون دقيقة CARL !!!
فقط تخيل أنه يمكنك تكوين واجهة الاتصال بنظام SAP ERP دون استخدام ناقل البيانات وجميع أنواع PI \ XI في مثل هذا الوقت الصغير.
التنفيذ
بعد أن تأكدت أخيرًا من أن هذا حل فعال ويرضي العميل ، درست العديد من المنصات (درستها ، قرأت كل 10 دقائق تقريبًا) ، اخترت منصة Odoo ، من بين أمور أخرى ، لأنها أسهل في النشر ولديها جميع الخصائص الضرورية ، مثل: جيد واجهة ، نظام حقوق الوصول ، تطبيقات الهاتف المتحرك ، خادم البريد ، واجهة قاعدة بيانات جيدة (psql).
علاوة على ذلك ، كل شيء بسيط للغاية.
تثبيت
Odoo على الجهاز الظاهري للعميل (أخذت الإصدار 8) لأنه إنه أبسط في الوقت الحالي ، أعلم أن الإصدار 12 موجود بالفعل ، لكن المهمة لا تتطلب جميع المنتجات الجديدة الرائعة.
تثبيت جميع المكتبات الضرورية ، ولا سيما pyrfc -
رابط لمقال عن التثبيت والاتصال .
علاوة على ذلك ، كان من الضروري فقط كتابة وحدة صغيرة في منصة Odoo نفسها ، للاتصال ، وكان لديها الكثير من الأدوات لتصور البيانات.
الاتصال بنظام العملاء:
from pyrfc import Connection user = 'user' passwd = 'secretuser' saprouter = '/H/192.168.0.140/S/3297' conn = Connection(user=user, passwd=password, mshost='CLient', msserv='192.168.0.140', sysid='01', group="SPACE", saprouter=saprouter, client='900')
اتصل بـ BAPI للحصول على معلومات المستخدم
b_result = conn.call('BAPI_USER_GET_DETAIL', USERNAME = 'user', CACHE_RESULTS = ' ')
تغيير المستخدم
updated_address['CITY'] = u'Moscow' r = conn.call('BAPI_USER_CHANGE', USERNAME='user', ADDRESS=updated_address)
أهم أداة للحصول على البيانات من SAP ، عندما يتعلق الأمر بالجداول ، هي الوحدة الوظيفية RFC_READ_TABLE ، هناك وحدات أخرى في منصة SAP يمكن استدعاؤها ، يجب أن يكون هناك إعداد عليها يشير إلى أنه يمكن استدعاؤها باستخدام RFC.
على سبيل المثال:
from pyrfc import Connection, ABAPApplicationError, ABAPRuntimeError, LogonError, CommunicationError from ConfigParser import ConfigParser from pprint import PrettyPrinter def main(): try: config = ConfigParser() config.read('sapnwrfc.cfg') -
النتيجة
في هذه الصورة ، قائمة التقارير التي يتم تفريغها بهذه الطريقة ، ومثال على أحدها.

الملخص
بشكل عام ، تفتح هذه الطريقة فرصًا كبيرة لاستبدال أدوات SAP باهظة الثمن وغيرها بأدوات أكثر مرونة وانفتاحًا.
يتم أخذ أمثلة التعليمات البرمجية من مصادر مفتوحة. ليس لدي حقوق لاستخدام رمز العميل في المقالة ، ولست مبرمجًا في Python ، فقد أخطأت في مكان ما.
أود أن أضيف أننا نستخدم هذه الأداة بالفعل في مجموعة واسعة جدًا من المهام المتعلقة بحساب مؤشرات الأداء الرئيسية ، وإخراج البيانات إلى مصادر أخرى (مواقع الويب والموردين وقواعد بيانات العملاء) ، وإرسال المعلومات من الأنظمة المستندة إلى البيانات من SAP ، وأكثر من ذلك بكثير.
بشكل عام ، كانت هذه الفرصة بمثابة اكتشاف لي ، إذا كان لدى أي شخص تجربة مماثلة ، فأنا أحب الاستماع.
سكرتير خاص لم أتطرق إلى مشكلة الترخيص ، لذلك لا يمكنني أن أقول بالتأكيد أي شيء حول هذه المشكلة.
شكرا لك!
هبر لينكمع خالص التقدير ، مستشار SAP