Excel에서 RFC를 사용하여 데이터 핸들링 하는 것을 공부 하고 있습니다.
다른건 이해가 다 가는데요... 유독 한줄이 궁금해서 이렇게 질문을 드립니다..
문제의 코드는 Set SapFunc = CreateObject("SAP.Functions") 이거 구요.. SapFunc라는 개체에 객체를 만든다는 것
까지는 알겠는데 ("SAP.Functions") 요게 먼지 모르겠습니다. 추측컨데 이건 SAP에 정의 돼어 있는 먼가가 있는 것
같습니다만... 정확하게 무엇인지 좀 아시는 분 없으신가요..
그리고 한 가지더! 만약 SAP.Functions 라는게 미리 정의 돼어있고 그것을 이용하는 것이라면... 어떻게 해당 서버를
찾아가는지 궁금하네요... 소스를 다 뒤져보아도 IP에 대한 정보는 없는데 말이죠...
한가지 더 궁금한 코드가 있는데 SapFunc.Connection.RfcWithDialog = True 요 것이 무엇인지도 가르쳐 주시면 감사
하겠습니다 ㅠㅠ
댓글 3
-
정군
2009.06.10 00:55
-
activeman
2009.06.10 20:07
물론 세팅해 주는 부분이 있습니다.
아래는 vb에서 세팅해 주는 부분이구요.
excel에서는 vba에서 세팅을 해줘야 합니다.
그리고 "SAP.Functions"는 SAPi에서 제공하는 dll파일에 정의되어 있는 것입니다.
엑셀에서 컨트롤(아래 vb에 표시해 놓은 dll파일)을 추가하고 난뒤에 그 컨트롤에 대한 정보를 보시면 이해 하실 겁니다.
즐밥하세요..
1. vb에서 예제
'-----------------------------------------------------------------
' VB와 SAP 연동
'
' note.
' 2개 참조로 추가해준다.
' C:Program FilesSAPFrontEndSAPguiwdtfuncs.ocx
' C:Program FilesSAPFrontEndSAPguiWDTAOCX.OCX
'-----------------------------------------------------------------
Private Sub Command1_Click()
Dim sapConn As New SAPFunctions
Dim oFunc As New SAPFunctionsOCX.Function
Dim oTbl As New Table
Dim oRow As Row
Dim i As Long
'-------------------------------------------------------------
' SAP 연결
'-------------------------------------------------------------
sapConn.Connection.user = "아이디"
sapConn.Connection.Password = "비밀번호"
sapConn.Connection.client = "310"
sapConn.Connection.ApplicationServer = "아이피"
sapConn.Connection.language = "KO"
sapConn.Connection.SystemNumber = "02"
If Not sapConn.Connection.Logon(0, True) Then
MsgBox "SAP에 로그온 할 수 없습니다."
End If
'-------------------------------------------------------------
' SAP 함수 호출
'-------------------------------------------------------------
Set oFunc = sapConn.Add("CFI_LP_LIST")
2. Excel에서 예제
Option Explicit
Dim oFunc As Object
Dim SAPFunction As Object
Private oConnection As Object
Private tIoRfcConnected As Integer
Private Sub CommandButton1_Click()
Set oConnection = SAPLogonControl1.NewConnection
With oConnection
.ApplicationServer = "서버IP"
.Client = "클라이언트"
.System = "시스템"
.GroupName = "PROJECT"
.User = "사용자ID"
.Password = "패스워드"
.Language = "KO"
End With
If Not oConnection.Logon(0, False) = True Then
MsgBox "연결이 실패 되었습니다.!!!" & "에러내용: " & Err.Description, vbOKOnly, "Error"
Exit Sub
Else
tIoRfcConnected = 1
Me.Caption = " R/3 LogOn한 상태입니다!"
Me.SAPLogonControl1.Visible = False
End If
End Sub
Private Sub CommandButton2_Click()
If oConnection Is Nothing Then
MsgBox ("Please log on")
Exit Sub
End If
If oConnection.IsConnected <> tIoRfcConnected Then
Exit Sub
End If
Set SAPFunction = CreateObject("SAP.Functions")
If SAPFunction Is Nothing Then
MsgBox ("Creating Functions object failed")
Exit Sub
End If
Set SAPFunction.Connection = oConnection
Set oFunc = SAPFunction.Add("ZPP_PDA_INTF")
If oFunc Is Nothing Then
MsgBox "Createing function module object failed"
Exit Sub
End If
oFunc.Exports("I_WERKS") = TextBox1.Text
oFunc.Exports("I_BUDAT") = TextBox2.Text
oFunc.Exports("I_MATNR") = TextBox3.Text
oFunc.Exports("I_BWART") = TextBox4.Text
oFunc.Exports("I_LGORT") = TextBox5.Text
oFunc.Exports("I_KOSTL") = TextBox6.Text
oFunc.Exports("I_MENGE") = TextBox7.Text
oFunc.Exports("I_MEINS") = TextBox8.Text
oFunc.Exports("I_USNAM") = TextBox9.Text
oFunc.Exports("I_AUFNR") = TextBox10.Text
If Not oFunc.Call Then
MsgBox "Function call failed"
Exit Sub
Else
MsgBox "Function call success!"
End If
End Sub
Private Sub CommandButton3_Click()
Me.Caption = " R/3 LogOn"
If oConnection Is Nothing Then
Me.SAPLogonControl1.Visible = True
UserForm1.Hide
Else
oConnection.Logoff
Set oConnection = Nothing
Me.SAPLogonControl1.Visible = True
UserForm1.Hide
End If
End Sub
-
Will
2009.07.16 21:52
배웠습니다~떙큐~
http://blog.naver.com/mycogito/80024639424
큰 도움 될지는 모르지만.. 참고하세요.