ITPub博客

首页 > 数据库 > Oracle > 客制化开发常用语句

客制化开发常用语句

Oracle 作者:shelly_kuang 时间:2015-01-31 14:06:14 0 删除 编辑

一. 关于客户化调用系统标的统一建议:

1)    在查询表时如果有对等的视图,尽量采用视图。例如:如果要查询发票题头表,可以选择ap_invoices视图和ap_invoices_all表,建议使用ap_invoices视图。

2)    在客户端工具(例如:PL/SQL Developer或TOAD等)中调试上述查询时,先运行:

Begin
     fnd_client_info.set_org_context(82); -- 83 为当前组织(OU)的ORG_ID
End;

3)        部分视图在调试时,运行上述2)的语句后仍无法查询,请执行下列语句:

--11I

Begin
     fnd_client_info.set_org_context(82); -- 83 为当前组织(OU)的ORG_ID
     fnd_client_info.setup_client_info(
                                       application_id => 140 ,
                                       responsibility_id => 50205,
                                       user_id => 0,
                                       security_group_id => 0
                                       );
     --application_id为当前应用的APPLICATION_ID   RESP_APPL_ID
     --responsibility_id为当前职责的RESP_ID    RESP_ID 
     --user_id为当前用户的USER_ID
     --security_group_id为当前安全组的SECURITY_GROUP_ID
End;

--R12

 

Begin

     

     fnd_global.apps_initialize(user_id =>0,

                            resp_id => 50477,

                            resp_appl_id =>200  ); --20003  );

     MO_GLOBAL.init ('SQLAP');                      

  

End;

4)        上述2)和3)中的调试用ID的值可以通过如下方式获取:

                        i.              登陆Oracle Applications,输入用户名/密码,选择职责

                      ii.              点击菜单条:帮助-诊断-检查

                    iii.              输入数据库apps用户的密码,点击确定

                     iv.              在“块”中输入“$PROFILES$”,在“字段”中输入下列字段后,点击“值”输入框,即可看到对应的值:

1.         如果查询ORG_ID,在“字段”中输入:ORG_ID

2.         如果查询RESP_ID,在“字段”中输入:RESP_ID

3.         如果查询USER_ID,在“字段”中输入:USER_ID

4.         如果查询SECURITY_GROUP_ID,在“字段”中输入:SECURITY_GROUP_ID

5)        上述3)中调用的APPLICATION_ID的值可以通过如下方式获取:

Select application_id From Fnd_Application
  Where Application_Short_Name = 'SQLGL'  --SQLGL 为应用的简称

 

二.     获取当前窗口视图的方法:需要通过客户化程序查询某表单(Form)上的数据时,会需要了解系统标准功能是如何执行查询的。一般有三种方法可以获得:

1)        在查询出数据后,点击菜单条:帮助-历史记录,察看其中的“表名”,此操作不需要apps用户的密码。

2)        如果1)的操作中出现错误或提示没有历史记录可以察看,可以采取本方法。

                        i.              在查询出数据后,点击菜单条:帮助-诊断-检查

                      ii.              输入数据库apps用户的密码,点击确定

                    iii.              在“块”中输入“SYSTEM”,在“字段”中输入“LAST_QUERY”后,点击“值”输入框,即可看到系统标准功能执行的查询:

 

3)        如果1)和2)的操作中都无法察看,可以采取本方法。

                        i.              打开表单(Form)后,点击菜单条:帮助-关于Oracle Applications,察看其中的“表单名”,例如:PAXBUEBU

 

                      ii.              将光标定位在表单(Form)需要查询的数据块上,

1.         点击菜单条:帮助-诊断-检查

2.         输入数据库apps用户的密码,点击确定

3.         记录在“块”中的值,例如:BUDGET_HEADER

 

                    iii.              用FTP工具登陆系统目录,在$AU_TOP/forms/ZHS中下载PAXBUEBU.fmb文件到本地。

                     iv.              用Form Builder最新版本打开此表单,在“表格-PAXBUEBU-数据块- BUDGET_HEADER”路径上点击鼠标右键,选择“属性选项板”,查找其“查询数据源名”即可。

 


 

三.    获取当前组织(OU)的ORG_ID

FND_PROFILE.VALUE('ORG_ID');

 

