Created by Jerry Wang, last modified on Apr 22, 2014
使用如下report 测试IBASE write buffer:
PARAMETERS: id TYPE ibap_head1-ibase OBLIGATORY DEFAULT '3314',
txt TYPE ibib1-extid OBLIGATORY DEFAULT 'c by code'.
DATA: ls_ibib TYPE ibib1,
ls_header TYPE ibap_head1,
ls_ibibt TYPE ibibt1.
ls_header-ibase = '3314'.
CALL FUNCTION 'CRM_IBASE_GET_DETAIL'
EXPORTING
i_ibase_head = ls_header
i_level_down = 1
IMPORTING
e_ibib1 = ls_ibib
e_ibibt1 = ls_ibibt
EXCEPTIONS
not_specified = 1
doesnt_exist = 2
no_authority = 3
OTHERS = 4.
assert sy-subrc = 0.
ls_ibib-extid = txt.
CALL FUNCTION 'CRM_IBASE_CHANGE'
EXPORTING
i_ibase_head = ls_header
i_ibib1 = ls_ibib
i_ibibt1 = ls_ibibt
EXCEPTIONS
data_not_consistent = 1
ibase_locked = 2
not_succesful = 3
no_authority = 4
OTHERS = 5.
case sy-subrc.
WHEN 0.
WRITE: / 'change successful' COLOR COL_GROUP.
WHEN 1.
WRITE: / 'data not consistent' COLOR COL_NEGATIVE.
WHEN 2.
WRITE: / 'IBASE locked' COLOR COL_NEGATIVE.
WHEN 3.
WRITE: / 'change failed' COLOR COL_NEGATIVE.
WHEN 4.
WRITE: / 'no authorization' COLOR COL_NEGATIVE.
ENDCASE.
执行report:
首先从DB读取IBASE header 内容,填充read buffer. 此时write buffer( PROC_TAB )为空:
此处将最新的change 插入到write buffer:
read buffer的数据来自DB, external ID为空:
write buffer的值是report 传入的最新的external ID:
function group IBIBF里的function module执行完毕之后的buffer状态: