Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33751
  • 博文数量: 14
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-30 14:14
文章分类
文章存档

2011年(1)

2010年(3)

2009年(1)

2008年(9)

我的朋友
最近访客

分类:

2008-05-06 20:49:28

使用表维护(Table Maintenance)可以很方便的建立对自建表的维护程序。
但是很多常用的功能是表维护并不能完全满足,这就需要对它进行扩展(Extended)。
sap提供了强大的扩展功能。 详见 :

 

今天遇到了一个需求,给自建表创建维护程序,但是要求加上操作记录功能和校验功能。

 

使用了01事件(Event 01 before saving the data in the database )来给记录添加时间戳。

 

路径如下 :

 

实际上,也可以使用Event 21 fill hidden fields来实现的。

 

几个注意事项:1 不能使用error的信息,会跳出程序的。

 

2 全部的数据,相当于

   这样定义的

INCLUDE STRUCTURE or

INCLUDE STRUCTURE VIMTBFLAGS

 

internal table  . 是有修改内容的表。

 

3 三种操作的常量

 

  

新增   N

更新   U

删除   D

 

 

下面是code:

Event 1

FORM sub_check_before_save .
  
DATA: f_index LIKE sy-tabix. "Index to note the lines found
  
DATA : BEGIN OF ls_wa .
          
INCLUDE STRUCTURE zbranch.
          
INCLUDE STRUCTURE vimtbflags.
  
DATA END OF ls_wa .


  
LOOP AT total.
    
IF  = 'U'  " Update
    
OR  = 'N' ."NEW
*       'D' " delete no need now

      
READ TABLE extract WITH KEY .
      
IF sy-subrc EQ 0.
        f_index = sy-tabix.
      
ELSE.
        
CLEAR f_index.
      
ENDIF.
*      (make desired changes to the line total)

      
CLEAR ls_wa .
      
MOVE total TO ls_wa .

      ls_wa-change_user = sy-uname .
      ls_wa-change_date = sy-datum .
      ls_wa-change_time = sy-uzeit .
      
CONCATENATE sy-datum sy-uzeit INTO ls_wa-change_stamp  .
      total = ls_wa .
*      total-mandt = sy-mandt .
      
MODIFY total.
      
CHECK f_index GT 0.
      
extract = total.
      
MODIFY extract INDEX f_index.
    
ENDIF.
  
ENDLOOP.
  sy-subrc = 
0.

ENDFORM .                    "sub_check_before_save

 

 

 
阅读(1201) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

qdbarry2008-05-06 21:53:59

不错,如果写的再全面些就更好了:)