SAP 작업 데이터에 액세스해야 하는 경우가 많기 때문에 작업 조건에 따라 SAP 클라이언트를 설치해야 합니다. 이 인터페이스는 이 com을 통해 SAP에 액세스합니다. com의 후기 단계에서는 바인딩 문제 때문에 vb.net을 사용하여 개발하고 모든 사람과 공유했습니다.
특징: 간편한 조작을 위해 SAP의 들어오고 나가는 내부 테이블을 dotNet의 DataTable에 직접 매핑하고, 필드 목록에서 DataTable로의 변환 기능을 제공합니다.
'------------------------------------------------ - --------------
' 저작권 (C) 2009
'모든 권리 보유.
'
'파일 이름: SAP.vb
'함수 설명: SAP에 대한 기본 액세스를 캡슐화합니다. 이 클래스는 이 클래스에서 상속되는 SAP RFC 클래스에 대한 특정 액세스만 제공합니다.
'
'로고 만들기: www.cnblogs.com/81 , 2009년 12월 1일
'
'수정된 로고: www.cnblogs.com/81 , 2009년 12월 9일
'설명 수정: 들어오는 내부 테이블, 나가는 매개변수 등에 대해 닫힌 작업을 추가합니다.
'------------------------------------------------ - ---------
공개 클래스 SAP
Private m_sapObject As Object 'sap 원격 함수 호출 객체
보호된 m_sapFun As Object 'sap 함수
Private m_sapConnection As Object 'SAP에 대한 연결
''' <요약>
''' 생성자, SAP의 기본 정보 전달
''' </summary>
''' <param name="sapSystem">Sap 시스템, null을 전달할 수 있습니다</param>
''' <param name="ApplicationServer">SAP 서버 IP</param>
''' <param name="Client">그룹 번호(예: 800)</param>
''' <param name="SystemNumber">시스템 번호(예: 00)</param>
''' <비고></비고>
Public Sub New(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 = 애플리케이션서버
Me.m_sapConnection.Client = 클라이언트
Me.m_sapConnection.SystemNumber = 시스템 번호
서브 끝
''' <요약>
''' SAP에 로그인하고, 성공하면 True를 반환하고, 실패하면 False를 반환합니다.
''' </summary>
''' <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 함수의 이름을 설정합니다.
''' </summary>
''' <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 함수의 수신 전화 매개변수를 설정합니다.
''' </summary>
''' <param name="paramName">매개변수 이름</param>
''' <param name="paramValue">매개변수 값</param>
''' <비고></비고>
공용 하위 세트 매개변수(ByVal paramName As String, ByVal paramValue As Object)
Dim 매개변수를 객체로
param = Me.m_sapFun.Exports(paramName)
param이 아무것도 아닌 경우
새로운 예외 발생("Sap 원격 함수의 매개변수 이름이 잘못되었습니다: " + paramName)
종료 조건
param.Value = paramValue
서브 끝
''' <요약>
''' SAP의 수신 내부 테이블을 설정하고 dt_value를 사용하여 이 내부 테이블을 시뮬레이션합니다.
''' </summary>
''' <param name="SapTableName">Sap 함수가 전달한 내부 테이블의 이름</param>
''' <param name="dt_value">시뮬레이션된 DataTable은 내부 테이블에 전달된 필드 이름과 일치해야 합니다.</param>
''' <비고></비고>
Public Sub는 들어오는 내부 테이블을 설정합니다(ByVal SapTableName As String, ByVal dt_value As DataTable).
Dim sapdata As Object 'sap이 내부 테이블에 전달됨
Dim saprow As Object 'sap은 내부 테이블의 행을 통과합니다.
DC를 DataColumn으로 희미하게 표시
Dim 인덱스를 정수로
sapdata = Me.m_sapFun.Tables(SapTableName)
For index = 0 To dt_value.Rows.Count - 1 '테이블을 반복하고 SAP에 전달된 내부 테이블에 값을 할당합니다.
saprow = sapdata.Rows.Add() '내부 테이블에 새로운 레코드 행을 추가하고, 아래 내부 테이블의 레코드에 값을 할당합니다.
dt_value.Columns의 각 DC에 대해
saprow(dc.ColumnName) = dt_value.Rows(index)(dc.ColumnName).ToString()
다음
다음
서브 끝
''' <요약>
''' 매개변수 설정이 완료된 후 함수 호출을 실행합니다.
''' </summary>
''' <비고></비고>
공개 하위 실행 함수 호출()
Me.m_sapFun.Call() = False인 경우
Throw New Exception("Sap 원격 함수 호출이 실패했습니다.") 'SAP에서 데이터를 가져오는 중 오류가 발생하여 기능을 종료합니다.
종료 조건
서브 끝
''' <요약>
''' 필드 목록을 기반으로 지정된 필드의 DataTable을 만듭니다(쉼표로 구분).
''' </summary>
''' <param name="fields">필드 목록(쉼표로 구분)</param>
''' <returns>빈 테이블</returns>
''' <비고></비고>
공용 함수 DataTable로 빈 테이블(ByVal 필드를 문자열로) 생성
새 데이터 테이블로 Dim dt
문자열을 문자열로 희미하게()
Dim은 문자열로
strs = 필드.분할(",")
각 s에 대해 strs에서
dt.열.추가(s.Trim())
다음
반환 dt
기능 종료
''' <요약>
''' SAP의 나가는 매개변수 값을 가져옵니다.
''' </summary>
''' <param name="paramName">보내는 매개변수 이름</param>
''' <returns>나가는 매개변수 값</returns>
''' <비고></비고>
공용 함수 Sap 나가는 매개변수(ByVal paramName As String)를 문자열로 가져옵니다.
Dim 매개변수를 객체로
param = Me.m_sapFun.Imports(paramName)
param이 아무것도 아닌 경우
새로운 예외 발생("Sap 원격 함수의 매개변수 이름이 잘못되었습니다: " + paramName)
종료 조건
param.Value가 아무것도 아닌 경우
반품 ""
또 다른
param.Value.ToString()을 반환합니다.
종료 조건
기능 종료
''' <요약>
''' SAP 함수 호출 구조의 나가는 내부 테이블을 dotNet 테이블로 변환합니다.
''' </summary>
''' <param name="fields">쉼표로 구분된 내부 테이블의 Sap 나가는 필드 목록</param>
''' <param name="SapTableName">Sap 나가는 내부 테이블의 테이블 이름</param>
''' <returns>Sap 내부 테이블에서 내보낸 dotnet 테이블, 모든 필드는 문자열 유형입니다.</returns>
''' <비고></비고>
공용 함수 Sap 나가는 테이블 데이터 가져오기(ByVal 필드를 문자열로, ByVal SapTableName을 문자열로, ByVal 선행 및 후행 공백을 부울로 제거할지 여부) As DataTable
'필드 목록으로 테이블을 생성합니다. 필드의 필드 목록은 쉼표로 구분됩니다.
데이터 테이블로 Dim dt
dt = 나. 빈 테이블(필드)을 만듭니다.
'sap 테이블에서 데이터를 읽고, sap에서 얻은 데이터를 반복하여 dt에 씁니다.
희미한 SAPData를 객체로
희미한 수액을 개체로
Dim dr As DataRow '새 데이터 행이 추가되었습니다.
DC를 DataColumn으로 희미하게 표시
sapdata = Me.m_sapFun.Tables(SapTableName)
sapdata.Rows의 각 수액에 대해
dr = dt.NewRow()
dt.Columns의 각 DC에 대해
선행 및 후행 공백 제거 여부 = True인 경우
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString().Trim()
또 다른
dr(dc.ColumnName) = saprow(dc.ColumnName).ToString()
종료 조건
다음
dt.행.추가(dr)
다음
반환 dt
기능 종료
''' <요약>
''' SAP 연결을 닫습니다.
''' </summary>
''' <비고></비고>
공용 하위 DisConnectSAP()
Me.m_sapConnection.logoff()
서브 끝
수업 종료