OAF_EO系列4 - Create详解和实现(案例)

简介: 2014-06-02 Created By BaoXinjian 一、摘要 实现OAF的新增功能insert的具体解析 建立EO时,在向导中选择生产Create Method,则EOImpl中会包含标准create() public void create(AttributeList attributelist) {    super.

2014-06-02 Created By BaoXinjian

一、摘要


实现OAF的新增功能insert的具体解析

建立EO时,在向导中选择生产Create Method,则EOImpl中会包含标准create()

public void create(AttributeList attributelist)

{

   super.create(attributeList);

}

在以上方法中可以加入初始化方法,在super.create后

当用户进行create record时,数据流向如下

Page Create Page Button->CO 中processFormRequest -> AM具体的create方法 ->VO具体的create的方法 ->EO 中的create方法

在Create时必须的VO进行初始化,新增Row以存放需create record的内容

1. 创建记录常用的两种方式

  • 在新增一个主界面上有个Create按钮,一旦触发该按钮,直接跳到一个明细页,用以新增记录
  • 在主Table上,有个Add New An Record按钮,一旦触发该按钮,直接在表后新增一个Record,用以新增记录

2. VO的数据的三个层次

  • View Object
  • Row
  • Attribute

3. EO Row的六个status

  • STATUS_NEW-> 新增记录状态
  • STATUS_DELETED-> 记录已被删除状态
  • STATUS_MODIFIED-> 记录已被修改状态
  • STATUS_UNMODIFED-> 记录未被修改或者已修改未提交
  • STATUS_DEAD-> 新增未提交即被删除
  • STATUS_INITALZIED -> 初始化状态

注意点:当执行EO的create()方法后,EO默认Row的状态为STATUS_NEW,这时,这条Row会被加入OAF的校验队列里,也就是说OAF会对这 条记录进行有效性的校验.这时,如果你的记录中有必填项,但新增时必然还没填入值,这校校验失败,OAF会返回错误信息,当然,新增动作也就失败了.因 此,我们可以加上row.setNewRowState(Row.STATUS_INITIALIZED)来设置记录状态为初始化状态,这样,这条记录将 不再进入校验队列,所以可以正常的建立,并输入值了

4. AM Create Date关键方法

public void createData()

 {

   OAViewObjectImpl vo1 = this.getOrderLineVO1(); //取得VO的实例

   Row row = vo1.createRow();  //新增记录

   vo1.insertRow(row); //插入记录

   row.setNewRowState(Row.STATUS_INITIALIZED); //置EO Row的状态

}

5. AM Commit Date关键方法

public void applyDate()

{

getOADBTransaction().commit();

}

 

二、案例1 - Create 按钮跳到明细页


案例:从主页面ExpenseSummary.PG通过按钮Create,跳转至明细页面ExpenseCreate.PG,对Expense进行新增

1. 通过ExpenseSummary.PG主界面中的Create按钮进行跳转

2. 跳转至明细页面ExpenseCreate.PG

2.1 在导入页面过程中,触发CO的processRequest方法

2.2 在CO中调用AM中初始化方法

2.3 AM在初始化VO和Row时,系统会自动调用EOImpl中的方法

由他文进行介绍,在此略过

2.4 处理后系统跳转至ExpenseCreate明细页面

3. 输入数据后,点击保存save按钮,对数据进行处理进入database

3.1 输入数据

3.2 触发CO中processFormRequest方法

3.3 在CO中调用AM中方法,对Transaction进行Commit

4. Commit后数据进入数据库,进行查看

 

 

三、案例2 - Add New Record对表结构后新增一行


案例:再进一步,结合上面,在定义对Expense Line进行操作,通过Add an new line对表新增行

1. 在点击Add an new line后触发CO中的代码,在通过CO触发AM中的关键初始化代码

2.  有些步骤就略去,看下图,点击add an new line后,系统会自动增加一行expense line,实现了Expense Header和Line的主从关

3. 新增后查看数据

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
关系型数据库 MySQL Unix
MySql基础-笔记5 -WHERE 、UPDATE、DELETE、LIKE、UNION使用
MySql基础-笔记5 -WHERE 、UPDATE、DELETE、LIKE、UNION使用
202 0
MySql基础-笔记5 -WHERE 、UPDATE、DELETE、LIKE、UNION使用
|
关系型数据库 定位技术 PostgreSQL
|
Java 关系型数据库
OAF_开发系列26_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(案例)
20150730 Created By BaoXinjian 一、摘要 并发程序调用Java类型的Concurrent Program 主要实现类 1. runProgram(CpContext cpContext):并发程序导入接口 2.
1720 0
|
SQL Oracle Java
OAF_开发系列25_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(概念)
20150719 Created By BaoXinjian 一、摘要 在是使用Form/Report/SQL等并发程式时,集中在数据的操作和处理上,但是在事物处理与系统交互有很大的局限性,没有Java程序方便, 因此需要EBS系统中注册并运行Java并发程序,通过Java的强大功能实现EBS的功能扩展   在Oracle EBS中的Java并发程序(Java Concurrent Program)是系统功能中的一个亮点,它的出现使得用户可以在ERP系统中运行自己定义的Java程序。
1993 0
|
测试技术
OAF_开发系列24_实现OAF更新记录显示Record History(案例)
20150716 Created By BaoXinjian 一、摘要 OAF页面控件中显示记录历史信息有如下的限制: 1. 首先当然是后台的表结构中必须包含WHO字段列了 2. 基于的视图对象必须是非PL/SQL的可更新VO 3.
1083 0
SAP MM BAPI_PO_CREATE1的用法
SAP MM BAPI_PO_CREATE1的用法   初步对BAPI_PO_CREATE1有了一点了解,下面对这个bapi做一些我的体会讲解: 下面先将程式上传, 在程式中我只简单的对poheader和poite...
2689 0