เนื่องจากเราจำเป็นต้องเข้าถึงข้อมูลการทำงานของ sap บ่อยครั้ง เราจึงสรุปคลาสเพื่อให้เรียกได้ง่าย เงื่อนไขการทำงานจำเป็นต้องมีการติดตั้ง sap client หลังจากติดตั้ง sap client แล้ว จะมีอินเทอร์เฟซ com เข้าถึง sap ผ่าน com นี้ เพราะช่วงหลังของคอม เพราะปัญหาการผูกผมจึงใช้ vb.net พัฒนาและแชร์กับทุกคน
คุณสมบัติ: แมปตารางภายในขาเข้าและขาออกของ SAP โดยตรงกับ DataTable ของ dotNet เพื่อให้ใช้งานง่าย และจัดเตรียมฟังก์ชันการแปลงจากรายการฟิลด์ไปยัง DataTable
'------------------------------------------------ - ---------------
' ลิขสิทธิ์ (C) 2009
' สงวนลิขสิทธิ์.
-
'ชื่อไฟล์: SAP.vb
'คำอธิบายฟังก์ชัน: สรุปการเข้าถึง SAP ขั้นพื้นฐาน คลาสนี้ให้ข้อมูลพื้นฐานเท่านั้น การเข้าถึงคลาส SAP RFC ที่สืบทอดมาจากคลาสนี้
-
'สร้างโลโก้: www.cnblogs.com/81 , 1 ธันวาคม 2552
-
'แก้ไขโลโก้: www.cnblogs.com/81 , 9 ธันวาคม 2552
'แก้ไขคำอธิบาย: เพิ่มการดำเนินการแบบปิดสำหรับตารางภายในขาเข้า, พารามิเตอร์ขาออก ฯลฯ
'------------------------------------------------ - ----------------------
SAP คลาสสาธารณะ
m_sapObject ส่วนตัวในฐานะวัตถุ 'sap วัตถุการเรียกใช้ฟังก์ชันระยะไกล
ป้องกัน m_sapFun เป็นฟังก์ชัน sap ของวัตถุ
m_sapConnection ส่วนตัวเป็นวัตถุ 'การเชื่อมต่อกับ SAP'
''' <สรุป>
ตัวสร้าง ''' ส่งผ่านข้อมูลพื้นฐานของ sap
''' </สรุป>
''' <param name="sapSystem">ระบบ Sap คุณสามารถส่งผ่านเป็นโมฆะได้</param>
''' <param name="ApplicationServer">IP เซิร์ฟเวอร์ SAP</param>
''' <param name="Client">หมายเลขกลุ่ม เช่น 800</param>
''' <param name="SystemNumber">หมายเลขระบบ เช่น 00</param>
''' <หมายเหตุ></หมายเหตุ>
ใหม่สาธารณะย่อย (ByVal sapSystem As String, ByVal ApplicationServer As String, ByVal Client As String, ByVal SystemNumber As String)
Me.m_sapObject = CreateObject("SAP.Functions")
Me.m_sapConnection = Me.m_sapObject.Connection()
ถ้า String.IsNullOrEmpty(sapSystem) = False จากนั้น
Me.m_sapConnection.System = sapSystem
สิ้นสุดถ้า
Me.m_sapConnection.ApplicationServer = ApplicationServer
Me.m_sapConnection.Client = ไคลเอนต์
Me.m_sapConnection.SystemNumber = SystemNumber
จบหมวดย่อย
''' <สรุป>
''' เข้าสู่ระบบ SAP คืนค่า True หากสำเร็จ คืนค่า False หากล้มเหลว
''' </สรุป>
''' <param name="User">ผู้ใช้</param>
''' <param name="Password">รหัสผ่าน</param>
''' <param name="Language">ภาษา เช่น ZH, EN เป็นต้น คุณสามารถผ่านค่า null ได้</param>
''' <returns>การเข้าสู่ระบบสำเร็จหรือไม่</returns>
''' <หมายเหตุ></หมายเหตุ>
ฟังก์ชั่นสาธารณะ ConnectToSAP (ผู้ใช้ ByVal เป็นสตริง, รหัสผ่าน ByVal เป็นสตริง, ภาษา ByVal เป็นสตริง) เป็นบูลีน
Me.m_sapConnection.user = ผู้ใช้
Me.m_sapConnection.Password = รหัสผ่าน
ถ้า String.IsNullOrEmpty(Language) = False แล้ว
Me.m_sapConnection.Language = ภาษา
อื่น
Me.m_sapConnection.Language = "EN"
สิ้นสุดถ้า
Me.m_sapObject.AutoLogon = True 'เข้าสู่ระบบอัตโนมัติ'
Return 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)
Dim param As Object
param = Me.m_sapFun.Exports (ชื่อพารามิเตอร์)
ถ้าพารามิเตอร์ไม่มีอะไรแล้ว
โยนข้อยกเว้นใหม่ ("ชื่อพารามิเตอร์ของฟังก์ชันระยะไกล Sap ไม่ถูกต้อง: " + paramName)
สิ้นสุดถ้า
param.Value = ค่าพารามิเตอร์
จบหมวดย่อย
''' <สรุป>
''' ตั้งค่าตารางภายในที่เข้ามาของ 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)
Dim sapdata เมื่อ Object 'sap ส่งผ่านในตารางภายใน
Dim saprow เมื่อ Object 'sap ผ่านไปในแถวของตารางภายใน
หรี่ dc เป็น DataColumn
ดัชนีสลัวเป็นจำนวนเต็ม
sapdata = Me.m_sapFun.Tables (SapTableName)
สำหรับดัชนี = 0 ถึง dt_value.Rows.Count - 1 'วนตารางและกำหนดค่าให้กับตารางภายในที่ส่งผ่านไปยัง sap
saprow = sapdata.Rows.Add() 'เพิ่มแถวใหม่ของระเบียนในตารางภายใน และกำหนดค่าให้กับระเบียนในตารางภายในด้านล่าง
สำหรับแต่ละ dc ใน dt_value.Columns
saprow(dc.ColumnName) = dt_value.Rows(ดัชนี)(dc.ColumnName).ToString()
ต่อไป
ต่อไป
จบหมวดย่อย
''' <สรุป>
''' หลังจากการตั้งค่าพารามิเตอร์เสร็จสิ้น ให้ดำเนินการเรียกใช้ฟังก์ชัน
''' </สรุป>
''' <หมายเหตุ></หมายเหตุ>
การเรียกใช้ฟังก์ชันการดำเนินการย่อยสาธารณะ ()
ถ้า Me.m_sapFun.Call() = False แล้ว
โยนข้อยกเว้นใหม่ ("การเรียกใช้ฟังก์ชันระยะไกลของ Sap ล้มเหลว") 'ข้อผิดพลาดในการดึงข้อมูลจาก SAP ฟังก์ชันออก
สิ้นสุดถ้า
จบหมวดย่อย
''' <สรุป>
''' สร้าง DataTable ของเขตข้อมูลที่ระบุตามรายการเขตข้อมูล (คั่นด้วยเครื่องหมายจุลภาค)
''' </สรุป>
''' <param name="fields">รายการฟิลด์ (คั่นด้วยเครื่องหมายจุลภาค)</param>
''' <returns>ตารางว่าง</returns>
''' <หมายเหตุ></หมายเหตุ>
ฟังก์ชั่นสาธารณะ สร้างตารางว่าง (เขตข้อมูล ByVal เป็นสตริง) เป็น DataTable
Dim dt เป็น DataTable ใหม่
Dim strs As String()
Dim เป็นสตริง
strs = ฟิลด์แยก (",")
สำหรับแต่ละ s In strs
dt.Columns.Add(s.Trim())
ต่อไป
กลับ
ฟังก์ชันสิ้นสุด
''' <สรุป>
''' รับค่าพารามิเตอร์ขาออกของ SAP
''' </สรุป>
''' <param name="paramName">ชื่อพารามิเตอร์ขาออก</param>
''' <returns>ค่าพารามิเตอร์ขาออก</returns>
''' <หมายเหตุ></หมายเหตุ>
ฟังก์ชั่นสาธารณะรับพารามิเตอร์ขาออก Sap (ByVal paramName As String) As String
Dim param As Object
param = Me.m_sapFun.Imports (ชื่อพารามิเตอร์)
ถ้าพารามิเตอร์ไม่มีอะไรแล้ว
โยนข้อยกเว้นใหม่ ("ชื่อพารามิเตอร์ของฟังก์ชันระยะไกล Sap ไม่ถูกต้อง: " + paramName)
สิ้นสุดถ้า
ถ้า param.Value ไม่มีอะไรแล้ว
กลับ ""
อื่น
กลับ param.Value.ToString()
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
''' <สรุป>
''' แปลงตารางภายในขาออกของโครงสร้างการเรียกฟังก์ชัน sap ให้เป็นตาราง dotNet
''' </สรุป>
''' <param name="fields">Sap รายการฟิลด์ขาออกของตารางภายใน คั่นด้วยเครื่องหมายจุลภาค</param>
''' <param name="SapTableName">ชื่อตารางของตารางภายใน sap ขาออก</param>
''' <ผลตอบแทน>ตาราง dotnet ที่ส่งออกจากตารางภายใน sap ฟิลด์ทั้งหมดเป็นประเภทสตริง</returns>
''' <หมายเหตุ></หมายเหตุ>
ฟังก์ชั่นสาธารณะรับข้อมูลตารางขาออกของ Sap (ฟิลด์ ByVal As String, ByVal SapTableName As String, ByVal ไม่ว่าจะลบช่องว่างนำหน้าและต่อท้าย As Boolean) As DataTable
'สร้างตารางตามรายการเขตข้อมูล รายการเขตข้อมูลในเขตข้อมูลจะถูกคั่นด้วยเครื่องหมายจุลภาค
Dim dt เป็น DataTable
dt = ฉัน สร้างตารางว่าง (ฟิลด์)
'อ่านข้อมูลจากตาราง sap วนข้อมูลที่ได้รับใน sap และเขียนลงใน dt
Dim sapdata As Object
หรี่แสงเป็นวัตถุ
Dim dr As DataRow 'เพิ่มแถวข้อมูลใหม่แล้ว
หรี่ dc เป็น DataColumn
sapdata = Me.m_sapFun.Tables (SapTableName)
สำหรับ saprow แต่ละตัวใน sapdata.Rows
ดร. = dt.NewRow()
สำหรับแต่ละ dc ใน dt.Columns
ถ้าจะลบช่องว่างนำหน้าและต่อท้าย = True แล้ว
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString().Trim()
อื่น
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString()
สิ้นสุดถ้า
ต่อไป
dt.Rows.Add(ดร)
ต่อไป
กลับ
ฟังก์ชันสิ้นสุด
''' <สรุป>
''' ปิดการเชื่อมต่อ SAP
''' </สรุป>
''' <หมายเหตุ></หมายเหตุ>
DisConnectSAP ย่อยสาธารณะ ()
Me.m_sapConnection.logoff()
จบหมวดย่อย
จบคลาส