ASP에서 SAP에 있는 Fuction 호출
SAP -> BizTalk Server -> MS-SQL 2000 으로 되어 있는 구조를 BizTalk에 문제로
이참에 RFC를 구현 해 보았다
참고를 위하여 작성하며 구현 절차는 아래와 같다.
1. Server에 SAP GUI 설치
2. 아래 소스 참고하여 확인 ASP 용으로 변경
더보기
ASP에서 SAP에 있는 Fuction 호출
SAP -> BizTalk Server -> MS-SQL 2000 으로 되어 있는 구조를 BizTalk에 문제로
이참에 RFC를 구현 해 보았다
참고를 위하여 작성하며 구현 절차는 아래와 같다.
1. Server에 SAP GUI 설치
2. 아래 소스 참고하여 확인 ASP 용으로 변경
더보기
Public Function FUNC_CALL ()
'------------------------------------------------- -------------
'변수 선언 부분
'--------------------------------------------- -----------------
'R / 3 연결 변수 - - - - - - - - - - - - - - - - -
Dim R3 As Object 'R / 3 연결
Dim rfcFunc As Object'범용 모듈 런타임
'실행하는 일반 모듈 변수 - - - - - - - - - -
'R / 3 쪽과 동일 준비
Dim QUERY_TABLE As Object 'IMPORT 매개 변수 1
Dim DELIMITER As Object 'IMPORT Parameter2
Dim NO_DATA As Object 'IMPORT Parameter3
Dim ROWSKIPS As Object 'IMPORT Parameter4
Dim ROWCOUNT As Object 'IMPORT 매개 변수 5
'EXPORT 매개 변수 (없음)
Dim OPTIONS As Object 'TABLES 매개 변수 1
Dim FIELDS As Object 'TABLES Parameter2
Dim DATA As Object 'TABLES Parameter3
'Excel 내부 변수 - - - - - - - - - - - - - - - - - -
'이번 수행하는 범용 모듈 결과받는
Dim Result As Boolean '결과 판정에 대한
Dim iRow As Integer '해당 행
Dim iColumn As Integer '해당 열
Dim iField As Integer '데이터 저장소
Dim iStart As Integer '데이터 시작 위치
Dim iLength As Integer '데이터 길이
Dim vField As Variant '데이터 값
'---------------------------------- -----------------------------
'R / 3로 연결 제어
'----------------------------------------- ----------------------
'연결 매개 변수 입력
Set R3 = CreateObject ( "SAP.Functions") '진부한 표현
R3.Connection.ApplicationServer = ServerAddr 'xxx.xxx.xxx.xxx 등
R3.Connection.Client = ClientNum '고객 번호
R3.Connection.User = UserID '사용자 ID
R3.Connection.Password = Password
'비밀 번호 R3.Connection.Language = "JA" '언어
'로그인 실행
If R3.Connection.Logon (0, True) <> True Then
MsgBox "R / 3 로그인에 실패했습니다."
Exit Function
End If
'------------------------------------------------- --------------
'범용 모듈 실행
'--------------------------------------------- ------------------
'※ Set 함수를 사용하여 각 값에 쉽게 액세스할 수 있도록하는'실행하는 일반 모듈 지정
Set rfcFunc = R3.Add ( "RFC_READ_TABLE")
'모듈 파라미터 설정
Set QUERY_TABLE = rfcFunc.exports ( "QUERY_TABLE") 'EXPORT 변수 설정
Set DELIMITER = rfcFunc.exports ( "DELIMITER")
Set NO_DATA = rfcFunc.exports ( "NO_DATA")
Set ROWSKIPS = rfcFunc.exports ( "ROWSKIPS")
Set ROWCOUNT = rfcFunc.exports ( "ROWCOUNT")
Set OPTIONS = rfcFunc.Tables ( "OPTIONS") 'TABLES 변수 설정
Set FIELDS = rfcFunc.Tables ( "FIELDS")
'매개 변수를 설정한다 (일단 최소한 전용)
QUERY_TABLE.Value = "T001W" '테이블 T001W를 가져올
DELIMITER.Value = "" '각 열의 값은 쉼표로 반환된
NO_DATA = "" '데이터가없는 열의를 얻을
ROWCOUNT = 100 '최대 100 행을 검색
ROWSKIPS = 0 '위로부터 연속 100 행을 검색하는
'범용 모듈의 실행
Result = rfcFunc.Call
'결과의 성패 판정
If Result = True Then
'성공 → 반환 준비를 실시
Set DATA = rfcFunc.Tables ( "DATA")
Set FIELDS = rfcFunc.Tables ( "FIELDS")
Set OPTIONS = rfcFunc.Tables ( "OPTIONS")
Else
'실패 → 메시지를 표시하고 로그아웃하고 종료
MsgBox rfcFunc.Exception
R3.Connection.Logoff
Exit Function
End If
'실행이 끝난 때문에 연결이 종료
R3.Connection.Logoff
'------------------------------------------------- --------------
'실행 결과를 표시하는
'------------------------------------------- --------------------
'※ 반환 데이터 구조는 R / 3 쪽 정의도 그대로이다'
' "이 범용 모듈"실행 결과는 DATA 테이블 WA 열에'쉼표로 들어가기 때문에 돌을 파낼.
'검색된 데이터 건수만큼 루프
For iRow = 1 To DATA.ROWCOUNT
'데이터 필드 수만큼 루프
For iField = 1 To FIELDS.ROWCOUNT
iStart = FIELDS (iField "OFFSET") + 1 '데이터 시작 위치
iLength = FIELDS (iField "LENGTH")'데이터의 길이
'테이블 데이터에 접근하려면 변수 이름 (행, 열 이름)에서 할 수
If iStart> Len (DATA (iRow, "WA")) Then
vField = Null '변수
Else
vField = Mid (DATA (iRow, "WA"), iStart, iLength)
End If
'Sheet1 취득 값을 출력
Sheet1.Cells (iRow, iField) Value = Trim (vField)
Next
Next
End Function

Prev