SAP接口编程-RFC系列10 : BAPI控件的DimAs方法

BAPI控件的DimAs方法

上一个示例中,input parameter都是单值的。如果input parameter是结构型或table型的,就需要使用bapiControl.DimAs()方法定义,否则出错。以Customer.GetList()方法为例(对应的FM: BAPI_CUSTOMER_GETLIST)

这里写图片描述

这里写图片描述

以下是代码,注意IdRange参数是一个range table,所以用DimAs方法来定义。

Option Explicit

Public Sub TestGetCustomerList()
    Call Logon
    Call DoGetCustomerList("0", "ZZZZ", "100")
    Call logoff
End Sub

Public Sub DoGetCustomerList(customerFrom As String, customerTo As String, maxRow As String)
    Dim bapiControl As SAPBAPIControlLib.SAPBAPIControl
    Dim customerObj As Object
    Dim customerRng As SAPTableFactoryCtrl.Table  ' IdRange parameter
    Dim address As SAPTableFactoryCtrl.Table
    Dim ret As SAPFunctionsOCX.Structure
    
    If sapConnection.IsConnected <> tloRfcConnected Then
        Debug.Print "Please connect to SAP first."
        Exit Sub
    End If
    
    Set bapiControl = New SAPBAPIControl
    Set bapiControl.Connection = sapConnection
    
    Set customerObj = bapiControl.GetSAPObject("Customer")
    
    ' fill IdRange parameter
    Set customerRng = bapiControl.DimAs(customerObj, "GetList", "IdRange")
    customerRng.AppendRow
    customerRng.Value(1, "SIGN") = "I"
    customerRng.Value(1, "OPTION") = "BT"
    customerRng.Value(1, "LOW") = customerFrom
    customerRng.Value(1, "HIGH") = customerTo
    
    If maxRow = "" Then
        customerObj.GetList IdRange:=customerRng, _
            AddressData:=address, _
            Return:=ret
    Else
        customerObj.GetList IdRange:=customerRng, _
            AddressData:=address, _
            MaxRows:=maxRow, _
            Return:=ret
    End If
    
    ' Error occured
    If ret("TYPE") = "E" Then
        Call DebugWriteBapiError(ret)
        Exit Sub
    End If
    
    If address.rowcount > 0 Then
        Dim sht As Worksheet
        Set sht = ThisWorkbook.Worksheets.Add
        Call WriteTable(address, sht)
    End If
    
    Set address = Nothing
    Set customerObj = Nothing
    Set bapiControl = Nothing
End Sub

Private Sub DebugWriteBapiError(error As SAPFunctionsOCX.Structure)
    Debug.Print "Type:", error.Value("TYPE")
    Debug.Print "Class:", error.Value("ID")
    Debug.Print "Number:", error.Value("NUMBER")
    Debug.Print "Message:", error.Value("MESSAGE")
End Sub

DimAs 语法:

Function DimAs(Object As Object, Method As String, Parameter As String) As Object
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值