نظرًا لأننا غالبًا ما نحتاج إلى الوصول إلى بيانات تشغيل sap، فإننا نقوم بتغليف فئة لسهولة الاتصال. تتطلب ظروف التشغيل تثبيت عميل sap، وستكون هناك واجهة com للوصول إلى sap. لأن المرحلة الأخيرة من com وبسبب مشكلة الربط استخدمت vb.net لتطويره ومشاركته مع الجميع.
الميزات: قم بتعيين الجداول الداخلية الواردة والصادرة لـ SAP مباشرةً إلى DataTable الخاص بـ dotNet لسهولة التشغيل، وتوفير وظيفة تحويل من قائمة الحقول إلى DataTable.
'------------------------------------------------ - --------------
حقوق الطبع والنشر (ج) 2009
جميع الحقوق محفوظة.
'
'اسم الملف: SAP.vb
'وصف الوظيفة: يشمل الوصول الأساسي إلى SAP. توفر هذه الفئة فقط المعلومات الأساسية.
'
"إنشاء شعار: www.cnblogs.com/81 ، 1 ديسمبر 2009
'
"الشعار المعدل: www.cnblogs.com/81 ، 9 ديسمبر 2009
'تعديل الوصف: إضافة عمليات مغلقة للجداول الداخلية الواردة والمعلمات الصادرة وما إلى ذلك.
'------------------------------------------------ - ----------------------
الطبقة العامة SAP
m_sapObject خاص ككائن استدعاء وظيفة عن بعد sap
m_sapFun المحمي كوظيفة sap للكائن
m_sapConnection الخاص ككائن "اتصال بـ SAP
''' <الملخص>
''' منشئ، قم بتمرير المعلومات الأساسية للنسغ
''' </ملخص>
''' <param name="sapSystem">نظام Sap، يمكنك تمرير قيمة فارغة</param>
''' <param name="ApplicationServer">IP لخادم SAP</param>
''' <param name="Client">رقم المجموعة، مثل 800</param>
''' <param name="SystemNumber">رقم النظام، مثل 00</param>
''' <تعليقات></تعليقات>
Public Sub جديد (ByVal sapSystem كسلسلة، ByVal ApplicationServer كسلسلة، عميل ByVal كسلسلة، ByVal SystemNumber كسلسلة)
Me.m_sapObject = CreateObject("SAP.Functions")
Me.m_sapConnection = Me.m_sapObject.Connection()
إذا كانت String.IsNullOrEmpty(sapSystem) = خطأ إذن
Me.m_sapConnection.System = sapSystem
نهاية إذا
Me.m_sapConnection.ApplicationServer = ApplicationServer
Me.m_sapConnection.Client = Client
Me.m_sapConnection.SystemNumber = SystemNumber
نهاية الفرعية
''' <الملخص>
''' قم بتسجيل الدخول إلى SAP، وقم بإرجاع True في حالة النجاح، وقم بإرجاع False في حالة الفشل
''' </ملخص>
''' <param name="User">المستخدم</param>
''' <param name="Password">كلمة المرور</param>
''' <param name="Language">اللغة، مثل ZH وEN وما إلى ذلك، يمكنك تمريرها خالية</param>
''' <returns>ما إذا كان تسجيل الدخول ناجحًا</returns>
''' <تعليقات></تعليقات>
الوظيفة العامة ConnectToSAP (مستخدم ByVal كسلسلة، كلمة مرور ByVal كسلسلة، لغة ByVal كسلسلة) كسلسلة منطقية
Me.m_sapConnection.user = User
Me.m_sapConnection.Password = كلمة المرور
إذا كانت String.IsNullOrEmpty(Language) = خطأ، إذن
Me.m_sapConnection.Language = Language
آخر
Me.m_sapConnection.Language = "EN"
نهاية إذا
Me.m_sapObject.AutoLogon = صحيح "تسجيل الدخول التلقائي".
إرجاع Me.m_sapObject.Connection.logon(0, True) "ما إذا كان تسجيل الدخول ناجحًا"
وظيفة النهاية
''' <الملخص>
''' قم بتعيين اسم وظيفة sap المراد استدعاؤها
''' </ملخص>
''' <param name="sapFuncName">اسم وظيفة sap</param>
''' <تعليقات></تعليقات>
Public Sub قم بتعيين اسم وظيفة SAP البعيدة (ByVal sapFuncName As String)
Me.m_sapFun = Me.m_sapObject.Add(sapFuncName)
إذا كان m_sapFun لا شيء إذن
طرح استثناء جديد ("اسم وظيفة Sap البعيدة غير صالح:" + sapFuncName)
نهاية إذا
نهاية الفرعية
''' <الملخص>
''' قم بتعيين معلمات المكالمة الواردة لوظيفة Sap
''' </ملخص>
''' <param name="paramName">اسم المعلمة</param>
''' <param name="paramValue">قيمة المعلمة</param>
''' <تعليقات></تعليقات>
معلمات المجموعة الفرعية العامة (ByVal paramName As String، ByVal paramValue As Object)
خافت المعلمة ككائن
المعلمة = Me.m_sapFun.Exports(paramName)
إذا كانت المعلمة لا شيء إذن
طرح استثناء جديد ("اسم المعلمة لوظيفة Sap البعيدة غير صالح:" + paramName)
نهاية إذا
param.Value = paramValue
نهاية الفرعية
''' <الملخص>
''' قم بتعيين الجدول الداخلي الوارد لـ sap واستخدم dt_value لمحاكاة هذا الجدول الداخلي
''' </ملخص>
''' <param name="SapTableName">اسم الجدول الداخلي الذي تم تمريره بواسطة وظيفة sap</param>
''' <param name="dt_value">يجب أن يكون DataTable الذي تمت محاكاته متسقًا مع اسم الحقل الذي تم تمريره إلى الجدول الداخلي</param>
''' <تعليقات></تعليقات>
يقوم Public Sub بتعيين الجدول الداخلي الوارد (ByVal SapTableName As String، ByVal dt_value As DataTable)
خافت بيانات sapdata حيث يمر كائن sap في الجدول الداخلي
Dim saprow As Object 'sap يمر في صف من الجدول الداخلي
خافت العاصمة كعمود البيانات
مؤشر خافت كعدد صحيح
sapdata = Me.m_sapFun.Tables(SapTableName)
للفهرس = 0 إلى dt_value.Rows.Count - 1 'قم بتكرار الجدول وتعيين قيم للجدول الداخلي الذي تم تمريره إلى sap
saprow = sapdata.Rows.Add() 'أضف صفًا جديدًا من السجلات في الجدول الداخلي، وقم بتعيين قيم للسجلات الموجودة في الجدول الداخلي أدناه.
لكل العاصمة في dt_value.Columns
saprow(dc.ColumnName) = dt_value.Rows(index)(dc.ColumnName).ToString()
التالي
التالي
نهاية الفرعية
''' <الملخص>
''' بعد اكتمال إعداد المعلمة، قم بتنفيذ استدعاء الوظيفة
''' </ملخص>
''' <تعليقات></تعليقات>
استدعاء وظيفة تنفيذ فرعي عام ()
إذا كان Me.m_sapFun.Call() = خطأ إذن
طرح استثناء جديد ("فشل استدعاء وظيفة Sap عن بعد.") "خطأ في جلب البيانات من SAP، الخروج من الوظيفة."
نهاية إذا
نهاية الفرعية
''' <الملخص>
''' إنشاء DataTable للحقول المحددة بناءً على قائمة الحقول (مفصولة بفواصل)
''' </ملخص>
''' <param name="fields">قائمة الحقول (مفصولة بفواصل)</param>
''' <returns>جدول فارغ</returns>
''' <تعليقات></تعليقات>
الوظيفة العامة إنشاء جدول فارغ (حقول ByVal كسلسلة) كـ DataTable
Dim dt كجدول بيانات جديد
خافت السلاسل كسلسلة ()
خافت كسلسلة
strs = الحقول.سبليت("،")
لكل ثانية في السلاسل
dt.Columns.Add(s.Trim())
التالي
العودة د
وظيفة النهاية
''' <الملخص>
''' احصل على قيمة المعلمة الصادرة لـ sap
''' </ملخص>
''' <param name="paramName">اسم المعلمة الصادرة</param>
''' <returns>قيمة المعلمة الصادرة</returns>
''' <تعليقات></تعليقات>
الوظيفة العامة احصل على معلمات Sap الصادرة (ByVal paramName As String) كسلسلة
معلمة خافتة ككائن
المعلمة = Me.m_sapFun.Imports(paramName)
إذا كانت المعلمة لا شيء إذن
طرح استثناء جديد("اسم المعلمة لوظيفة Sap البعيدة غير صالح:" +paramName)
نهاية إذا
إذا كانت المعلمة.القيمة لا شيء إذن
يعود ""
آخر
إرجاع المعلمة.Value.ToString()
نهاية إذا
وظيفة النهاية
''' <الملخص>
''' تحويل الجدول الداخلي الصادر لبنية استدعاء دالة sap إلى جدول dotNet
''' </ملخص>
''' <param name="fields">قائمة الحقول الصادرة للجدول الداخلي، مفصولة بفواصل</param>
''' <param name="SapTableName">اسم جدول الجدول الداخلي الصادر لـ sap</param>
''' <returns>جدول الدوت نت الذي تم تصديره من جدول sap الداخلي، جميع الحقول من نوع السلسلة</returns>
''' <تعليقات></تعليقات>
الوظيفة العامة احصل على بيانات جدول Sap الصادرة (حقول ByVal كسلسلة، ByVal SapTableName كسلسلة، ByVal ما إذا كان سيتم إزالة المسافات البادئة والزائدة كـ منطقية) كـ DataTable
'إنشاء جدول حسب قائمة الحقول، ويتم فصل قائمة الحقول في الحقول بفواصل
خافت dt كـ DataTable
dt = Me.إنشاء جدول (حقول) فارغ.
'اقرأ البيانات من جدول sap، وقم بتكرار البيانات التي تم الحصول عليها في sap، ثم اكتبها في dt
خافت sapdata ككائن
ديم سابرو ككائن
Dim dr As DataRow "تمت إضافة صف جديد من البيانات."
خافت العاصمة كعمود البيانات
sapdata = Me.m_sapFun.Tables(SapTableName)
لكل saprow في sapdata.Rows
الدكتور = dt.NewRow()
لكل العاصمة في dt.Columns
إذا كان ما إذا كان سيتم إزالة المسافات البادئة والزائدة = صحيح إذن
الدكتور (dc.ColumnName) = saprow (dc.ColumnName).ToString ().Trim ()
آخر
الدكتور (dc.ColumnName) = saprow (dc.ColumnName).ToString ()
نهاية إذا
التالي
dt.Rows.Add(dr)
التالي
العودة د
وظيفة النهاية
''' <الملخص>
''' أغلق اتصال النسغ
''' </ملخص>
''' <تعليقات></تعليقات>
قطع الاتصال الفرعي العام SAP()
Me.m_sapConnection.logoff()
نهاية الفرعية
نهاية الفصل