参数含义:
输入参数:
TABLE_OLD:旧表
TABLE_NEW:新表
KEY_LENGTH:键长度,指定内表中的前若干个字节为主键,做为内表行是否为增加的判断条件。
IF_SORTED:排序标记,如果已排序,在比较时可以提高效率。
输出参数:
TABLE_DEL:被删除的行
TABLE_ADD:被增加的行
TABLE_MOD:被修改的行
NO_CHANGES:表没有被修改的标记,如果这个标记为 “X”,表示TABLE_OLD和TABLE_NEW内容没有改变,如果为空则说明这两个内表内容不一致
例子代码:
DATA:git_ekpo1 TYPE STANDARD TABLE OF ekpo,
git_ekpo2 TYPE STANDARD TABLE OF ekpo,
git_del TYPE STANDARD TABLE OF ekpo,
git_mod TYPE STANDARD TABLE OF ekpo,
git_add TYPE STANDARD TABLE OF ekpo,
l_no_changes TYPE c.
SELECT *
FROM ekpo
INTO TABLE git_ekpo1
UP TO 10 ROWS.
git_ekpo2[] = git_ekpo1[].
* 将git_ekpo2排序,排序后与git_ekpo1中内容的顺序就不同了
SORT git_ekpo2 BY ebeln DESCENDING.
CALL FUNCTION 'CTVB_COMPARE_TABLES'
EXPORTING
table_old = git_ekpo2
table_new = git_ekpo1
key_length = 100 "键长度,指定内表中的前若干个字节为主键,做为内表行是否为增加的判断条件。
IMPORTING
table_del = git_del "new比old 少的数据
table_add = git_add "new比old 多的数据
table_mod = git_mod "new中修改的数据
no_changes = l_no_changes."X,表示两个内表内容相同,空-不相同
* 尽管两个内表数据顺序不同,还是认为两个内表内容是相同的,l_no_changes = 'X'
WRITE:/ '1st,', l_no_changes.
APPEND LINES OF git_ekpo1[] TO git_ekpo2[].
CALL FUNCTION 'CTVB_COMPARE_TABLES'
EXPORTING
table_old = git_ekpo2
table_new = git_ekpo1
key_length = 100 "内表比较的key键
IMPORTING
table_del = git_del "new比old 少的数据
table_add = git_add "new比old 多的数据
table_mod = git_mod "new中修改的数据
no_changes = l_no_changes."X,表示两个内表内容相同,空-不相同
WRITE:/ '2nd,', l_no_changes.