BW中变量增强学习
BW的query的变量需要进行增强才能正确地满足实际需要,如query中需要查询本年年初的关键值,你必须指定到今年的000期间才行,这时候就需要用到增强功能。
要点:1,只有放在BWquery中的自由特性的对象才能够进行即时分析。
2,由于BW的数据一般无法进行当天的数据查询,所以经常需要在当前日期上-1.
3,会计年度的值采用了一种约定:10日以前认为是查询上月的数据。当然这是在step=1时采用的。选择后的值是不一样的。
4, l_s_range-sign = 'I'.I代表包含在内,而E的意义相反。
l_s_range-opt = 'BT'. 是关系运算式。BT=between,EQ = equal,其他略。
5,文本变量的方式是采用搜索数据表来得到的。如何才能查到需要的文本值,顾问的意思是st02等跟踪工具来跟踪得到。
6,许多的变量是依附于其他的选择变量的,所以在query中一定要把你依附的变量放在其中才能采用。
WHEN 'ZI_LNDSN'."这个变量就是依附于变量zs_calday的。
IF i_step = 2 .
READ TABLE i_t_var_range INTO loc_var_range
WITH KEY vnam ='ZS_CALDAY'.
IF sy-subrc EQ 0 .
7,主要财务的会计期间与正常的日期之间的差别。如"2008001"与“20080101”的区别。在运算中大量用到转换。
8,典型的日期变量:
WHEN 'ZI_BNLJ12'.
IF i_step = 2 .
READ TABLE i_t_var_range INTO loc_var_range
WITH KEY vnam ='ZI_FISCPERJG_NEW'.
IF sy-subrc EQ 0 .
CLEAR l_s_range.
l_year = loc_var_range-high(4).
l_s_range-high+0(4) = l_year.
l_s_range-high+4(3) = '012'.
l_s_range-low+0(4) = l_year.
l_s_range-low+4(3) = '000'.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
INSERT l_s_range INTO TABLE e_t_range.
ENDIF.
ENDIF.
9,典型的文本变量:
WHEN 'ZT_COMPCODE'.
IF i_step = 2.
*BREAK-POINT.
READ TABLE i_t_var_range INTO loc_var_range
WITH KEY vnam = 'ZH_COMPCODE'.
IF sy-subrc EQ 0 .
IF sy-sysid = 'DB1'.
SELECT SINGLE txtmd INTO i_txtmd
FROM rsthiernode
WHERE nodename = loc_var_range-low
AND hieid = 'D3Z0Q0YD326Y3R99FPLZTWQ7J'
AND objvers = 'A'
AND langu = sy-langu.
IF sy-subrc NE 0 .
SELECT SINGLE txtmd INTO i_txtmd
FROM /bi0/tcomp_code
WHERE comp_code = loc_var_range-low+0(4)
AND langu = sy-langu.
.
ENDIF.
ELSE.
SELECT SINGLE txtmd INTO i_txtmd
FROM rsthiernode
WHERE nodename = loc_var_range-low
AND hieid = 'D48Z1PEX0M4J4MTDKBKKEBPNK'
AND objvers = 'A'
AND langu = sy-langu.
IF sy-subrc NE 0 .
SELECT SINGLE txtmd INTO i_txtmd
FROM /bi0/tcomp_code
WHERE comp_code = loc_var_range-low+0(4)
AND langu = sy-langu
.
ENDIF.
ENDIF.
l_s_range-low = i_txtmd.
ENDIF.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
INSERT l_s_range INTO TABLE e_t_range.
ENDIF.