ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
CL_GUI_ALV_GRID_BASE->MT_MODIFIED_CELLS在網(wǎng)格控件中是個(gè)非常重要的屬性,sap是如何將客戶端的編輯數(shù)據(jù)自動回寫到該內(nèi)表的,這對希望增強(qiáng)網(wǎng)格控件的 ABAPER兄弟會有很多作用。我現(xiàn)在就將我的理解寫下來,供大家參考。
?
1)在創(chuàng)建CL_GUI_ALV_GRID_BASE的對象,會調(diào)用SET_INFO_TABLE方法為MT_MODIFIED_CELLS創(chuàng)建一個(gè)CL_GUI_DATAPONDEMAND對象,并把MT_MODIFIED_CELLS的地址傳遞到CL_GUI_DATAPONDEMAND的M_DATAPTR屬性;
2)調(diào)用CL_GUI_DATAPONDEMAND->control_assign_prop進(jìn)行注冊全局靜態(tài)內(nèi)表“M_RUNNINGOBJECTS”,該內(nèi)表包含下列字段
? begin of runningdataobjs,
?????????? handle type i,????"CL_GUI_DATAPONDEMAND的唯一ID號,系統(tǒng)每建一個(gè)會自動加一
?????????? obj??? type ref to cl_gui_datapondemand,"剛創(chuàng)建的CL_GUI_DATAPONDEMAND對象的地址
?????????? Is_Killed(1) type? C,? "Y6BK003062 "是否Kill
??????? end of runningdataobjs ,
到這,系統(tǒng)就已經(jīng)為未來回傳數(shù)據(jù)準(zhǔn)備好了信息。
?
在AS得到回傳的XML數(shù)據(jù),經(jīng)過對應(yīng)的LCL_MYXMLConsumer的子類進(jìn)行處理回寫控件的屬性和內(nèi)表。那么CL_GUI_ALV_GRID_BASE->MT_MODIFIED_CELLS又是怎么寫回去的呢?
1)AS會分析客戶端回傳的XML數(shù)據(jù),根據(jù)XML的項(xiàng)目首先會為'DATACHANGES'創(chuàng)建LCL_MYTABDATACHANGECONSUMER的對象;
2)(CL_GUI_DATAPONDEMAND的唯一ID號)調(diào)用call method ('CL_GUI_DATAPONDEMAND')=>('GET_WRITE_ACCESS')從全局靜態(tài)內(nèi)表“M_RUNNINGOBJECTS”獲得對應(yīng)控件數(shù)據(jù)的CL_GUI_DATAPONDEMAND對象賦值給LCL_MYTABDATACHANGECONSUMER的對象的m_dataaccess屬性。
3)在LCL_MYTABDATACHANGECONSUMER的對象的OnExecute將通過m_dataaccess屬性調(diào)用CL_GUI_DATAPONDEMAND對象的On_Modify,On_Remove等方法回寫數(shù)據(jù)。
這樣數(shù)據(jù)就會寫到了MT_MODIFIED_CELLS的內(nèi)表中。
總結(jié)
以上是生活随笔為你收集整理的ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EDITOR-CALL语句的使用:修改a
- 下一篇: 半成品的借出发外