Forms Menu Related Information

系统 1787 0

APP_SPECIAL.INSTANTIATE

Example 1

    
      APP_SPECIAL.INSTANTIATE('SPECIAL3','&Book Order', 'POBKORD', TRUE, 'LINE');

    
    
      
        APP_POPUP.INSTANTIATE('POPUP1','First Entry'); 
APP_POPUP.INSTANTIATE('POPUP2','Second Entry', TRUE,'LINE'); 
APP_POPUP.INSTANTIATE('POPUP3','Third Entry', FALSE);
      
    

Example 2

    
      app_special.instantiate('SPECIAL12_CHECKBOX',
                        'Specia&l 12 Check Box with Line',
                         separator=>'LINE'); 
app_special.set_checkbox('SPECIAL12_CHECKBOX','TRUE');  
    
  

results in a menu entry that looks like the following:

    
      -----------------------------------
[x] Specia
      
        l
      
      l 12 Check Box with Line

    
  

Example3

DECLARE
l_menu_label VARCHAR2(80);
BEGIN
fnd_message.set_name('PO', 'PO_SPECIAL_ALL_VIEW_MSG_HSTRY');
fnd_message.get(l_menu_label);
app_special.instantiate('SPECIAL9', l_menu_label, NULL,FALSE,NULL);
END;

Reference: http://docs.oracle.com/cd/E18727_01/doc.121/e12897/T302934T457083.htm#I_ax2Dtoolbar


APP_SPECIAL.ENABLE

    
      APP_SPECIAL.ENABLE('SPECIAL3',PROPERTY_ON);
app_special.enable('SPECIAL6', PROPERTY_ON); 
app_special.enable('SPECIAL6', PROPERTY_OFF); 

    
  


Set_Menu_Item_Property

Declare
mi_id MenuItem ;
BEGIN
If your_conditionThen
mi_id := Find_Menu_Item('menu.item');
If not id_null ( mi_id ) Then
Set_Menu_Item_Property( 'menu.item', ENABLED, PROPERTY_TRUE ) ;
Set_Menu_Item_Property( 'menu.item', ENABLED, PROPERTY_FALSE ) ;
End if ;
End if ;
END;

VISIBLE
set_menu_item_property ('menu1.TRANS',visible,PROPERTY_TRUE);
set_menu_item_property ('menu1.TRANS',visible,PROPERTY_FALSE);

=================================

Difference between menu & special in personalization

source: https://forums.oracle.com/forums/thread.jspa?messageID=10513442

MENU1 through MENU15 menu entries, available in the Tools pulldown menu. These are guaranteed not to be used by Oracle and are exclusively for customer use, therefore we strongly encourage you to use these entries as opposed to the SPECIAL menu entries in order to avoid collisions of code. When the user selects the entry, it will fire the corresponding MENU# trigger. You must also create another rule that traps this Trigger Event and performs the desired functionality.

Forms Personalization:
SPECIALn
Populate tools menu (SPECIAL 1-15)
Populate reports menu (SPECIAL 16-30)
Populate actions menu (SPECIAL 31-45)
MENUn
Populate tools menu (MENU1-15)
Use these before SPECIALn


=================================

Tools Menu

source: http://oracle.anilpassi.com/forms-personalization-best-practices-4.html

To create new Tool Menus, always use MENU1-MENU15, as Oracle guarantees never to use these during development.
Same is not true for SPECIAL Menus, as Oracle development may release a patch utilising the same SPECIALx as you may have personalized.
MENU1..15 is available starting from 11.5.10 CU2 onwards

=================================

Oracle EBS还允许客制化Form的菜单栏
zz: http://ryanlunar.blog.163.com/blog/static/183577092201283101830760/

用户最多可以定义 45 form-level trigger ,名称必须为 SPECIALn ,其中 SPECIAL1 to SPECIAL15 属于 Tools 菜单项, SPECIAL16 to SPECIAL30 属于 Reports 菜单项 , SPECIAL31 to SPECIAL45 属于 Actions 菜单项 , 其中 Reports Actions 的名称可以被修改。

