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