BW DTP过滤器的例程                                                          
有时BW抽取的数据时会对数据限制作一些特殊处理,比如上月的数据,可以考虑在DTP进行过滤
BW DTP过滤器的例程_第1张图片form compute_/BIC/ZBEGDA  “fieldname = '/BIC/ZBEGDA'.
   tables l_t_range structure  rssdlrange
  
changing p_subrc like  sy-subrc.
*       Insert source code to current selection field
*$*$ begin of routine - insert your code only below this line        *-*
data: l_idx like  sy-tabix.
          
read table l_t_range with key
               fieldname = 
'/BIC/ZBEGDA' .
          l_idx = sy-tabix.
*....
          
if l_idx <> 0 .
            
modify l_t_range index  l_idx.
          
else .
            l_t_range-fieldname = 
'/BIC/ZBEGDA' .
            l_t_range-
sign = 'E' .
            l_t_range-option = 
'EQ' .
            l_t_range-low = 
'2011.01.03' .
            
append  l_t_range.
          
endif .
          p_subrc = 
0 .
*$*$ end of routine - insert your code only before this line         *-*
endform.
解释:在这里,设置一下sign(E)xcluding,这样排除单一值,然后appendl_t_range中,OK! 以下是我们要写的程序代码:
l_t_range-fieldname =  '/BIC/ZBEGDA' .
l_t_range- sign  =  'E' .
l_t_range-option =  'EQ'.
l_t_range-low =  '2011.01.03'.
************************************
2.数据源进行例程控制BW DTP过滤器的例程_第2张图片
 
data: l_idx like sy-tabix.
DATABEGIN OF WA_O07,
        EMPLOYEE TYPE /BI0/OIEMPLOYEE,
      END OF WA_O07,
      IT_O07 LIKE TABLE OF WA_O07,
      V_DATE TYPE SY-DATUM.
      V_DATE = SY-DATUM - 1 .
          read table l_t_range with key
               fieldname = 'PERNR'.
          l_idx = sy-tabix.
*....
            select EMPLOYEE INTO TABLE IT_O07 from /BIC/AZHR_O0700 WHERE
            CALDAY = V_DATE.
            if l_t_range[] is not INITIAL.
              clear:l_t_range[].
              LOOP AT IT_O07 INTO WA_O07.
                l_t_range-fieldname = 'PERNR'.
                l_t_range-SIGN = 'I'.
                l_t_range-OPTION = 'EQ'.
                l_t_range-LOW = WA_O07-EMPLOYEE.
                append l_t_range.
                CLEAR:WA_O07,l_t_range.
              ENDLOOP.
            else.
              if l_idx <> 0.
                modify l_t_range index l_idx.
              endif.
            endif.

          p_subrc = 0.