阅读排行榜

最新评论

总感觉那个叫啥晓峰的回复,总是不那么切题,貌似只看到了最基础的用处 --【匿名用户】:E-works热心网友
这是个好建议! --【匿名用户】:E-works鐑績缃戝弸
所以国内企业要的就是灵活不是标准。 --【匿名用户】:E-works热心网友
写进BOM的都是标准成本,实际业务中按照标准成本来的有多少啊。 --【匿名用户】:E-works热心网友
这个有这个复杂? --【匿名用户】:E-works热心网友
建议还是挺好的。 --苌晓峰
这个分享还是蛮不错的吗! --苌晓峰
太简单了啊 --苌晓峰
分享 --苌晓峰
真正用得时候,谁还会想到这个啊 --苌晓峰

SBO的查询接口详细分析解剖
本文标签: SAP SBO ERP 

工欲善其事,必先利其器。知己知彼,百战不殆!
SBO的查询接口是SBO开发的一个综合性的查询工具,主要作用总结一下可以分三方面:一般的查询;用于定值一些简单报表的查询;用于格式化搜索的查询。一般关键的注意点有以下几个方面:
1、一般情况下,这个查询接口支持大约4000多个字符以内的sql语句查询,如果超过,就建议使用存储过程了。当然为了使SBO升级不出现问题(以前的版本SBO升级时会因为存储过程出问题),在升级前最好Drop这些存储过程,然后升级完成后补进去。
2、关于参数的问题,SBO查询接口引入一种特殊的参数传递机制,即'[%0]','[%1]'...,以前的版本没有引号,要注意不同版本升级造成的替换问题。
3、对于复杂查询逻辑的参数传递问题:大家最好先定义查询sql变量,然后对这些变量使用SBO参数赋值,然后在你的复杂查询逻辑中直接使用这些变量来传递参数,这种方法对调用存储过程等方面有很大好处,就是可以解决SBO的条件选择框的问题。例如:
declare  @itemfrom nvarchar(20)
declare  @itemto nvarchar(20)
declare  @count int
select @count=count(t0.itemcode) from OITM T0 where T0.itemcode= '[%0]' or T0.itemcode= '[%1]'
set @itemfrom= '[%0]'
set @itemto= '[%1]'
select itemcode '物料代码',itemname '物料名称' from oitm where ((itemcode>=@itemfrom) or (@itemfrom is null) or (@itemfrom='')  )and ((itemcode<=@itemTo) or (@itemTo is null)or (@itemTo=''))
4、对于字符型参数,最好加上or (@itemTo is null)or (@itemTo=''),这样条件就更灵活。对于数值参数采用(@itemTo is null)or (@itemTo=0)
5、对于SBO查询接口做报表,一般只能做一些简单的一维的报表。对于主细结构的报表就不好使了。不知哪位大虾有这方面的经验分享一下。
6、对于研发人员来说,如果开发的程序涉及到查询,希望在安装过程中直接安装到SBO系统里,方法有两个,一个是使用SDK,一个是直接插入。不过直接插入还是有风险的。但速度快。例子如下

declare @maxQCategory int
declare @maxQnum int
Declare @maxIDX int
declare @sql nvarchar(4000)

select @maxQCategory=isnull(max([CategoryId]),0)+1 from [OQCN]
delete from [OQCN] where [CatName]=N'自定义报表'
insert into [OQCN]([CategoryId], [CatName], [PermMask], [DataSource], [UserSign])
values(@maxQCategory,N'自定义报表','YYYYYYYYYYYYYYY','N',Null)  
--说明OQCN主要存放您的报表的查询类别。
--报表1
--OUQR主要存放您的自定义查询。要注意IntrnalKey自动加1。
select @maxQnum=isnull(max(IntrnalKey),0)+1 from OUQR  --where QCategory=@maxQCategory
delete from [OUQR] where [QName]=N'您的报表'
insert into [OUQR]([IntrnalKey], [QCategory], [QName], [QString], [QType], [ColumnSize])
values(@maxQnum,@maxQCategory,N'您的报表',N'declare  @itemfrom nvarchar(20)
declare  @itemto nvarchar(20)
declare  @count int
select @count=count(t0.itemcode) from OITM T0 where T0.itemcode=  '+''''+'[%0]'+''''+' or T0.itemcode= '+''''+'[%1]'+''''+'
set @itemfrom= '+''''+'[%0]'+''''+'
set @itemto=  '+''''+'[%1]'+''''+'
select itemcode '物料代码',itemname '物料名称' from oitm where ((itemcode>=@itemfrom) or (@itemfrom is null) or (@itemfrom=+''''+''''+))and ((itemcode<=@itemTo) or (@itemTo is null)or (@itemTo=+''''+''''+))','W','RnNNNZFFTNTZNNFFFNFFNNRRRRNN')

希望这个文档对顾问或研发有所帮助。至于SBO的查询接口究竟能在项目中做到什么程度,但就看我们的功底如何了。尤其是SQL的水平。我的建议是在SBO这个产品上对顾问的SQL水平是必须的一个基本技能。
发表于: 2008-11-23 14:11 秋声 阅读(1817) 评论(1) 收藏 好文推荐
# re: SBO的查询接口详细分析解剖
2011-10-21 13:19 | 苌晓峰 | 1楼
分享

发表评论(网友发言只代表个人观点,不代表本网站观点或立场。)

您尚未登录,请先【登录或注册