SPECIAL1—SPECIAL15 在“工具”主菜单下。

SPECIAL16—SPECIAL30 在“报表”主菜单下。

SPECIAL31—SPECIAL45 在“活动”主菜单下。


SPECIAL菜单:

触发器When-New-Form-Instance

Form级app_special.instantiate('SPECIAL1','<Prompt>');


触发器Pre_Block

app_special.enable('SPECIAL1',property_on);


=================================

客制化Form的菜单栏和右鍵菜單

zz: http://blog.csdn.net/rfb0204421/article/details/7567199

Oracle EBS 还允许客制化 Form 的菜单栏。

用户最多可以定义 45 form-level trigger ,名称必须为 SPECIALn ,其中 SPECIAL1 to SPECIAL15 属于 Tools 菜单项, SPECIAL16 to SPECIAL30 属于 Reports 菜单项 , SPECIAL31 to SPECIAL45 属于 Actions 菜单项 , 其中 Reports Actions 的名称可以被修改。

修改代码为:

APP_SPECIAL.INSTANTIATE('SPECIAL_B','库存');
APP_SPECIAL.ENABLE('SPECIAL_B',PROPERTY_On);

其中SPECIAL,SPECIAL_B,SPECIAL_C分别代表的是Tools,Reports,Actions。

初始化示例:

IF (FND_FUNCTION.TEST('DEMVC_DEMVCEOR_PRINT_ORDER')) THEN

app_special.instantiate ('SPECIAL1','&Print Order');

app_special.enable ('SPECIAL1',PROPERTY_ON);

app_special.instantiate ('SPECIAL2','Specia&l 2 Line', '',TRUE,'LINE');

app_special.instantiate ('SPECIAL3_CHECKBOX','Spe&cial 3 Box w Line', '',TRUE,'LINE');

app_special.set_checkbox ('SPECIAL3_CHECKBOX','TRUE');

app_special.instantiate ('SPECIAL4_CHECKBOX','Special &4 Box');

app_special.set_checkbox ('SPECIAL4_CHECKBOX','TRUE');

app_special.instantiate ('SPECIAL18','Specia&l 18 Line SEP', separator=>'LINE');

app_special.instantiate ('SPECIAL32','Specia&l 32 Line', '',TRUE,'LINE');

app_special.instantiate ('SPECIAL33','Specia&l 33');

app_special.instantiate ('SPECIAL30','Specia&l 30');

app_special.instantiate ('SPECIAL31','Specia&l 31 Line','',TRUE,'LINE');

app_special.instantiate ('SPECIAL45','Spe&cial 45');

/* and display a button on the form */

app_item_property.set_property('orders.print_order',

DISPLAYED, PROPERTY_ON);

ELSE

app_item_property.set_property('orders.print_order',

DISPLAYED, PROPERTY_OFF);

END IF;

app_special.instantiate 设置菜单项的文字说明, app_special.enable 设置菜单项是否可用, app_special.set_checkbox 设置 check_box 菜单项的选定状态。

form-level SPECIALn trigger 中,定义了这些菜单项选中后的处理代码,如下所示:

Eg1

demvceor.PRINT_ORDER('SPECIAL1');

Eg2

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;

  右键菜单也可以自定义, form-level PRE-POPUP-MENU trigger 引用 APPSTAND.EVENT('PRE-POPUP-MENU') 建立 default menu ;建立 block /item level pre-pop-menu trigger ( Execution Hierarchy à After )

block /item level pre-pop-menu trigger( Execution Hierarchy à After ) 中调用 app_popup.instantate 函数初始化右键菜单项:

procedure APP_POPUP.INSTANTIATE(

option_name varchar2,

txt varchar2,

initially_enabled boolean default true,

separator varchar2 default null);

Example

• This example results in a menu that has a line above the second custom entry and

has the third custom entry grayed out (disabled)

APP_POPUP.INSTANTIATE(

‘POPUP1’,’First Entry’);

APP_POPUP.INSTANTIATE(

‘POPUP2’,’Second Entry’, TRUE, ‘LINE’);

APP_POPUP.INSTANTIATE(

‘POPUP3’,’Third Entry’, FALSE);

  右键菜单的处理函数写在名为 POPUP1 through POPUP10 trigger 中,应该在正确的 level 上建立这些 trigger ( 通常是 block/item level)

客制化菜单

  Effect:

Forms Menu Related Information

  Usage:调用 app_special.instantiate包

  Examples:

  1、增加一个自定义Form Level的触发器(SPECIAL11)

Forms Menu Related Information

  2、增加测试代码如下:

  ――――――――――――――――――――――――――――――――――――――――――――――

  declare

  v_invoice_num varchar2(50);

  begin

  v_invoice_num := '菜单栏客制化100';

  fnd_message.debug(v_invoice_num);

  end;

  ―――――――――――――――――――――――――――――――――――――――――――――――

  3、在Form WHEN-NEW-FORM-INSTANCEFJ 进行调用:

  APP_SPECIAL.INSTANTIATE('SPECIAL11','测试菜单2', '', TRUE, 'LINE');

  ―――――――――――――――――――――――――――――――――――――――――――――――

  4、一些特殊说明:

  上面自定义FORMS级触发器,名字必须定义为“SPECIAL+数字‖,否则会报错。并且数字的大小决定了菜单出现的先后顺序。数字还有更大作用就是决定了,自定义菜单选项放在哪个主菜单下。

  SPECIAL1—SPECIAL15在“工具”主菜单下。

  SPECIAL16—SPECIAL30在“报表”主菜单下。

  SPECIAL31—SPECIAL45在“活动”主菜单下。

  SPECIAL46以上就直接报错了。^_^

  如下图

Forms Menu Related Information

  5、 控制自定义菜单的是否激活可用。

  使用app_special.enable函数可以控制菜单是否可以使用。

  例如:基于不同的数据块,实现菜单的不可用。在block的‖when-new-block-instance‖中加入

  效果:

  app_special.enable('SPECIAL1',property_off);

  效果

  6、 在自定义的菜单上使用checkbox按钮。

  ①增加一个自定义Form Level的触发器(SPECIAL1_CHECKBOX),代码如下:

  if app_special.get_checkbox('SPECIAL1_CHECKBOX')='TRUE' then

  fnd_message.debug('Special 1 is True!');

  else

  fnd_message.debug('Special 1 is False!');

  end if;

  注:使用app_special.get_checkbox来获取checkbox的状态值。

  ②在Form的WHEN-NEW-FORM-INSTANCE触发器中初始化菜单。

  app_special.instantiate('SPECIAL1_CHECKBOX','Spe&cial 1 Box w Line', '',TRUE,'LINE');

  app_special.set_checkbox('SPECIAL1_CHECKBOX','TRUE');

  注:app_special.set_checkbox是对checkbox进行赋值操作。

  ③效果如下:

Forms Menu Related Information

客制化右键菜单

  1、 首先如果是要为某个ITEM,另外开发一个右键菜单。这个需要直接按照FORM的开发教程,自定义一个POPUP菜单就可以了。但本文讲的在EBS所有的快捷菜单上,额外增加所需的菜单按钮。也就是要图上所示的快捷菜单上增加菜单按钮。

Forms Menu Related Information

  2、 在FROM-LEVEL增加自定义触发器(名字规则为:POPUP+N)

  3、 ITEM的“PRE-POPUP-MENU”触发器上初始化菜单。

  APP_POPUP.INSTANTIATE('POPUP1','First Entry');

  APP_POPUP.INSTANTIATE('POPUP10','SECONED Entry',TRUE,'LINE');

  APP_POPUP.INSTANTIATE('POPUP3','THREE Entry',FALSE,NULL);

Forms Menu Related Information

  4、 如果是整个BLOCK的ITEM都需要客制化快捷菜单,可以在BLOCK的“PRE-POPUP-MENU”定义。

  APP_POPUP.INSTANTIATE('POPUP1','global');

