Archives for June 2008

ZOOM 用法

ZOOM 可用于在一个FROM中直接调用相关的功能,比如在采购订单界面调用查询供应商信息的FORM界面。它的原理非常简单,就是调用出一个FUNCTION(此处以FORM为例),然后执行查询。

1. 目标FORM编码
在WHEN-NEW-FORM-INSTANCE事件中添加代码:

IF :parameter.doc_id IS NOT NULL THEN
go_block('CUSTFORM_BLOCK'); -- 定位到被查询的块
do_key(’execute_query’);-- 自动执行查询
:parameter.doc_id := NULL;-- 清除参数,以免影响正常查询
END IF;

在该目标块的PRE-QUERY事件中根据具体行为增加查询条件,也可以在块的WHERE属性中直接增加。如:
WHERE (:parameter.doc_id is null or cust_rec_v.doc_id like :parameter.doc_id)

2. ZOOM事件编码
在事件中调用目标功能:

fnd_function.EXECUTE(function_name => 'CUSTFORM',
open_flag => 'Y',
session_flag => 'Y',
other_params => 'DOC_ID = "1" ORG_ID="123"');

其中other_params中,目标FORM的参数以空格分开,双引号中的是参数值。

3. 如何启用ZOOM?
有两种方式可以启用ZOOM,一种是利用CUSTOM.pll中的zoom_available函数。
另外一种方式是APP_MENU.SET_PROP('VIEW.ZOOM', ENABLED,PROPERTY_TRUE)

跟踪(Trace) SSA (Self Service Applications)

对于OAF开发的Web界面,可以有两种方式来做Trace。一种是在登录时执行一段SQL代码,启用跟踪;另一种是利用系统本身提供的诊断工具进行跟踪。 方式1:初始化SQL语句 找到Profile Initialization SQL Statement – Custom 添加以下代码: BEGIN fnd_ctl.fnd_sess_ctl(oltp_opt_mode => ”, conc_opt_mode => ”, trace_opt => ”, timestat => ‘TRUE’, logmode => ”, event_stmt => ‘ALTER SESSION SET TRACEFILE_IDENTIFIER=’ || ”” || ’4269824.999′ || ”” || ‘ EVENTS =’ || ”” || ‘ 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 ‘ || ””); [...]

stackx

Stackx (Metalink: 362791.1) 是用于分析core文件的shell脚本,可用于IBM AIX, Intel Linux (RedHat and SuSE), HP-UX (10.* and 11.*), HP Tru64 和 Sun Solaris (2.5 – 2.10)环境。

当应用程序产生错误时(比如访问禁止的内存区域)可能会被操作系统强行终止并产生core文件,里面包含程序调用的相关函数。stackx从该二进制文件中读取相关的stack trace信息,并形成可读的文本。

下面是在Solaris的示例:

######################################################################
stackx core / stack trace extraction utility
version 1.1 (c) 2005, 2006 Oracle Corp. all rights reserved.
Reporting: Thu Jun 5 08:48:46 CST 2008
Machine : SunOS mytest 5.10 Generic_118833-03 sun4u sparc SUNW,Sun-Fire-V890
CPU Bits : 32
Core file: ../core
Core date: Jun 3 16:42
Tool(s) : /usr/bin/pstack /usr/bin/pmap /usr/bin/pflags
Program : f60webmx
Core extraction section follows
######################################################################

core '../core' of 29359: f60webmx webfile=5,180,test_9008_MYTEST
fef60fd8 ixncwst_WriteString (f98e78, fa6508, 0, 1, 100, f98e78) + 4
(省略 N 字)
000887bc main (2, ffbfb76c, 8000, de1ff0, 64, 8) + 188
0008860c _start (0, 0, 0, 0, 0, 0) + dc

######################################################################
PMAP OUTPUT
core '../core' of 29359: f60webmx webfile=5,180,test_9008_MYTEST
00010000 4032K r-x-- /u01/test/myappl/fnd/11.5.0/bin/f60webmx
(省略 N 字)
FF3F0000 8K rwx-- /lib/ld.so.1
FFBEC000 80K rwx-- [ stack ]
total 72264K
######################################################################
PFLAGS OUTPUT
core '../core' of 29359: f60webmx webfile=5,180,test_9008_MYTEST
data model = _ILP32 flags = MSACCT|MSFORK
/1: flags = 0
sigmask = 0xffffbefc,0x0000ffff cursig = SIGSEGV

######################################################################
stackx done.