ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » ERP二次开发 » Application(EBS)开发整理

标题: [精华] Application(EBS)开发整理
离线 huajhua
灵机一动


精华贴数 21
个人空间 0
技术积分 5001 (269)
社区积分 19 (7760)
注册日期 2004-5-20
论坛徽章:13
管理团队成员管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员ERP板块每日发贴之星
      

发表于 2005-3-10 23:32 
Application(EBS)开发整理

我的其他帖子总链接:
http://www.itpub.net/442423.html

Profile:一个Profile其实就是一个参数,在开发员职责里面定义,注意这个时候选择的Application仅仅是方便管理,对以后的使用没有限制;一个Profile的具体值需要在系统管理员职责里面定义,可以分别在四个层次上定义,即Site/Application/Responsibility/User,具体来说可以给任意一个Site或任意一个Application或任意一个Resp或任意一个User定义这个Profile的值,可以四个层次都定义,也可以定义某几个层次;对于一个Session来说,一个Profile到底取什么值是和上面的定义有关系的,即后面的覆盖前面的,如果它定义了的话。我们可以通过fnd_profile.value('Profile_Name')来取得当前会话的Profile值,库存组织profile是mfg_organization_id


在用fnd_request.submit_request的时候,第五个参数用false,不要被参数名称误导;这个函数有105个参数,前面五个定义请求本身,后面100个是传递给请求的具体参数,都是Char类型,我们需要转换,默认值是chr(0),代表这个参数不用传递给调用的请求;在Package里面调用只需要传递需要的参数个数,因为它有默认值指示结束;在form里面则不行,要写满105个,而且我们参数结束之后要用一个chr(0)来表示结束

用submit_request的时候,其实最终还是向fnd_concurrent_requests(另外我们定义的request是保存在Fnd_Concurrent_Programs里面的)里面插入一行数据,如果不提交的话,该请求是不会真正开始运行的,所以我们一般在submit_request之后来个Commit,否则的话如果使用wait_for_request的话会无限期等待下去;在Form里面需要注意的是,必须使块基于数据库,不然没得Commit。假如在一个请求内部使用了submit_request,特别注意的是需要检查Concurrent Manager的Process数至少为2,否则上述两个请求会处于死锁状态


数据库表中的Org_Id或者Organization_Id对初学者来说往往搞不清楚是哪个层次的组织,一般来说前者是OU,后者是库存组织,然而这也不一定,有一个简易的方法是,只要我们碰到Item,比如在订单中,那么一般是指库存组织

_all,基表,保存多组织数据,里面有一个Org_Id字段,一般不直接出现在我们的DML中
去掉_all的视图,根据用户环境过滤掉组织,相当于普通的基表,我们直接使用它,就当它是基表
_v,视图,给Form用
_kfv,启用关键性弹性域的时候动态生成的视图,包含Concact过的字段组合
_dfv,启用描述性弹性域的时候动态生成的视图,我们取弹性域子段的描述的时候,需要用用户出口函数。。。。。。。。。。。
_tl,基表,有language字段,us肯定有,其他的看安装
_vl,视图,根据环境设置过滤语种,所以做报表用_vl
_s,序列号
_API,Package,保证向后兼容
_PKG,Package,Program
_SV,Package,供Form调用
rowid,伪列,指明记录物理位置,文件号+块号等,具体的我也不清楚
rownum,伪列,指明符合条件的记录的记录号,需要注意的是这个记录号在Order By之前就已经决定,如果想用Order By之后的记录号,只能再套一层Select
level,伪列,指明树状结构记录的层次,以下示例代码可作为Form Tree的数据源
        select 1 state, level, CUSTOMER_NAME,null,CUSTOMER_ID
        from da_customers a
        start with PARENT_CUSTOMER_ID = -1
        connect by prior  CUSTOMER_ID =  PARENT_CUSTOMER_ID
who,五个记录创建及修改历史的字段,可以通过OA的Help/Record History菜单查看
attribute_xxx,描述性弹性域字段


文件系统File system的层次一般是$APPL_TOP/$MODULE_TOP such as $GL_TOP,$AU_TOP/Version/forms,reports,sql,.../EN,ZHS,...五个层次,在URL中有一个语言参数,它的值是根据用户当前的NLS_LANG设置来的;假如指明是中文,那么Form Server会到ZHS下取文件,在任何其他语言对应的目录下找不到文件的话,系统都会到EN目录下取,假如还取不到,这个时候才报错。AU指Application Utility,我们编写的Form源文件一般放在$AU_TOP/Version/forms/LANG下,而PLL源文件一般放在$AU_TOP/Version/resource下,但编译的时候前者要放到对应应用的对应语言的目录下,而后者还是在源目录;对于Report,则直接放在对应应用的对应语言下,不需要编译

一个用户对应一个或多个responsibility,一个responsibility对应一个或多个menu,一个底层menu对应一个function,一个function对应一个form或者一个报表或者一个程序;一个responsibility对应一个请求组,一个请求组对应一个或多个报表和程序,这个应该放过来说,在定义报表的时候可以选择哪个请求组;一个responsibility对应一个Application,这个不要和该responsibility拥有的菜单混淆,菜单没有限制

Attachements
Oracle的附件给我们提供了一个方便的功能,只要定义定义,不需要任何代码就可以实现附件功能,比弹性域还方便(当然功能没有弹性域强)
定义Attachements比较容易,遵循115devg中的Attachements章节即可完成。
fnd_attached_*****系列的表保存我们在开发员职责里面的附件定义
fnd_documents_****系列的表保存最终用户的具体的附件业务数据,file类型的附件存储在fnd_lobs表中
fnd_documents_tl.media_id可以关联到fnd_lobs.file_id、fnd_documents_long_text.media_id、fnd_documents_shot_text.media_id取得相应的附件内容
定义过程如下
1、定义Entity实体,其实就是表,必须的
        Table                        输入表名即可
        Entity ID                输入表名即可,如果在同一个标定义多个实体,可以用“表名_N”的形式,随便
        Entity Name                输入一个比较友好的名字,这个名字要显示给用户看
        Prompt                        没什么用
        Application                就是我们的应用;如果是定义在Oracle标准表上,最好也用我们自己的应用名,否则升级的时候会丢失
2、定义Document Categories,其实就是定义一个类别或者说一个标志,可以直接用系统的Miscellaneous这个类别,可选的
        Category                输入任意一个名字即可
        Default Datatype        随便选一个,最好选会应用这个Category最常用的类型,比如文件
        Effective Date                默认,不填即可
        Assinments按钮                这里不用管
3、定义Attachement Function,必须的
        Type                        一个Form可能关联几个Function(进一步关联几个菜单),如果附件在不同的Function下可能不同,比如Category不同(从而可以过滤附件,这就是所谓的安全性),这里选Function;如果附件不需要区分Function,这里就选Form
        Name                        Form或者Function的名字
        User Name                自动出来
        Session Context                我没用它
        Enabled                        打勾
4、点击Category按钮,为上面定义的Attachement Function选择刚才定义的Category,或者选择Miscellaneous,可以选择任意个,必须的
**Category的工作原理:Category本身仅仅是一个标志,就像我们部门字典表一样;一个Form(或者其Function)会关联到一个或多个Category(就是在这里定义);最终用户在把一个附件添加到这个Form上的一条记录上时,必定会指定属于某个Category,可选范围就是这里定义的;到这里Category还没有显示出什么作用,也就是如果仅仅一个地方会用到这个附件,Category就没什么用。如果同一个实体的附件会在其他Form上出现,就像115devg文档所说的,一个Product的附件可以在Order Line上被显示出来,假如用户上传了一个图片作为附件,并分配Category为xxxxx,如果Order Form的Category没有包含xxxxx,在Order Line上将看不到那个附件。按我的理解,就这样。

5、定义Attachement Function Block,定义我们Form上包含附件的数据块,每个块都可以定义,必须的
        Block Name                输入块名,不要告诉我你不知道!
        Method                        一般Base Entity选Allow Change,如果是引用的选Query Only
        Secured By                这个可以进一步限制安全性,可以不定;这里我不多说,如果不清楚再找我
       
6、定义Block-Entity关系,必须的
        Entity                        选择上面定义的实体,一行一个
        Display Method                基础实体选择Main Window,引用实体选择Related Window
        Include in Indicator        基础实体打勾,引用实体不选;这个选项其实就是用来初始化工具栏上的图标,选不选都不影响功能
        Indicator in View        我没选
        操作许可                分别定义Query/Insert/Update/Delete,基础实体一般允许全部操作,引用对象不能有Insert,其他的看需要
        定义条件                根据条件更加灵活的定义“操作许可”范围;这里我不多说,如果不清楚再找我

7、定义关键字段,一般是主键,这里指块上的Item而非表里面的,所以需要用“块名.Item名”,必须的
        按顺序定义,如果基础块的实体不定义主键,仍然可以工作,但在引用块将看不到,这是我碰到的问题
8、定义SQL Statement,附加的限制条件,就像我们在Form开发时定义的Where Clause一样,一般没用,可选的
使用过程如下
1、打开我们的Form,查询记录或者输入新记录
2、注意工具栏上的Attachment按钮时可用的,点击
3、出来附件窗口,想怎么玩都行
最好用IE浏览器打开Oracle Application,有些基于IE内核的浏览器可能无法打开附件上传窗口


__________________
技术为本.业务为纲  文化为本.管理为纲  ERP千里之行,始于足下
帖子总目录:http://www.itpub.net/442423.html
大家都来玩:http://www.pceggs.cn/pgComDefault.aspx?ID=6480286
只看该作者    顶部
离线 fish919
新年新气象



精华贴数 5
个人空间 0
技术积分 3151 (472)
社区积分 135 (2939)
注册日期 2003-5-26
论坛徽章:5
ITPUB元老会员2006贡献徽章授权会员2008北京奥运纪念徽章:羽毛球ITPUB新首页上线纪念徽章 
      

发表于 2005-3-11 09:04 
好,


__________________
学无止境
只看该作者    顶部
离线 baid
一般会员



精华贴数 0
个人空间 0
技术积分 100 (16598)
社区积分 45 (5150)
注册日期 2004-3-22
论坛徽章:0
      
      

发表于 2005-3-11 13:17 



只看该作者    顶部
离线 Harry_shan
跟着ORACLE走


精华贴数 11
个人空间 0
技术积分 21766 (42)
社区积分 11257 (138)
注册日期 2003-2-28
论坛徽章:59
现任管理团队成员2008北京奥运纪念徽章:跆拳道2008北京奥运纪念徽章:篮球2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:击剑2008北京奥运纪念徽章:沙滩排球
2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:赛艇生肖徽章2007版:牛生肖徽章:牛 

发表于 2005-3-11 15:22 
好东西,谢谢huajhua提供


__________________
只看该作者    顶部
离线 kevin.IT
山野粗人


精华贴数 0
个人空间 0
技术积分 1158 (1536)
社区积分 1575 (699)
注册日期 2003-12-5
论坛徽章:7
会员2006贡献徽章授权会员2008北京奥运纪念徽章:击剑ITPUB新首页上线纪念徽章生肖徽章:兔生肖徽章:虎
每日论坛发贴之星     

发表于 2005-3-14 09:22 
好东西,我做了几年笔记做了不少,可就是没整理,什么时有空我也整理一下贴上来。


__________________
玩物不能丧志,学习为了明天,工作才能生活,钞票固然重要,健康才是本钱。
只看该作者    顶部
离线 Harry_shan
跟着ORACLE走


精华贴数 11
个人空间 0
技术积分 21766 (42)
社区积分 11257 (138)
注册日期 2003-2-28
论坛徽章:59
现任管理团队成员2008北京奥运纪念徽章:跆拳道2008北京奥运纪念徽章:篮球2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:击剑2008北京奥运纪念徽章:沙滩排球
2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:赛艇生肖徽章2007版:牛生肖徽章:牛 

发表于 2005-3-14 11:12 


QUOTE:
最初由 kevin.IT 发布
好东西,我做了几年笔记做了不少,可就是没整理,什么时有空我也整理一下贴上来。

期待 kevin.IT


__________________
只看该作者    顶部
离线 莲舞
初级会员



精华贴数 0
个人空间 0
技术积分 6 (123885)
社区积分 0 (167441)
注册日期 2004-9-27
论坛徽章:0
      
      

发表于 2005-3-24 14:48 
hao wen


只看该作者    顶部
离线 dwilson


精华贴数 8
个人空间 120
技术积分 5417 (241)
社区积分 62 (4370)
注册日期 2002-12-12
论坛徽章:9
会员2007贡献徽章会员2006贡献徽章授权会员ERP板块每日发贴之星生肖徽章2007版:猴生肖徽章2007版:牛
生肖徽章2007版:鸡生肖徽章2007版:虎生肖徽章2007版:兔   

发表于 2005-4-6 13:11 
非常不错!


__________________
竹密岂防流水过,
山高哪碍野云飞!
只看该作者    顶部
离线 liuliu009
资深会员



精华贴数 0
个人空间 0
技术积分 1971 (819)
社区积分 9 (11324)
注册日期 2004-4-26
论坛徽章:4
会员2006贡献徽章授权会员生肖徽章2007版:鸡ERP板块每日发贴之星  
      

发表于 2005-4-7 08:23 
写的好


只看该作者    顶部
离线 yongyy
中级会员



精华贴数 1
个人空间 0
技术积分 863 (2172)
社区积分 17 (8182)
注册日期 2003-11-18
论坛徽章:1
授权会员     
      

发表于 2005-4-14 09:55 
比较不错的东西,才看到,顶


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问