CL_GUI_ALV_GRID_BASE->MT_MODIFIED_CELLS在网格控件中是个非常重要的属性,sap是如何将客户端的编辑数据自动回写到该内表的,这对希望增强网格控件的 ABAPER兄弟会有很多作用。我现在就将我的理解写下来,供大家参考。
1)在创建CL_GUI_ALV_GRID_BASE的对象,会调用SET_INFO_TABLE方法为MT_MODIFIED_CELLS创建一个CL_GUI_DATAPONDEMAND对象,并把MT_MODIFIED_CELLS的地址传递到CL_GUI_DATAPONDEMAND的M_DATAPTR属性;
2)调用CL_GUI_DATAPONDEMAND->control_assign_prop进行注册全局静态内表“M_RUNNINGOBJECTS”,该内表包含下列字段
begin of runningdataobjs,
handle type i, "CL_GUI_DATAPONDEMAND的唯一ID号,系统每建一个会自动加一
obj type ref to cl_gui_datapondemand,"刚创建的CL_GUI_DATAPONDEMAND对象的地址
Is_Killed(1) type C, "Y6BK003062 "是否Kill
end of runningdataobjs ,
到这,系统就已经为未来回传数据准备好了信息。
在AS得到回传的XML数据,经过对应的LCL_MYXMLConsumer的子类进行处理回写控件的属性和内表。那么CL_GUI_ALV_GRID_BASE->MT_MODIFIED_CELLS又是怎么写回去的呢?
1)AS会分析客户端回传的XML数据,根