注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

原来为了你

我的人生就是要一次次的超越

 
 
 

日志

 
 
 
 

内表对比函数  

2011-08-16 16:10:46|  分类: ABAP基础知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

*这个函数模块比较两个内表,将被删除、增加和修改的内表行分别分组输出。
*
*输入参数:
*TABLE_OLD:旧表
*TABLE_NEW:新表
*KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Unicode 系统中为字符,因此指定长度内不能存在数值类型的字段)为主键,做为内表行是否为增加的判断条件。
*IF_SORTED:排序标记,如果已排序,在比较时可以提高效率。
*
*输出参数:
*TABLE_DEL:被删除的行
*TABLE_ADD:被增加的行
*TABLE_MOD:被修改的行
*NO_CHANGES:表没有被修改的标记,如果这个标记为 “X”,就不必去读前面三个内表了。

databegin of itab occurs 0,
        field1
(3),
        field2
(3),
      
end of itab.

dataold_tab like table of itab with header line,
      new_tab 
like table of itab with header line.

old_tab
-field1 'aaa'.
old_tab
-field2 '111'.
append old_tab.

old_tab
-field1 'bbb'.
old_tab
-field2 '222'.
append old_tab.

new_tab
-field1 'aaa'.
new_tab
-field2 '111'.
append new_tab.

new_tab
-field1 'bbb'.
new_tab
-field2 '122'.
append new_tab.

datadel_tab like table of itab with header line,
      add_tab 
like table of itab with header line,
      mod_tab 
like table of itab with header line.

call function 'CTVB_COMPARE_TABLES'
  
exporting
    table_old  
old_tab[]
    table_new  
new_tab[]
    key_length 
8 "内表主键的长度,注意是数据库长度,Unicode要乘2,比较前四个字符就行了,所以4*2 = 8.此值决定了修改还是删添
    if_sorted  
'X'
  
importing
    table_del  
del_tab[]
    table_add  
add_tab[]
    table_mod  
mod_tab[].

write/'del_tab:'.
loop at del_tab.
  
write:/ del_tab-field1del_tab-field2.
endloop.

write/'add_tab:'.
loop at add_tab.
  
write:/ add_tab-field1add_tab-field2.
endloop.

write/'mod_tab:'.
loop at mod_tab.
  
write:/ mod_tab-field1mod_tab-field2.
endloop.

  评论这张
 
阅读(241)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018