OAF_OAF增删改-修改的实现(案例)

简介: 2014-06-02 Created By BaoXinjian 一、摘要 实现OAF修改功能Update   二、案例 需求:实现修改功能 1. 建立Update按钮的连接 2. 设定触发事件为FireAction 3.

2014-06-02 Created By BaoXinjian

一、摘要


实现OAF修改功能Update

 

二、案例


需求:实现修改功能

1. 建立Update按钮的连接

2. 设定触发事件为FireAction

3. 在SearchInvoiceCO.java中添加如下方法

4. 建立UpdateInvoicePG

5. 在UpdateInvoiceCO.java中添加如下方法

6. 在InvoiceAM中添加如下方法

7. 在InvocieUpdateVO中添加如下方法

8. 在UpdateInvoiceCO.java中添加如下方法

9. 在InvoiceAM中添加如下方法

 

三、案例实现


1. 建立Update的连接

    

 

2. 设定触发事件为FireAction

    

 

3. 在SearchInvoiceCO.java中添加如下方法

 1 public void processFormRequest(OAPageContext pageContext,OAWebBean webBean) {
 2 
 3     super.processFormRequest(pageContext, webBean);
 4 
 5     /**按下更改发票Button,触发AM中的AmUpdateInvocie方法**/
 6 
 7     if ("update".equals(pageContext.getParameter(EVENT_PARAM))) {
 8 
 9         OAApplicationModule am = pageContext.getApplicationModule(webBean);
10 
11         pageContext.setForwardURL("OA.jsp?page=/oracle/apps/bxj/ap/invoice/webui/UpdateInvoicePG",
12 
13                                    null,
14 
15                                    OAWebBeanConstants.KEEP_MENU_CONTEXT,
16 
17                                    null,
18 
19                                    null,
20 
21                                    true,
22 
23                                    OAWebBeanConstants.ADD_BREAD_CRUMB_NO,
24 
25                                    OAWebBeanConstants.IGNORE_MESSAGES);
26 
27     }
28 
29 }

 

4. 建立UpdateInvoicePG

    

 

5. 在UpdateInvoiceCO.java中添加如下方法

 1 public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
 2 
 3     super.processRequest(pageContext, webBean);
 4 
 5     /**从SearchInvoice调转至UpdateInvoice,对修改发票页面初始化**/
 6 
 7     String InvoiceId = pageContext.getParameter("InvoiceId");
 8 
 9     if (!pageContext.isBackNavigationFired(false)) {
10 
11         TransactionUnitHelper.startTransactionUnit(pageContext,"UpdateInvoiceTxn");
12 
13         if (!pageContext.isFormSubmission()) {
14 
15             Serializable[] params = { InvoiceId };
16 
17             OAApplicationModule am = pageContext.getApplicationModule(webBean);
18 
19             am.invokeMethod("AmInitUpdateInvoice",params);
20 
21         }
22 
23     } else {
24 
25         if (!TransactionUnitHelper.isTransactionUnitInProgress(pageContext,"UpdateInvoiceTxn",true)) {
26 
27             OADialogPage dialogPage = new OADialogPage(NAVIGATION_ERROR);
28 
29             pageContext.redirectToDialogPage(dialogPage);
30 
31         }
32 
33     }
34 
35 }

 

6. 在InvoiceAM中添加如下方法

 1 /**显示Invoice 明细页面**/
 2 
 3 public void AmShowInvoice(String InvoiceId){
 4 
 5     InvoiceDetailVOImpl vo = getInvoiceDetailVO1();
 6 
 7     if (vo == null) {
 8 
 9         MessageToken[] errtokens = {new MessageToken("OBJECT_NAME","InvoiceDetailVO1")};
10 
11         throw new OAException("AK","FWK_TBX_OBJECT_NOT_FOUND",errtokens);
12 
13     }
14 
15     vo.VoShowInvoice(InvoiceId);
16 
17 }

 

 

7. 在InvocieUpdateVO中添加如下方法

 1 /**从SearchInvoice页面跳转至UpdateInvoice页面,实现自动查询**/
 2 
 3 public void VoShowInvoice(String InvoiceId) {
 4 
 5     if ((InvoiceId != null) & (!("".equals(InvoiceId.trim())))) {
 6 
 7         Number Invoice_Id = null;
 8 
 9         try {
10 
11             Invoice_Id = new Number(InvoiceId);
12 
13         } catch (Exception e) {
14 
15             throw new OAException("CUX", "CUX_INVOICE_INVALID_NOTIFY_ID");
16 
17         }
18 
19         setWhereClause("INVOICE_ID = :1");
20 
21         setWhereClauseParams(null);
22 
23         setWhereClauseParam(0, Invoice_Id);
24 
25         executeQuery();
26 
27     }
28 
29 }

 

