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)