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

本文介绍了在调用SAP BAPI方法时如何使用DimAs方法来定义结构型或table型的输入参数。通过具体的Customer.GetList方法示例,展示了如何创建并填充IdRange参数,以及如何处理返回的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值