客户化AP子模块iExpenses(R11)
已有 2054 次阅读2007/11/15 21:55
对比一下R11和R12,iExpenses还是有些区别的,R11的解决方案如下:
此方案的主要思路是,在多步骤创建的每个页面上,处理“下一页”这个按钮的事情,及时保存当前页面的信息
1、对应于创建费用报表的第一步“一般信息”的页面为GeneralInfomationPG,对应的顶层CO为EntryFlowPageCO(oracle.apps.ap.oie.entry.webui.EntryFlowPageCO)
2、对应于创建费用报表的第四步“现金和其他费用”的页面为CashAndOtherLinesPG,对应的顶层CO为EntryFlowPageCO
3、在JDeveloper中继承EntryFlowPageCO,派生新类BaiduEntryFlowPageCO(baidu.oracle.apps.ap.oie.entry.webui.BaiduEntryFlowPageCO)
4、在新类中的processFormRequest方法中增加如下代码:
import oracle.apps.ap.oie.webui.NavigationUtility;
...
super.processFormRequest(pageContext, webBean);
String s = NavigationUtility.getCurrentPage(oapagecontext);
OAApplicationModule aapplicationmodule = oapagecontext.getRootApplicationModule();
if(NavigationUtility.isNextClicked(oapagecontext))
{
if(s.equals("CashAndOtherLinesPG"))
((WebExpensesAMImpl)oaapplicationmodule).updateForSaveOrDuplicate(Boolean.TRUE, Boolean.TRUE);
oapagecontext.getRootApplicationModule().invokeMethod("saveExpenseReportFromWeb");
MessageToken amessagetoken[] = {
new MessageToken("INVOICENUM", (String)oaapplicationmodule.invokeMethod("getInvoiceNum")), new MessageToken("REPORTTOTAL", (String)oaapplicationmodule.invokeMethod("getReportTotal"))
};
OAException oaexception2 = new OAException("SQLAP", "OIE_EXP_REPORT_SAVE", amessagetoken, (byte)2, null);
oaexception2.setApplicationModule(oaapplicationmodule);
oapagecontext.putDialogMessage(oaexception2);
oapagecontext.putParameter("ButtonLink", "ValidateForSave");
}
...
5、修改GeneralInfomationPG,设置ID为GeneralInformationPG的Region的Controll Class为baidu.oracle.apps.ap.oie.entry.webui.BaiduEntryFlowPageCO
6、修改CashAndOtherLinesPG,设置ID为CashAndOtherLinesPG的Region的Controll Class为baidu.oracle.apps.ap.oie.entry.webui.BaiduEntryFlowPageCO
7、import这二个页面
8、FTP新的CO到JAVA_TOP
9、重启Appache
此方案在用户点击“下一页”时,会自动保存当前页的内容,这样就可以避免填写的费用数据因为长时间没有操作而造成数据丢失。