IBASE write buffer

127 阅读1分钟

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:

clipboard1

 

首先从DB读取IBASE header 内容,填充read buffer. 此时write buffer( PROC_TAB )为空:  

clipboard2

 

此处将最新的change 插入到write buffer:

clipboard3

 

read buffer的数据来自DB, external ID为空:

clipboard4

 

write buffer的值是report 传入的最新的external ID:

clipboard5

 

function group IBIBF里的function module执行完毕之后的buffer状态:

clipboard6

 

clipboard7