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内核的浏览器可能无法打开附件上传窗口 (中华企业文化网)
|