原型:
一张表,要求实现可以动态的增加和删除一行,删除要求标记删除。
表的node来源于Componments_List.
解决思想:
在Componments_List节点里增加一个新的节点delete_Ind,boolean型。新建一个节点C_Componments_List和Componments_List节点内容一致,在界面显示利用Componments_List节点,删除前,标记delete_Ind值为true,同时在C_Componments_List里新建节点将之copy到C_Componments_List里,然后在Componments_List节点里将之删除.
保存时,再将C_Componments_List节点的内容完全copy到C_Componments_List节点里,传给r/3.
具体实现(片段):
//增加一行
public void onActionAddItems(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionAddItems(ServerEvent)
IComponments_ListNode node = wdContext.nodeComponments_List();
node.addElement(node.createComponments_ListElement(new Zjxeppm_Tab05()));
//@@end
}
//删除一行
public void onActionDelItems(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionDelItems(ServerEvent)
IComponments_ListNode node = wdContext.nodeComponments_List();
IC_Componments_ListNode Cnode = wdContext.nodeC_Componments_List();
if (node.currentComponments_ListElement() != null) {
IC_Componments_ListElement item = Cnode.createC_Componments_ListElement();
WDCopyService.copyCorresponding(node.currentComponments_ListElement(),item);
item.setDelete_Ind(true);//mark to delete.
Cnode.addElement(item);
node.removeElement(node.currentComponments_ListElement());
}
//@@end
}
//保存
IComponments_ListNode node = wdContext.nodeComponments_List();
IC_Componments_ListNode Cnode = wdContext.nodeC_Componments_List();
input.setAction_Type((node.size() > 0) ? "U" : "N");
//copy corresponding context to componments_List
for(int i = 0;i<Cnode.size();i++){
IComponments_ListElement item = node.createComponments_ListElement(new Zjxeppm_Tab05());
WDCopyService.copyCorresponding(Cnode.getC_Componments_ListElementAt(i),item);
node.addElement(item);
}
for (int i = 0; i < node.size(); i++) {
Zjxeppm_Tab05 tab05 = new Zjxeppm_Tab05();
WDCopyService.copyCorresponding(node.getComponments_ListElementAt(i), tab05);
input.addComponments_List(tab05);
}
......
input.execute();
......
一张表,要求实现可以动态的增加和删除一行,删除要求标记删除。
表的node来源于Componments_List.
解决思想:
在Componments_List节点里增加一个新的节点delete_Ind,boolean型。新建一个节点C_Componments_List和Componments_List节点内容一致,在界面显示利用Componments_List节点,删除前,标记delete_Ind值为true,同时在C_Componments_List里新建节点将之copy到C_Componments_List里,然后在Componments_List节点里将之删除.
保存时,再将C_Componments_List节点的内容完全copy到C_Componments_List节点里,传给r/3.
具体实现(片段):
//增加一行
public void onActionAddItems(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionAddItems(ServerEvent)
IComponments_ListNode node = wdContext.nodeComponments_List();
node.addElement(node.createComponments_ListElement(new Zjxeppm_Tab05()));
//@@end
}
//删除一行
public void onActionDelItems(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionDelItems(ServerEvent)
IComponments_ListNode node = wdContext.nodeComponments_List();
IC_Componments_ListNode Cnode = wdContext.nodeC_Componments_List();
if (node.currentComponments_ListElement() != null) {
IC_Componments_ListElement item = Cnode.createC_Componments_ListElement();
WDCopyService.copyCorresponding(node.currentComponments_ListElement(),item);
item.setDelete_Ind(true);//mark to delete.
Cnode.addElement(item);
node.removeElement(node.currentComponments_ListElement());
}
//@@end
}
//保存
IComponments_ListNode node = wdContext.nodeComponments_List();
IC_Componments_ListNode Cnode = wdContext.nodeC_Componments_List();
input.setAction_Type((node.size() > 0) ? "U" : "N");
//copy corresponding context to componments_List
for(int i = 0;i<Cnode.size();i++){
IComponments_ListElement item = node.createComponments_ListElement(new Zjxeppm_Tab05());
WDCopyService.copyCorresponding(Cnode.getC_Componments_ListElementAt(i),item);
node.addElement(item);
}
for (int i = 0; i < node.size(); i++) {
Zjxeppm_Tab05 tab05 = new Zjxeppm_Tab05();
WDCopyService.copyCorresponding(node.getComponments_ListElementAt(i), tab05);
input.addComponments_List(tab05);
}
......
input.execute();
......