Forms Menu Related Information

 调用EBS日期控件

  1、 首先将ITEM的LOV属性设置为“ENABLE_LIST_LAMP”、列表验证属性设置为“否”

  2、在ITEM的“KEY-LISTVAL”解发器下加入对下代码:

  BEGIN

  calendar.show();

  END;

  3、注意:ITEM对应数据库类型必须是DATE类型,否则会报frm-40700错误。效果如下:

Forms Menu Related Information



Oracle EBS 还允许客制化 Form 的菜单栏。

用户最多可以定义 45 form-level trigger ,名称必须为 SPECIALn ,其中 SPECIAL1 to SPECIAL15 属于 Tools 菜单项, SPECIAL16 to SPECIAL30 属于 Reports 菜单项 , SPECIAL31 to SPECIAL45 属于 Actions 菜单项 , 其中 Reports Actions 的名称可以被修改。

修改代码为:

APP_SPECIAL.INSTANTIATE('SPECIAL_B','库存');
APP_SPECIAL.ENABLE('SPECIAL_B',PROPERTY_On);

其中SPECIAL,SPECIAL_B,SPECIAL_C分别代表的是Tools,Reports,Actions。

初始化示例:

IF (FND_FUNCTION.TEST('DEMVC_DEMVCEOR_PRINT_ORDER')) THEN

app_special.instantiate ('SPECIAL1','&Print Order');

app_special.enable ('SPECIAL1',PROPERTY_ON);

app_special.instantiate ('SPECIAL2','Specia&l 2 Line', '',TRUE,'LINE');

app_special.instantiate ('SPECIAL3_CHECKBOX','Spe&cial 3 Box w Line', '',TRUE,'LINE');

app_special.set_checkbox ('SPECIAL3_CHECKBOX','TRUE');

app_special.instantiate ('SPECIAL4_CHECKBOX','Special &4 Box');

app_special.set_checkbox ('SPECIAL4_CHECKBOX','TRUE');

app_special.instantiate ('SPECIAL18','Specia&l 18 Line SEP', separator=>'LINE');

app_special.instantiate ('SPECIAL32','Specia&l 32 Line', '',TRUE,'LINE');

app_special.instantiate ('SPECIAL33','Specia&l 33');

app_special.instantiate ('SPECIAL30','Specia&l 30');

app_special.instantiate ('SPECIAL31','Specia&l 31 Line','',TRUE,'LINE');

app_special.instantiate ('SPECIAL45','Spe&cial 45');

/* and display a button on the form */

app_item_property.set_property('orders.print_order',

DISPLAYED, PROPERTY_ON);

ELSE

app_item_property.set_property('orders.print_order',

DISPLAYED, PROPERTY_OFF);

END IF;

app_special.instantiate 设置菜单项的文字说明, app_special.enable 设置菜单项是否可用, app_special.set_checkbox 设置 check_box 菜单项的选定状态。

form-level SPECIALn trigger 中,定义了这些菜单项选中后的处理代码,如下所示:

Eg1

demvceor.PRINT_ORDER('SPECIAL1');

Eg2

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;

  右键菜单也可以自定义, form-level PRE-POPUP-MENU trigger 引用 APPSTAND.EVENT('PRE-POPUP-MENU') 建立 default menu ;建立 block /item level pre-pop-menu trigger ( Execution Hierarchy à After )

block /item level pre-pop-menu trigger( Execution Hierarchy à After ) 中调用 app_popup.instantate 函数初始化右键菜单项:

procedure APP_POPUP.INSTANTIATE(

option_name varchar2,

txt varchar2,

initially_enabled boolean default true,

separator varchar2 default null);

Example

• This example results in a menu that has a line above the second custom entry and

has the third custom entry grayed out (disabled)

APP_POPUP.INSTANTIATE(

‘POPUP1’,’First Entry’);

APP_POPUP.INSTANTIATE(

‘POPUP2’,’Second Entry’, TRUE, ‘LINE’);

APP_POPUP.INSTANTIATE(

‘POPUP3’,’Third Entry’, FALSE);

  右键菜单的处理函数写在名为 POPUP1 through POPUP10 trigger 中,应该在正确的 level 上建立这些 trigger ( 通常是 block/item level)

客制化菜单

  Effect:

