День добрый. Есть проблема, надеюсь на вашу помощь:
Есть rfc модуль, есть книга Excel, в которой которой vba-функциями формируется xml. В этот FM-ник нужно передать xml-строку, но т.к. импорт/экспорт параметры нельзя делать типа string,то я это строку на режу на подстроки и передаю в таблицу. Проблема в том, на стороне сервера эта таблица оказывается пустой, и при этом другие параметры(не табличный) нормально передаются. Как быть?
в модуле параметр таблицы определен Like TAB512
код vba-функций:
Code:
Private Function LoadDataToSAP(sXml As String) As Boolean
On Error GoTo EH:
Dim errDescr As String
Dim result As Boolean
Dim SAPFunc As Object
Set SAPFunc = initSAPConn()
If SAPFunc.Connection.Logon(0, False) <> True Then '(hWnd, bSilent)
MsgBox "Ñîåäèíåíèå ñ ñèñòåìîé '" & SYSTEM_NAME & "' íå óñòàíîâëåíî."
Exit Function
End If
Dim MyFunc As Object
Set MyFunc = SetupSAPFunctionTo(SAPFunc, sXml)
result = MyFunc.Call
If result = True Then
LoadDataToSAP = True
End If
SAPFunc.Connection.Logoff
Exit Function
EH:
errDescr = Err.Description
SAPFunc.Connection.Logoff
MsgBox errDescr, vbExclamation, Application.Name
End Function
Private Function initSAPConn() As Object
Dim tmpSAPFunc As Object
Set tmpSAPFunc = CreateObject("SAP.Functions") ' wdtfuncs.ocx SAP Remote Function Call Control / Function
With tmpSAPFunc.Connection ' wdtlog.ocx SAP Logon Control / Connection
.System = SYSTEM_NAME
.ApplicationServer = APP_SERV
.SystemNumber = SYSTEM_NUM
.Client = MANDT
.User = USERNAME
.PASSWORD = PASSWORD
.LANGUAGE = LANGUAGE
.CodePage = CODE_PAGE
End With
Set initSAPConn = tmpSAPFunc
End Function
Private Function SetupSAPFunctionTo(ByRef SapFunction As Object, sXml As String) As Object
Dim i As Long
Dim tmpFunc As Object
Set tmpFunc = SapFunction.Add(SAP_LOAD_FUNCTION_NAME)
Dim oXml As Object
Set oXml = tmpFunc.Tables("XML1")
Dim mXml() As String
mXml = SetupXmlArray(sXml)
For i = 1 To UBound(mXml)
oXml.Rows.Add
oXml.value(i, "WA") = mXml(i)
Next i
Dim oPeriod As Object
Set oPeriod = tmpFunc.Exports("PERIOD")
oPeriod.value = GetFormName()
Dim oFormName As Object
Set oFormName = tmpFunc.Exports("FORM_NAME")
oFormName.value = GetPeriod()
Set SetupSAPFunctionTo = tmpFunc
End Function