В результате ковыряния с ФМ BAPI_USER_GET_DETAIL получилось вот что
Code:
Далее VBA код. Я не сказал, что мне нужно отформатировать отчет в Bex Analyser (это BW), а он построен на MS Excell.
Вариант 1. Использование ФМ BAPI_USER_GET_DETAILCode:
Private Sub FM_ExtGetUserDetail()
On Error GoTo errTrap
Dim objBAPIControl As Object
Dim objUserDetail As Object
Dim address As Object
Dim sapConnection As Object
Dim oWS as WorkSheet
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection
sapConnection.client = "100"
sapConnection.User = login
sapConnection.Language = "RU"
sapC :evil: onnection.ApplicationServer = AS
sapConnection.Password = pass
sapConnection.systemnumber = "0"
sapConnection.System = "00"
If sapConnection.Logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub
End If
Set objUserDetail = objBAPIControl.Add("BAPI_USER_GET_DETAIL")
objUserDetail.exports("USERNAME") = sUSER_NAME
returnFunc = objUserDetail.Call
If returnFunc = True Then
Set address = objUserDetail.imports("Address")
Set oWS = ActiveSheet
oWS.Cells(1, 1) = address.Value("DEPARTMENT")
oWS.Cells(1, 2) = address.Value("TEL1_EXT")
oWS.Cells(1, 3) = address.Value("LASTNAME")
oWS.Cells(1, 4) = address.Value("FIRSTNAME")
Else
MsgBox "Error call BAPI_USER_GET_DETAIL ! "
Exit Sub
End If
objBAPIControl.Connection.Logoff
errTrap:
Set address = Nothing
Set objUserDetail = Nothing
Set objBAPIControl = Nothing
Set sapConnection = Nothing
End Sub
Q1 При таком способе не латинские символы выгружаться как символ "
#"
Решил попробовать
Вариант 2. Использование BAPICode:
Private Sub ExtGetUserDetail_BAPI()
On Error GoTo errTrap
Dim objBAPIControl As Object
Dim sapConnection As Object
Dim oUser As Object
Dim oAddress As Object
Set objBAPIControl = CreateObject("sap.bapi.1")
Set sapConnection = objBAPIControl.Connection
sapConnection.client = "100"
sapConnection.User = login
sapConnection.Language = "RU"
sapC :evil: onnection.ApplicationServer = AS
sapConnection.Password = pass
sapConnection.systemnumber = "0"
sapConnection.System = "00"
If sapConnection.Logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub
End If
Set oUser = objBAPIControl.GetSAPObject("USER", sUSER_NAME)
Set oAddress = objBAPIControl.DimAs(oUser, "GetDetail", "Address")
Set oWS = ActiveSheet
oWS.Cells(1, 1) = address.Value("DEPARTMENT")
oWS.Cells(1, 2) = address.Value("TEL1_EXT")
oWS.Cells(1, 3) = address.Value("LASTNAME")
oWS.Cells(1, 4) = address.Value("FIRSTNAME")
objBAPIControl.Connection.Logoff
errTrap:
Set oUser = Nothing
Set oAddress = Nothing
Set objBAPIControl = Nothing
Set sapConnection = Nothing
End Sub
Q2 А при таком способе, хоть о отрабатываться без ошибок, тем не менее все ячейки пустые.
Кто-нибудь сталкивался с такими вопросами? Каким образом решали?