Forms Menu Related Information

  Usage:调用 app_special.instantiate包

  Examples:

  1、增加一个自定义Form Level的触发器(SPECIAL11)

Forms Menu Related Information

  2、增加测试代码如下:

  ――――――――――――――――――――――――――――――――――――――――――――――

  declare

  v_invoice_num varchar2(50);

  begin

  v_invoice_num := '菜单栏客制化100';

  fnd_message.debug(v_invoice_num);

  end;

  ―――――――――――――――――――――――――――――――――――――――――――――――

  3、在Form WHEN-NEW-FORM-INSTANCEFJ 进行调用:

  APP_SPECIAL.INSTANTIATE('SPECIAL11','测试菜单2', '', TRUE, 'LINE');

  ―――――――――――――――――――――――――――――――――――――――――――――――

  4、一些特殊说明:

  上面自定义FORMS级触发器,名字必须定义为“SPECIAL+数字‖,否则会报错。并且数字的大小决定了菜单出现的先后顺序。数字还有更大作用就是决定了,自定义菜单选项放在哪个主菜单下。

  SPECIAL1—SPECIAL15在“工具”主菜单下。

  SPECIAL16—SPECIAL30在“报表”主菜单下。

  SPECIAL31—SPECIAL45在“活动”主菜单下。

  SPECIAL46以上就直接报错了。^_^

  如下图

Forms Menu Related Information

  5、 控制自定义菜单的是否激活可用。

  使用app_special.enable函数可以控制菜单是否可以使用。

  例如:基于不同的数据块,实现菜单的不可用。在block的‖when-new-block-instance‖中加入

  效果:

  app_special.enable('SPECIAL1',property_off);

  效果

  6、 在自定义的菜单上使用checkbox按钮。

  ①增加一个自定义Form Level的触发器(SPECIAL1_CHECKBOX),代码如下:

  if app_special.get_checkbox('SPECIAL1_CHECKBOX')='TRUE' then

  fnd_message.debug('Special 1 is True!');

  else

  fnd_message.debug('Special 1 is False!');

  end if;

  注:使用app_special.get_checkbox来获取checkbox的状态值。

  ②在Form的WHEN-NEW-FORM-INSTANCE触发器中初始化菜单。

  app_special.instantiate('SPECIAL1_CHECKBOX','Spe&cial 1 Box w Line', '',TRUE,'LINE');

  app_special.set_checkbox('SPECIAL1_CHECKBOX','TRUE');

  注:app_special.set_checkbox是对checkbox进行赋值操作。

  ③效果如下:

Forms Menu Related Information

客制化右键菜单

  1、 首先如果是要为某个ITEM,另外开发一个右键菜单。这个需要直接按照FORM的开发教程,自定义一个POPUP菜单就可以了。但本文讲的在EBS所有的快捷菜单上,额外增加所需的菜单按钮。也就是要图上所示的快捷菜单上增加菜单按钮。

Forms Menu Related Information

  2、 在FROM-LEVEL增加自定义触发器(名字规则为:POPUP+N)

  3、 ITEM的“PRE-POPUP-MENU”触发器上初始化菜单。

  APP_POPUP.INSTANTIATE('POPUP1','First Entry');

  APP_POPUP.INSTANTIATE('POPUP10','SECONED Entry',TRUE,'LINE');

  APP_POPUP.INSTANTIATE('POPUP3','THREE Entry',FALSE,NULL);

Forms Menu Related Information

  4、 如果是整个BLOCK的ITEM都需要客制化快捷菜单,可以在BLOCK的“PRE-POPUP-MENU”定义。

  APP_POPUP.INSTANTIATE('POPUP1','global');

Forms Menu Related Information

 调用EBS日期控件

  1、 首先将ITEM的LOV属性设置为“ENABLE_LIST_LAMP”、列表验证属性设置为“否”

  2、在ITEM的“KEY-LISTVAL”解发器下加入对下代码:

  BEGIN

  calendar.show();

  END;

  3、注意:ITEM对应数据库类型必须是DATE类型,否则会报frm-40700错误。效果如下:

Forms Menu Related Information

Forms Menu Related Information


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论