一. 关于客户化调用系统标的统一建议:
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/ ,如需转载,请注明出处,否则将追究法律责任。