8. 在UpdateInvoiceCO.java中添加如下方法

 1 public void processFormRequest(OAPageContext pageContext,OAWebBean webBean) {
 2 
 3     super.processFormRequest(pageContext, webBean);
 4 
 5     /**按下确定Button后,调用修改Invoice的AM 方法**/
 6 
 7     OAApplicationModule am = pageContext.getApplicationModule(webBean);
 8 
 9     if (pageContext.getParameter("Apply") != null) {
10 
11         OAViewObject vo = (OAViewObject)am.findViewObject("UpdateInvoiceVO1");
12 
13         am.invokeMethod("AmUpdateApply", null);
14 
15         TransactionUnitHelper.endTransactionUnit(pageContext,"UpdateInvoiceTxn");
16 
17         pageContext.forwardImmediately("OA.jsp?page=/oracle/apps/bxj/ap/invoice/webui/SearchInvoicePG",
18 
19                                         null,
20 
21                                         OAWebBeanConstants.KEEP_MENU_CONTEXT,
22 
23                                         null, null, true,
24 
25                                         OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
26 
27     } else if (pageContext.getParameter("Cancel") != null) {
28 
29         am.invokeMethod("AmCreateRollback", null);
30 
31         TransactionUnitHelper.endTransactionUnit(pageContext, "CreateInvoiceTxn");
32 
33         pageContext.forwardImmediately("OA.jsp?page=/oracle/apps/bxj/ap/invoice/webui/SearchInvoicePG", null,
34 
35                                        OAWebBeanConstants.KEEP_MENU_CONTEXT,
36 
37                                        null,null,true,
38 
39                                        OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
40 
41     }
42 
43 }

 

9. 在InvoiceAM中添加如下方法

1 /**修改Invoice,将资料做Commit**/
2 
3 public void AmUpdateApply() {
4 
5     getTransaction().commit();
6 
7 }

 

Thanks and Regards

参考:Oracle Developer Guide

参考:王重东 OAF开发笔记

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
关系型数据库 MySQL 数据库管理
netcore2.0 ORM框架中如何配置自定义的主外键加载
环境:netcore2.0 DB :mysql ORM:Ant https://github.com/yuzd/AntData.ORM/tree/netcore2 [给我一个star吧] NUGET:Install-Package AntData.
1221 0
|
Oracle 关系型数据库
OAF_开发系列20_实现OAF打印功能
ddddd   添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePageButton,设置属性集为:/oracle/apps/fnd/attributesets...
1195 0
OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)
20150716 Created By BaoXinjian 一、摘要 TransactionUnitHelper用以创建一个被标记的Transaction,个人感觉类似PLSQL SavePoint用以Commit和Rollback特定交易的作用 主要用法 1.
1125 0
|
关系型数据库 Oracle
OAF_开发系列14_实现OAF代码动态新增控件
dERP技术讨论群: 288307890 技术交流,技术讨论,欢迎加入 Technology Blog Created By Oracle ERP - 鲍新建
1129 0
|
测试技术
OAF_开发系列15_实现OAF组件重用和继承(案例)
20150717 Created By BaoXinjian 一、摘要 组件的重用和继承 如果你想包含共享对象到你的页面中,你可以简单继承它们。 比如,在OAFToolBox Sample Library/Tutorial中,我们创建了一个通用区域(名为OrganizationRN),因此同样的内容不需要编码就可以包含在多个页面中。
948 0
|
关系型数据库 测试技术
OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)
20150715 Created By BaoXinjian 一、摘要 Oracle OAF Guide上介绍的标准客制化查询的方式,在多条件下进行查询 具体实现步骤如下 Step1.在controler中的processRequest 的方法中调用 (1).
1641 0
|
SQL Oracle 关系型数据库
OAF_开发系列10_实现OAF动态LOV设定
20150712 Created By BaoXinjian 一、摘要 要在OAF中动态创建LOV的功能是很复杂的一件事,本文所讲述的动态LOV创建场合用于事先不能知道页面上会有多少个LOV,而且LOV所使用的SQL查询,也是由用户交互而获得的。
934 0
|
测试技术
OAF_开发系列04_实现OAF查询4种不同的实现方式的比较和实现(案例)
2014-06-02 Created By BaoXinjian 一、摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2).
1787 0
|
SQL 数据库
OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)
2014-06-26 Created By BaoXinjian 一、摘要 在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中; 如果不存在改动的数据,就提示用户当前没有数据可更改; 解决时需要判断页面中所使用的视图对象是否发生过改动,存在多种方法   1. 调用OADBTransaction.isDirty()方法 此方法用于判断当前事务中,视图对象是否发生过变更。
1204 0
|
Oracle 关系型数据库 数据库
OAF_文件系列3_实现OAF多行表中附件功能AttachmentImage(案例)
20150727 Created By BaoXinjian 一、摘要 EBS OAF中如何在多行表中实现附件功能 在OAF中使用附件功能之前,要先明白Entity(实体)的概念。 一个Entity是Oracle E-BussinessSuite的一个数据对象,比如一个物料,一个订单或者一个订单行。
1764 0