Routine in DTP Filter

本以為在DPT Filter裏面寫routine跟infopackage裏面應該是一樣的,昨天去試了一下,發現還是有差異的,剛進入routine,系統給的默認代碼如下:
  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L4S31 { font-style. italic; color: #808080; } .L4S32 { color: #3399FF; } .L4S33 { color: #4DA619; } .L4S52 { color: #0000FF; } form compute_
   tables l_t_range  structure rssdlrange
   using i_r_request  type  ref  to IF_RSBK_REQUEST_ADMINTAB_VIEW
        i_fieldnm  type RSFIELDNM
   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 =  ' '.
          l_idx = sy-tabix.
*....
           if l_idx <>  0.
             modify l_t_range  index l_idx.
           else.
             append l_t_range.
           endif.
          p_subrc =  0.
問題在哪裡呢?
1.fieldname =  ' '.,這個人讓人鬱悶了···我去Debug這段代碼,會發現l_t_range 也為空;
2. form compute_----居然沒給咱參數,後來發現這個參數就是我們需要的fieldname
因此,需要注意以上2點。以下是OK 的代碼:
  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S31 { font-style. italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } DATA: l_idx LIKE sy-tabix.
  READ TABLE l_t_range WITH KEY
       fieldname = 'PSTNG_DATE'.
  l_idx = sy-tabix.
***....
**  IF l_idx <> 0.
**    MODIFY l_t_range INDEX l_idx.
**  ELSE.
**    APPEND l_t_range.
**  ENDIF.
  DATA: l_date TYPE sy-datum.
  DATA: t_date(2TYPE c.
  DATA:l_edate TYPE sy-datum.
  DATA:l_year TYPE t009b-bdatj.
  DATA: l_month TYPE t009b-bumon.
  DATA: l_days TYPE t009b-butag.

*  BREAK-POINT.
  l_date = sy-datum.

  t_date = l_date+4(2).
  l_date+6(2) = '01'.


  IF t_date = '01'.
    l_date+4(2) = '12'.
    l_date+0(4) = l_date+0(4) - 1.
    l_year = l_date+0(4) - 1.
    l_month = '12'.
  ELSE.

    l_date+4(2) = l_date+4(2) - 1.
    l_year = l_date+0(4) .
    l_month = t_date - 1.
  ENDIF.

  CALL FUNCTION'/SDF/RBE_GET_DAYS_PER_MONTH'
    EXPORTING
       par_month = l_month
       par_year = l_year

    IMPORTING
      par_days = l_days.
  CONCATENATE l_year l_month '01' INTO l_date.
  CONCATENATE l_year l_month l_days INTO l_edate.
  l_t_range-sign = 'I'.
  l_t_range-option = 'BT'.
  l_t_range-fieldname = 'PSTNG_DATE'.
  l_t_range-low = l_date.
  l_t_range-high = l_edate .
  IF l_idx <> 0.
    MODIFY l_t_range INDEX l_idx.
  ELSE.
    APPEND l_t_range.
  ENDIF.
*  MODIFY l_t_range INDEX l_idx.
  p_subrc = 0.
 
至於怎麼知道參數名字,開始還去transfermation去找,結果是錯誤的,後來發現我們可以先通過下常量,然後在Monitor裏面去查看,就可以知道參數的名字了。
 
哦,還有一點需要說明,如果l_idx=0,直接用modify語句,會報錯,所以會有這段代碼:
   IF l_idx <> 0.
    MODIFY l_t_range INDEX l_idx.
  ELSE.
    APPEND l_t_range.
  ENDIF.
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23947343/viewspace-701345/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23947343/viewspace-701345/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值