zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Object component的各种标识符

object 各种 Component 标识符
2023-09-14 09:03:03 时间

Created by Jerry Wang, last modified on May 12, 2014

UI上的object component 用ID 来区分: 110056
clipboard1
用下列的代码能够根据ID 得到该component的其他三个ID:

data: i_comp type IBAP_DAT1,
      i_comp_det type IBAP_COMP2.
i_comp-instance = '110056'.
call function 'CRM_IBASE_COMP_GET_DETAIL'
  EXPORTING
     i_comp = i_comp
  IMPORTING
     E_COMP_DET = I_comp_det.
WRITE: / i_comp_det-guid_comp.
WRITE: / i_comp_det-guid_compc.
WRITE: / i_comp_det-objnr.

clipboard2
在UI上修改description保存之后再call 一次,发现GUID_COMP发生了变化,但 guid_compc和objnr始终不变:
clipboard3

debug FM CRM_IBASE_COMP_GET_DETAIL的逻辑,发现guid_comp和guid_compc都是动态计算出来的:
clipboard4
guid_comp来自object component的in_recno field, 而guid_compc 来自objnr.
clipboard5
当修改Object component之后,会在DB里面将对应entry的VALTO 更新成change时的timestamp,同时插入以change timestamp作为valid from 插入一条新的entry. 两条entry的in_guid和in_objnr都保持不变,只有in_recno发生变化,因此CRM_IBASE_COMP_GET_DETAIL的最后输出里,guid_compc和objnr保持不变( time independent ), 而guid_comp则每次change都会发生变化。
clipboard6