Karena kita sering perlu mengakses data operasi sap, kita merangkum kelas untuk memudahkan pemanggilan. Kondisi operasi memerlukan instalasi klien sap setelah diinstal, akan ada antarmuka com. karena tahap com selanjutnya Karena masalah pengikatan, saya menggunakan vb.net untuk mengembangkannya dan membaginya dengan semua orang.
Fitur: Langsung memetakan tabel internal SAP yang masuk dan keluar ke DataTable dotNet untuk pengoperasian yang mudah, dan menyediakan fungsi konversi dari daftar bidang ke DataTable.
'------------------------------------------------ - --------------
' Hak Cipta (C) 2009
' semua hak dilindungi undang-undang.
'
'Nama file: SAP.vb
'Deskripsi fungsi: Merangkum akses dasar ke SAP. Kelas ini hanya menyediakan informasi dasar. Akses khusus ke kelas SAP RFC yang diwarisi dari kelas ini.
'
'Buat logo: www.cnblogs.com/81 , 1 Desember 2009
'
'Logo yang dimodifikasi: www.cnblogs.com/81 , 9 Desember 2009
'Ubah deskripsi: Tambahkan operasi tertutup untuk tabel internal yang masuk, parameter keluar, dll.
'------------------------------------------------ - ----------------------
SAP Kelas Publik
Private m_sapObject As Object 'sap objek panggilan fungsi jarak jauh
Dilindungi m_sapFun Sebagai fungsi sap Objek
Private m_sapConnection Sebagai Objek 'Koneksi ke SAP
''' <ringkasan>
''' konstruktor, sampaikan informasi dasar sap
''' </ringkasan>
''' <param name="sapSystem">Sistem SAP, Anda dapat meneruskan null</param>
''' <param name="ApplicationServer">IP server SAP</param>
''' <param name="Client">Nomor grup, misalnya 800</param>
''' <param name="SystemNumber">Nomor sistem, misalnya 00</param>
''' <keterangan></keterangan>
Sub Publik Baru (ByVal sapSystem Sebagai String, ByVal ApplicationServer Sebagai String, Klien ByVal Sebagai String, ByVal SystemNumber Sebagai String)
Me.m_sapObject = CreateObject("SAP.Fungsi")
Me.m_sapConnection = Me.m_sapObject.Connection()
Jika String.IsNullOrEmpty(sapSystem) = False Maka
Me.m_sapConnection.System = sapSystem
Akhiri Jika
Me.m_sapConnection.ApplicationServer = Server Aplikasi
Me.m_sapConnection.Client = Klien
Me.m_sapConnection.SystemNumber = SystemNumber
Akhiri Sub
''' <ringkasan>
''' Masuk ke SAP, kembalikan True jika berhasil, kembalikan False jika gagal
''' </ringkasan>
''' <param name="Pengguna">Pengguna</param>
''' <param name="Password">Sandi</param>
''' <param name="Language">Bahasa, seperti ZH, EN, dll., Anda dapat meneruskan null</param>
''' <returns>Apakah login berhasil</returns>
''' <keterangan></keterangan>
Fungsi Publik ConnectToSAP (Pengguna ByVal Sebagai String, Kata Sandi ByVal Sebagai String, Bahasa ByVal Sebagai String) Sebagai Boolean
Me.m_sapConnection.user = Pengguna
Me.m_sapConnection.Password = Kata Sandi
Jika String.IsNullOrEmpty(Bahasa) = Salah Maka
Me.m_sapConnection.Language = Bahasa
Kalau tidak
Me.m_sapConnection.Bahasa = "EN"
Akhiri Jika
Me.m_sapObject.AutoLogon = Benar 'Login otomatis
Return Me.m_sapObject.Connection.logon(0, True) 'Apakah login berhasil
Fungsi Akhir
''' <ringkasan>
''' Tetapkan nama fungsi sap yang akan dipanggil
''' </ringkasan>
''' <param name="sapFuncName">nama fungsi sap</param>
''' <keterangan></keterangan>
Sub Publik Tetapkan nama fungsi jarak jauh SAP (ByVal sapFuncName As String)
Me.m_sapFun = Me.m_sapObject.Add(sapFuncName)
Jika m_sapFun Bukan Apa-apa
Lempar Pengecualian Baru("Nama fungsi jarak jauh SAP tidak valid: " + sapFuncName)
Akhiri Jika
Akhiri Sub
''' <ringkasan>
''' Mengatur parameter panggilan masuk dari fungsi Sap
''' </ringkasan>
''' <param name="paramName">Nama parameter</param>
''' <param name="paramValue">Nilai parameter</param>
''' <keterangan></keterangan>
Parameter Sub Kumpulan Publik (ByVal paramName Sebagai String, ByVal paramValue Sebagai Objek)
Redupkan param Sebagai Objek
param = Me.m_sapFun.Exports(paramName)
Jika param Bukan Apa-apa, Maka
Throw New Exception("Nama parameter fungsi jarak jauh Sap tidak valid: " + paramName)
Akhiri Jika
param.Nilai = paramNilai
Akhiri Sub
''' <ringkasan>
''' Atur tabel internal sap dan gunakan dt_value untuk mensimulasikan tabel internal ini
''' </ringkasan>
''' <param name="SapTableName">Nama tabel internal yang diteruskan oleh fungsi sap</param>
''' <param name="dt_value">DataTable yang disimulasikan harus konsisten dengan nama bidang yang diteruskan ke tabel internal</param>
''' <keterangan></keterangan>
Sub Publik menyetel tabel internal yang masuk (ByVal SapTableName As String, ByVal dt_value As DataTable)
Redupkan sapdata Saat Object 'sap lewat di tabel internal
Redupkan saprow Saat Object 'sap lewat di baris tabel internal
Redupkan dc Sebagai DataColumn
Indeks redup Sebagai Integer
sapdata = Me.m_sapFun.Tables(SapTableName)
Untuk indeks = 0 Ke dt_value.Rows.Count - 1 'Ulangi tabel dan tetapkan nilai ke tabel internal yang diteruskan ke sap
saprow = sapdata.Rows.Add() 'Tambahkan baris record baru di tabel internal, dan tetapkan nilai ke record di tabel internal di bawah.
Untuk Setiap dc Di dt_value.Columns
saprow(dc.ColumnName) = dt_value.Rows(index)(dc.ColumnName).ToString()
Berikutnya
Berikutnya
Akhiri Sub
''' <ringkasan>
''' Setelah pengaturan parameter selesai, jalankan pemanggilan fungsi
''' </ringkasan>
''' <keterangan></keterangan>
Panggilan fungsi Eksekusi Sub Publik()
Jika Me.m_sapFun.Call() = Salah Maka
Throw New Exception("Panggilan fungsi jarak jauh SAP gagal.") 'Kesalahan dalam mengambil data dari SAP, keluar dari fungsi
Akhiri Jika
Akhiri Sub
''' <ringkasan>
''' Buat DataTable bidang tertentu berdasarkan daftar bidang (dipisahkan koma)
''' </ringkasan>
''' <param name="fields">Daftar kolom (dipisahkan koma)</param>
''' <returns>Tabel kosong</returns>
''' <keterangan></keterangan>
Fungsi Publik Buat tabel kosong (bidang ByVal Sebagai String) Sebagai DataTable
Redupkan dt Sebagai DataTable Baru
Redupkan strs Sebagai String()
Redupkan Sebagai String
strs = bidang.Split(",")
Untuk Setiap s Dalam strs
dt.Kolom.Tambahkan(s.Trim())
Berikutnya
Kembalikan dt
Fungsi Akhir
''' <ringkasan>
''' Dapatkan nilai parameter keluar dari sap
''' </ringkasan>
''' <param name="paramName">Nama parameter keluar</param>
''' <returns>Nilai parameter keluar</returns>
''' <keterangan></keterangan>
Fungsi Publik Dapatkan parameter keluar Sap (ByVal paramName As String) Sebagai String
Redupkan param Sebagai Objek
param = Me.m_sapFun.Imports(paramName)
Jika param Bukan Apa-apa, Maka
Throw New Exception("Nama parameter fungsi jarak jauh Sap tidak valid: " + paramName)
Akhiri Jika
Jika param.Value Bukan Apa-apa, Maka
Kembali ""
Kalau tidak
Kembalikan param.Value.ToString()
Akhiri Jika
Fungsi Akhir
''' <ringkasan>
''' Ubah tabel internal keluar dari struktur panggilan fungsi sap menjadi tabel dotNet
''' </ringkasan>
''' <param name="fields">Sap daftar kolom keluar dari tabel internal, dipisahkan dengan koma</param>
''' <param name="SapTableName">Nama tabel dari tabel internal sap keluar</param>
''' <returns>Tabel dotnet diekspor dari tabel internal sap, semua bidang bertipe string</returns>
''' <keterangan></keterangan>
Fungsi Publik Dapatkan data tabel keluar Sap (bidang ByVal Sebagai String, ByVal SapTableName Sebagai String, ByVal apakah akan menghapus spasi di depan dan di belakang Sebagai Boolean) Sebagai DataTable
'Buat tabel berdasarkan daftar field, daftar field dalam field dipisahkan dengan koma
Redupkan dt Sebagai DataTable
dt = Saya. Buat tabel kosong (bidang)
'Baca data dari tabel sap, ulangi data yang diperoleh di sap, dan tulis ke dt
Redupkan sapdata Sebagai Objek
Redupkan pohon cemara Sebagai Objek
Redupkan dr As DataRow 'Baris data baru ditambahkan
Redupkan dc Sebagai DataColumn
sapdata = Me.m_sapFun.Tables(SapTableName)
Untuk Setiap saprow Di sapdata.Rows
dr = dt.Baris Baru()
Untuk Setiap dc Di dt.Columns
Jika apakah akan menghapus spasi di awal dan akhir = Benar, Maka
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString().Trim()
Kalau tidak
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString()
Akhiri Jika
Berikutnya
dt.Baris.Tambahkan(dr)
Berikutnya
Kembalikan dt
Fungsi Akhir
''' <ringkasan>
''' Tutup sambungan sapnya
''' </ringkasan>
''' <keterangan></keterangan>
Pemutusan Sub PublikSAP()
Saya.m_sapConnection.logoff()
Akhiri Sub
Kelas Akhir