经过:AP在做数据拉取的时候(从ODS到Cube),Data Selection的条件比较複杂,它通过对两个栏位下条件,Post Date和Clearing Date。提出的要求是,Post Date是要上个月底之前的所有日期,而Clearing Date要在本月第一天之后或者为空。
江涛通过ABAP的方式去定条件,代码如下:(我选择Post Date处理的部分代码)
Data:l_postdate like sy-datum.
CONCATENATE SYS-DATUM+0(6) ‘01’ TO l_postdate.
l_postdate = l_postdate – 1.
l_t_range-sign = 'I'.
l_t_range-option = 'LE'.
l_t_range-low =l_postdate.
Modify l_t_range index l_idx.
检查语法,无误。
但是在执行过程中,出现如下错误:
"For sel. field '0PSTNG_DATE', no selection with SIGN = 'I'; OPTION 'LE' allowed"
起初判断是否代码有误,或是Range的赋值要赋在高位(l_t_range-high),经过测试发现错误依旧。所以判断可能使此处不支持”LE”,”GE”,”LT”,”GT”等非确定的值定义,所以尝试换了Option,变成”EQ”顺利通过,又换成”BT”也可以正常导入,所以断定是否真如之前猜想,此处不支持“非确定值”的符号应用。
通过SDN得到如下信息:
------------------------------------------------------------------------------------------------------------------------
Instead use an OLAP variable to achieve the results you want.
But first check what are the selectionoptionssupported by your data source in the tableROOSFIELDin your source system.
-------------------------------------------------------------------------------------------------------------------------
在ROOSFIELD表中,查询InforSource以及InforObject,出现如下记录
OLTPSOURCE OBJVERS FIELD SELECTION SELOPTS
8ZAP_O03U A PSTNG_DATE X 7
而SELOPTS的值对应说明如下
value Describle
0 Undefined Selection Options
1 Selection EQ Permitted
2 Selection BT Permitted
3 Selection EQ, BT Permitted
7 Selection EQ, BT, CP Permitted
目前值为“7“,所以对应的说明文字为“Selection EQ, BT, CP Permitted”。
通过测试,发现此栏位的值即使修改了,还是按照“7”的规则,所以目前暂不知晓系统这样限制的原因。