BW DTP过滤器的例程

BW DTP过滤器的例程                                                          
有时 BW 抽取的数据时会对数据限制作一些特殊处理,比如上月的数据,可以考虑在 DTP 进行过滤
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,这样排除单一值,然后append l_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.数据源进行例程控制
 
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.

本文出自 “飞翔我的世界” 博客,谢绝转载!

你可能感兴趣的:(职场,BW,休闲,DTP过滤器的例程)