四.    获取当前库存组织的(IO)ORG_ID

FND_PROFILE.VALUE('MFG_ORGANIZATION_ID');

 

五.    获取当前库存组织(IO)的所属组织(OU)/法人实体(LE)

Select  Organization_Id Mfg_Org_Id,  --IO的ORG_ID

Org_Information2 Le_Org_Id,   --LE的ORG_ID

Org_Information3 Ou_Org_Id   --OU的ORG_ID
From Hr_Organization_Information_v
Where Org_Information_Context = 'Accounting Information'
And (Organization_Id = 89)  -- 其中89位当前库存组织(IO)ORG_ID

 

六.    查询所有组织的相关信息,包括LE/OU/IO/所有HR组织

Select * from hr_organization_units Where organization_id = 89

-- 其中89为待查询组(LE/OU/IO)织的ORG_ID

 

七.    查询所有OU的组织相关信息

Select * from hr_operating_units Where organization_id = 83

-- 其中83为待查询OU的ORG_ID

 

八.    查询所有IO的组织相关信息

Select Hou.*
From Hr_Organization_Information_v Hoiv, Hr_Organization_Units Hou
Where Hoiv.Org_Information1 = 'INV'

And Nvl(Hoiv.Org_Information2, 'N') = 'Y'

And Hoiv.Organization_Id = Hou.Organization_Id

And (Hoiv.Organization_Id = 89)  -- 其中89位当前库存组织(IO)ORG_ID

 

九.     查询科目段默认值的方式:包括SEGMENT4/ SEGMENT5/ SEGMENT6/ SEGMENT7

Select Fifsvs.default_value
 From Fnd_Id_Flex_Segments_Vl Fifsvs,GL_SETS_OF_BOOKS_V gsobv
Where gsobv.set_of_books_id = FND_PROFILE.VALUE('GL_SET_OF_BKS_ID')
  And Fifsvs.Id_Flex_Num = gsobv.CHART_OF_ACCOUNTS_ID
  And Fifsvs.application_column_name = 'SEGMENT7' 
  And Fifsvs.segment_name Like 'C%_SP' -- CNC_SP or CMCC_SP

 

备注:Fifsvs.application_column_name = 'SEGMENT7' 与 Fifsvs.segment_name Like 'C%_SP' 两个条件取一个即可,建议采用application_column_name增加通用性。以后的例子都采用application_column_name作为实例,如果有特殊需要,请根据实际需求修改。

 

十.    查询科目段值的方式

Select  Fifsvs.Application_Column_Name,
        Fifsvs.Form_Left_Prompt,
        Ffvs.Flex_Value_Set_Name,
        Ffv.Flex_Value,
         Ffvt.Description
From Fnd_Id_Flex_Segments_Vl Fifsvs,
     Fnd_Flex_Value_Sets Ffvs,
     Fnd_Flex_Values Ffv,
     Fnd_Flex_Values_Tl Ffvt,
     Gl_Sets_Of_Books_v Gsobv
Where Gsobv.Set_Of_Books_Id = FND_PROFILE.VALUE('GL_SET_OF_BKS_ID')
  And Fifsvs.Id_Flex_Num = Gsobv.Chart_Of_Accounts_Id
  And Fifsvs.Application_Column_Name = 'SEGMENT1' -- 指定待查询的段名称
  And Ffvs.Flex_Value_Set_Id = Fifsvs.Flex_Value_Set_Id
  And Ffvs.Flex_Value_Set_Id = Ffv.Flex_Value_Set_Id
  And Ffv.Flex_Value_Id = Ffvt.Flex_Value_Id
  And Ffv.Flex_Value = '4010' -- 指定待查询的段值
  And Ffvt.Language = Userenv('LANG')

 

十一.         查询科目段值组合ID(CODE_COMBINATION_ID)的方式

Select Code_Combination_Id
From Gl_Code_Combinations_Kfv
Where Concatenated_Segments = '4010.00000000.2165808001.000000.000000000.0000.000000'

-- 可以直接查询组合后的关键性弹性域段值的ID,避免代码冗长

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29404710/viewspace-1421896/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle临时表
请登录后发表评论 登录
全部评论

注册时间:2015-01-16

  • 博文量
    23
  • 访问量
    49457