• FORM 相关技巧,copy from 余军明


    1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:

    在form级的触发器when-new-form-instance中,
    写如下代码:
    go_block('XXXX');
    execute_query;
    要查询的数据块的名称

    说明:
    当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块
    当查询数据到一个块里去,可通过execute_query进行处理

    补充:用DELETE_RECORD从块中删除当前记录,要改变数据库的记录,必须使用COMMIT_FORM

    2, 什么办法可以控制form中File菜单中的Export吗?使其失效
    答:
        在FORM中,在FORM级的触发器EXPORT中,将其中的代码app_standard.event('EXPORT');屏蔽掉,改为null;试一试

    3当form 启动时,在pre-form触发器中instantiate你特定的菜单items,调用 app_special.instantiate包
                                   procedure APP_SPECIAL.INSTANTIATE(
                                                       option_name varchar2, --定义tigger 名字
                                                       hint varchar2 default null,--定义菜单实体的名字,使用&来定义菜单实体的键盘快捷键
                                                       icon varchar2 default null,--
                                                       initially_enabledboolean default true,
                                                       separator varchar2 default null);--定义'LINE'为separator

    例子
                                   app_special.instantiate(’SPECIAL1’,’&rint Order’,’PRINTORD’);

    4, 在tool 菜单中的check boxes
    --option_name 与trigger_name 包括关键字CHECKBOX(例如:SPECIAL3_CHECKBOX)
                       app_special.instantiate(’SPECIAL3_CHECKBOX’,’Spe&cial 3 Box w Line’, ’’,TRUE,’LINE’);

    --调用app_special.set_checkbox 来初始化check box 的值
                     app_special.set_checkbox(’SPECIAL3_CHECKBOX’,’TRUE’);

    --在SPECIALn_CHECKBOX函数中和相应的逻辑代码中测试check box
                 app_special.get_checkbox
                              if (app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’) then
                                    fnd_message.debug(’Special 3 is True!’);
                              else
                                   fnd_message.debug(’Special 3 is False!’);
                             end if;

    5, 在你在pre-form 中instantiate实体, 随意将指定的菜单实体设置为可用或不可用(基于数据块),
    调用APP_SPECIAL.ENABLE
                     procedure APP_SPECIAL.ENABLE(option_name varchar2,state);
    在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为disable
                   app_special.enable(’SPECIAL1’,PROPERTY_OFF);
    在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为able
                   app_special.enable(’SPECIAL1’,PROPERTY_on);
    将所有的special 菜单设置为 disable
                  app_special.enable(’SPECIAL’,PROPERTY_OFF);

    6, 编辑鼠标右键菜单
    调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENU Trigger)
                              procedure APP_POPUP.INSTANTIATE(
                                         option_name varchar2,
                                         txt varchar2,
                                         initially_enabled boolean default true,
                                          separator varchar2 default null);
    与app_special.instantiate类似
    例如:
                         APP_POPUP.INSTANTIATE('POPUP1','First Entry');

    7, 关于 Implementing Zoom Use the Custom Library的学习:
    1. .pll文件可以用form builder 打开,修改,创建
    2. .pll文件的编译方法:
                           f60gen module=CUTOM.PLL userid=apps/apps module_type=LIBRARY
    3. 当系统不自动激活菜单上的图标时,可以在数据块的 block-level 的 when-new-block-instance trigger中
    添加如下代码:
    以zoom为例子:set_menu_item_property('VIEW.ZOOM',ENABLED,PROPERTY_TURE)
    在form-level 的相应的trigger(比如zoom trigger)中改写下列代码:
                                           custom.event('ZOOM')
    4. fnd_function.exrcute语法:
                           procedure FND_FUNCTION.EXECUTE(function_name IN varchar2,
                                                                                               open_flag IN varchar2 default ’Y’,
                                                                                               session_flag IN varchar2 default ’SESSION’,
                                                                                               other_params IN varchar2 default NULL,
                                                                                               activate IN varchar2 default ’ACTIVATE’,
                                                                                               browser_target IN varchar2 default NULL);

    5.FND_FUNCTION.TEST(function_name IN varchar2)
                       测试指定的函数是否可以连接,该函数用于form 启动时测试函数的可用性,

    8, 弹性域(Flexfields)的总结:

    使用 FND_KEY_FLEX.DEFINE 在item handler 中设定key弹性域的定义
    procedure flexfield_item_name(event varchar2)
    is
    begin
                    fnd_key_flex.define(
                                    block=>'block_name',
                                    field=>'concatenated_segements_field_name',
                                    id=>'ccid_field_name',
                                   appl_short_name=>'shortname_of_application_used_to_register_flexfield',
                                   code=>'flexfield_code',
                                   NUM=>'structure_number',
                                   any_other_auguments);
    )

    例:
    FND_KEY_FLEX.DEFINE(
                BLOCK=>’LINES’,
                 FIELD=>’ACCTG_FLEX_VALUES’,
                ID=>’GL_ACCOUNT_CC_ID’,--Your ID field is the GL_ACCOUNT_CC_ID item
                APPL_SHORT_NAME=>’SQLGL’,
                CODE=>’GL#’,
                NUM=>’101’--可以使用GL_SET_OF_BOOKS_ID 作为structure id
    );
    ----------------------------------------------------------------------------------
    使用FND_DESCR_FLEX.DEFINE 在item handler 中设定描述性弹性域的定义
    定义
    FND_DESCR_FLEX.DEFINE(
    BLOCK=>'BLOCK_NAME',
    FIELD=>'DISPLAYED_FLEXFIELD_FIELD_NAME',
    APPL_SHORT_NAME=>'SHORTNAME_OF_APPLICATION_USED_TO_REGISTER_FLEXFIELD',
    DESC_FLEX_NAME=>'FLEXFIELD_NAME',
    ANY_OTHER_ARGUMNTS);

                        FND_DESCR_FLEX.DEFINE(
                       BLOCK=>’ORDERS’,
                       FIELD=>’DESC_FLEX’,
                      APPL_SHORT_NAME=>’DEM’,
                     DESC_FLEX_NAME=>’DEM_ORDERS’);

    )

    9, COPY 命令
    Copies a value from one item or variable into another item or global variable.
    Syntax
    PROCEDURE COPY(source VARCHAR2, destination VARCHAR2)

    Parameters
    source: The source is a literal value.

    destination: The destination can be either a text item or another global variable.

    例:
    COPY( 'Yes', 'GLOBAL.'||global_var_name );
    将‘YES’付值给 变量global_var_name

    10, message 用法总结:

    1.设置信息:
    --FND_MESSAGE.SET_NAME 语法:
                     procedure FND_MESSAGE.SET_NAME(application_shortnameIN varchar2,message_name IN varchar2);
    作用:
    从Message Dictionary获取一条信息
    一般情况下在FORM中显示出错信息使用以下代码:
                         FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
                         FND_MESSAGE.ERROR ;

                          --FND_MESSAGE.RETRIEVE
    作用:
    取得一条数据库中的等待信息
                       --FND_MESSAGE.SET_STRING (value IN varchar2)
    作用:
    将字符串放到消息栈中,

                       --FND_MESSAGE.SET_TOKEN
    作用:用值替换message的信息中的变量
    语法:
    procedure FND_MESSAGE.SET_TOKEN(token_name IN VARCHAR2,value IN VARCHAR2
    translate IN boolean default FALSE);

    --在form用于显示信息的函数
    1.FND_MESSAGE.ERROR
    2.FND_MESSAGE.WARN
    例子
    Example:
    FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);
    REC_COUNT:= <NUMBER OF PAYMENTS>;
    FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);
    IF (NOT FND_MESSAGE.WARN) THEN
    Raise FORM_TRIGGER_FAILURE;
    END IF;

    3.FND_MESSAGE.QUESTION
    语法:
    FND_MESSAGE.QUESTION(
    button1 IN varchar2 default ‘YES’,
    button2 IN varchar2 default ‘NO’,
    button3 IN varchar2 default ‘CANCEL’;
    default_btn IN number default 1,
    cancel_btn IN number default 3,
    icon IN varchar2 default ‘question’) return number;
    说明:
    FND_MESSAGE.QUESTION 返回一个被选中的button的number
    Example:
    FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMIT BEFORE INVOKING’);
    IF FND_MESSAGE.QUESTION
    (’YES’,’CANCEL’,NULL,1,2,NULL) = 2 THEN
    RAISE FORM_TRIGGER_FAILURE;
    END IF;

    4.FND_MESSAGE.SHOW
    作用:显示信息
    5.FND_MESSAGE.DEBUG
    6.FND_MESSAGE.GET
    作用:
    取得在message中设置好的message信息

    11 设置Item-level和Item-instance-level属性时需特别的注意,
    Item-level属性影响所有的记录,而Item-instance-level属性只影响特定的记录(当前行)。

    12fotmatting currency fields( 货币的转换和格式化)

    FND_CURRENCY:The Dynamic Currency feature allows different values in arbitrary currencies to be displayed in
    the same report or form, each shown with appropriate formatting.
    FND_CURRENCY.GET_FORMAT_MASK(:ORDERS.CURRENCY_CODE,GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH));
    1.取得需对应的货币
    其中:GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH)为返回一个该item的最大长度,
    FND_CURRENCY.GET_FORMAT_MASK(currency_code IN varchar2,field_length IN number)return varchar2;

    2.格式化(需要的话进行汇率转换)item的货币类型
    APP_ITEM_PROPERTY.SET_PROPERTY('LINES.PRICE',FORMAT_MASK,
    FND_CURRENCY.GET_FORMAT_MASK(:ORDERS.CURRENCY_CODE,
    GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH) ))
    3.动态控制item的显示格式的触发范围
    在Block-level的Post-query trigger和Item-level的 when-validate-item trigger调用handler,控制显示格式。

    CALENDAR 日历
    如何实现在form中弹出calendar并返回所选日期的功能?
    1.设text item为日期型, LOV属性为:ENABLE_LIST_LAMP并且Validate from List LOV—>No
    2.在该text item 的KE_LISTVAL下加入如下代码:calendar.show;
    trigger属性Execution Hierarchy—>Override,fire in enter-query mode—>No。

    使用APP_DATE.FND_DATE取得服务器端的时间环境

  • 相关阅读:
    Python拼接字符串的7种方法
    jieba结巴分词
    nginx配置文件的性能优化
    nginx默认的配置文件详解
    CentOS怎样安装Python3.6
    Scrapy爬去哪儿~上海一日游门票并存入MongoDB数据库
    Scrapy模拟登录GitHub
    Scrapy爬豆瓣电影Top250并存入MySQL数据库
    Scrapy爬博客园
    创建第一个Scrapy项目
  • 原文地址:https://www.cnblogs.com/SanFrans/p/3346194.html
Copyright © 2020-2023  润新知