Set u8EnvCtx.U8Login = ologin '传入login
3. 构造ApiBroker对象,调用Connect,传入API的地址标识(Url)和环境上下文
Dim u8apiBroker As New U8ApiComBroker
u8apiBroker.Connect \U8API/PuStoreIn/Add \
4. API对象参数赋值
1) 给BO表头参数DomHead和表体参数domBody赋值有两种方法,如下: 方法一是直接传入MSXML2.DOMDocumentClass对象,代码如下:
Dim domHead As New MSXML2.DOMDocument domHead.load \
u8apiBroker.AssignNormalValue \DomHead\
方法二是构造BusinessObject对象,具体方法如下:
'首先通过GetBoParam方法获取表头或表体参数
Dim DomHead As BusinessObject
Set DomHead = u8apiBroker.GetBoParam(\DomHead\DomHead.RowCount = 1 '设置行数
'给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 '以下代码示例只设置第一行值。各字段定义详见API服务接口定义
注意:表体的行数只能为一行,可以对表体设置多行。当设置行数为某个值时,行数并不限定为该最大值,可以一直顺序添加至任意行,但有一个规则:例如当设置为10时,可以对第0、1、??9行赋值,当对第10行赋值时候,则会顺序添加一个新行,但此时是不能对第11行赋值的,当添加一个新行(第10行)后,又可以对第11行进行赋值。
'****************************** 以下是必输字段 *****************************’ DomHead(0).SetValue \字段值\主关键字段,Integer类型 DomHead(0).SetValue \字段值\委外期初标志,String类型 DomHead(0).SetValue \字段值\入库单号,String类型 ??
/***************************** 以下是非必输字段 ****************************/ DomHead(0).SetValue \字段值\修改人,String类型 DomHead(0).SetValue \字段值\修改日期,Date类型 DomHead(0).SetValue \字段值\制单时间,Date类型
??
2) 给普通参数赋值 例如,
'给普通参数VoucherState(参数名)赋值。此参数的数据类型为Integer,此参数按值传递,具体请
参考服务接口定义
u8apiBroker.AssignNormalValue \VoucherState\参数值\ '参数类型:Integer 注意:所有参数名不限大小写。
3) 给“OUT型”参数赋值
为方便用户使用U8API,如果参数数据类型为一般值类型,如String、Integer、Long、Double、Boolean、Date等,则不必传入一个参数变量(传入也可);否则,则必须一个参数变量。
如: ??
'该参数curID为OUT型参数,由于其数据类型为String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult(\获取
'该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
Dim CurDom As New MSXML2.IXMLDOMDocument2
u8apiBroker.AssignNormalValue \CurDom\'参数类型:MSXML2.IXMLDOMDocument2
??
当不传入一个参数变量时,在API调用返回时,可以通过GetResult(参数名)获取其值;当不必传入一个参数变量时,在API调用返回时,可以直接引用该参数。
4) 给“INOUT型”参数赋值 对“INOUT型”型参数,则不论是否是一般值类型,都需要传入参数变量。其他与“OUT型”参数一样。
5. 调用API
If u8apiBroker.InvokeApi() = False Then
'错误处理
MsgBox u8apiBroker.GetLastError()
If u8apiBroker.ErrorType = ExceptionType_Business Then
'处理API业务错误 '处理系统错误
ElseIf u8apiBroker.ErrorType = ExceptionType_System Then End If
注意:对调用失败,可以获取出错信息,如果是API框架的原因,则报告MomSysException异常,如果是业务组件的原因,则报告MomBizException异常。
6. 获取返回结果
1) 获取BO对象
在“装载单据”时,通过GetBoParam方法获取表头或表体参数 Dim DomHeadRet As BusinessObject
Set DomHeadRet = u8apiBroker.GetBoParam(\) MsgBox DomHeadRet.RowCount '获取返回BO对象的行数
注意:
如果要取原始的XMLDOM对象结果,请使用GetResult(\Dim DomHeadRet As New MSXML2.DOMDocument
Set DomHeadRet = u8apiBroker. GetResult(\) 以上获取的行数是BO对象的实际行数。
'获取BO对象各字段的值。以下代码示例只取第一行。字段定义详见API服务接口定义
'***************************** 以下是必输字段 ****************************’ Dim idRet As Integer
idRet = CInt(DomHeadRet(0).GetValue(\主关键字段,Integer类型 Dim bomfirstRet As String
bomfirstRet = CStr(DomHeadRet(0).GetValue(\委外期初标志,String类型 Dim ccodeRet As String
ccodeRet = CStr(DomHeadRet(0).GetValue(\入库单号,String类型 ??
/***************************** 以下是非必输字段 ****************************/ Dim cmodifypersonRet As String
cmodifypersonRet = CStr(DomHeadRet(0).GetValue(\修改人,String类型 Dim dmodifydateRet As Date
dmodifydateRet = CDate(DomHeadRet(0).GetValue(\修改日期,Date类型 Dim dnmaketimeRet As Date
dnmaketimeRet = CDate(DomHeadRet(0).GetValue(\制单时间,Date类型 ??
2)
获取普通返回值
代码如下:
'获取普通返回值。此返回值数据类型为String,此参数按值传递,具体请参考服务接口定义 Dim result As String
4)
获取普通“OUT型”或“INOUT型”返回值
如前所述,对普通“OUT型”或“INOUT型”参数,如果是一般值类型,则通过GetResult方法获取其返回值,否则直接使用该引用。
如,
'获取普通OUT参数curID。此返回值数据类型为String,在使用该参数之前,请判断是否为空
'获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,前面已定义该参数,请直接使用 ??
Dim curIDRet As String
curIDRet = CStr(u8apiBroker.GetResult(\)) result = CStr(u8apiBroker.GetReturnValue())