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 Dim csocodeRet As String
csocodeRet = CStr(domHeadRet(0).GetValue(\订 单 号,String类型 Dim ddateRet As Date
ddateRet = CDate(domHeadRet(0).GetValue(\订单日期,Date类型 ??
'***************************** 以下是非必输字段 ****************************’ Dim fstockquanORet As Double
fstockquanORet = CDbl(domHeadRet(0).GetValue(\现存件数,Double类型 Dim fcanusequanORet As Double
fcanusequanORet = CDbl(domHeadRet(0).GetValue(\可用件数,Double类型 Dim iverifystateRet As String
iverifystateRet = CStr(domHeadRet(0).GetValue(\,String类型 ??
idRet = CInt(domHeadRet(0).GetValue(\主关键字段,Integer类型
2)
获取普通返回值
代码如下:
'获取普通返回值。此返回值数据类型为String,此参数按值传递,具体请参考服务接口定义 Dim result As String
3)
获取普通“OUT型”或“INOUT型”返回值
如前所述,对普通“OUT型”或“INOUT型”参数,如果是一般值类型,则通过GetResult方法获取其返回值,否则直接使用该引用。
如,
'获取普通OUT参数curID。此返回值数据类型为String,在使用该参数之前,请判断是否为空
'获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,前面已定义该参数,请直接使用 ??
Dim curIDRet As String
curIDRet = CStr(u8apiBroker.GetResult(\)) result = CStr(u8apiBroker.GetReturnValue())
2.2.3 库存管理
? 功能介绍
为了支持U8二次开发对业务单据的开发,本功能提供了实现库存业务单据各种操作功能的编程接口。使用库存管理的API开发接口,可以对库存管理中的采购入库单、其他入库单、其他出库单、产成品入库单、材料出库单、调拨单、组装单、拆卸单、形态转换单、盘点单、货位调整单、销售出库单、期初结存、不合格品记录单、不合格品处理单、期初不合格品、调拨申请单等单据进行审核、弃审、获取(或装载)、新增、修改、删除。
? 使用环境
必须安装.NET FrameWork 2.0; 必须安装U8-872版本的库存管理产品; 必须安装API适配器组件STAPIConcrete.dll
? 接口说明
库存管理二次开发接口说明:
? 审核单据-Audit方法
参数:
sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息
cnnFrom —— 连接对象(调用方控制事务时需要传入连接对象) TimeStamp —— 单据时间戳(用于检查单据是否修改,空串时不检查) domMsg —— 返回DOM格式的信息:主要是可用量信息 bCheck —— 是否进行业务检查(是否控制可用量) bBeforCheckStock —— 是否检查可用量 bList —— 传入false MakeWheres —— 传空 sWebXml —— 传入空串
oGenVouchIds —— 获取单据ID列表(返回审核时自动生成的单据的id
列表,传空)
? 弃审单据-CancelAudit方法
参数:
sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息
cnnFrom —— 连接对象(由调用方控制事务时必须传入) TimeStamp —— 单据时间戳(用于检查单据是否修改,空串时不检查) domMsg —— 超可用量提示信息DOM对象(返回DOM格式的信息) bCheck —— 是否进行业务检查 bBeforCheckStock —— 是否检查可用量 bList —— 传入false
? 装载单据-Load方法
参数:
sVoucherType —— 单据类型:01 sWhere —— 条件串
DomHead —— 表头DOM对象 domBody —— 表体DOM对象 domPos —— 货位DOM对象 errMsg —— 错误信息
bGetBlank —— 是否获取空白单据 sBodyWhere_Order —— 表体排序方式字段
注意:其中sWhere设计为:
如果按单据号加载,则语法为ccode=N'要加载的单据号',例如broker.AssignNormalValue(\\;
如果按单据ID加载,则语法为id=XXX,例如broker.AssignNormalValue(\。
? 删除单据-Delete方法
参数:
sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息 cnnFrom —— 连接对象(由调用方控制事务时需要传入连接对象) TimeStamp —— 单据时间戳
domMsg —— 返回DOM格式的信息:主要是检查可用量和控制可
用量信息
bCheck —— 是否进行业务检查 BeforCheckStock —— 是否检查可用量 bList —— 传入false
? 添加新单据- Add方法
参数:
sVoucherType —— 单据类型:01 DomHead —— 表头DOM对象 domBody —— 表体DOM对象
domPosition —— 货位DOM对象:传空 errMsg —— 返回错误信息
cnnFrom —— 连接对象,如果由调用方控制事务,则需要设置
此连接对象,否则传空
VoucherId —— 返回单据ID
domMsg —— 返回DOM格式的信息:主要返回可用量和现存量
的错误信息
bCheck —— 是否进行业务检查(是否控制可用量) bBeforCheckStock —— 是否检查可用量(检查可用量) bIsRedVouch —— 是否红字单据 sAddedState —— 传空字符串 bReMote —— 是否远程
? 修改单据-Update方法
参数:
sVoucherType —— 单据类型:01 DomHead —— 表头DOM对象 domBody —— 表体DOM对象 domPosition —— 货位DOM对象 errMsg —— 错误信息 cnnFrom —— 连接对象
domMsg —— 超可用量提示信息DOM对象(返回DOM格式的信息) bCheck —— 是否进行业务检查 bBeforCheckStock —— 是否检查可用量 bIsRedVouch —— 是否红字单据 sAddedState —— 修改状态 bUpdateNeedEas —— 传true
? 开发步骤
调用库存单据某一API,主要有以下六个步骤: 1. 构造u8login对象并登陆
声明和创建u8login类对象前应该先引用U8API类库中的Integererop.U8Login.dll,代码示例如下:
Dim ologin As Object
Set ologin = CreateObject(\U8Login.clsLogin\ '声明u8login对象 '登陆
If Not ologin.login(\, \, \, \, \, \, \) Then
MsgBox ologin.ShareString
注意:如果当前环境中有login对象则可以省去第一步。
2. 构造环境上下文对象,传入login
Dim u8EnvCtx As New U8EnvContext
'构造环境上下文对象