FRM:41067-Cannot find Menu Item:invalid ID错误

EBS的Form开发中有特有的folder,而retek中没有,使用的是multiview。今天我在做retek form开发的时候,做好了之后,编译好了,一打开form就提示FRM:41067-Cannot find Menu Item:invalid ID错误,如下图1所示。对于这个错误,我找原因找了很久,万万没想到我还是解决了。

FRM:41067-Cannot find Menu Item:invalid ID错误

图1:FRM:41067-Cannot find Menu Item:invalid ID错误

该问题的处理思路如下:

(1)首先,检查下 form和menu文件中的相关设置,看看菜单的设置是否正确。

(2)检查数据库中form_menu_link表中是否做好了对应的匹配,再查看下menu_elements、menu_elements_langs表中对menu菜单的注册信息是否正确。

对上面两步检查了好几遍都没有找到有什么错误,最后发现,我只要一加入multiview的初始化代码就会出现这种错误,没加入这段初始化代码就没错,初步断定menu的注册应该是没有问题的,假设是不是multiview初始化的时候出现的错误,最后打开MVIEW45库的的p_multiview包,找到其中initialize这个存储过程的代码,终于发现问题所在了。

MVIEW45库的p_multiview.initialize存储过程的代码如下:

PROCEDURE INITIALIZE(I_form_name      IN VARCHAR2,
                     I_return_item    IN VARCHAR2,
                     I_left_pos       IN NUMBER,
                     I_right_max_pos  IN NUMBER,
                     I_h_scrollbar_yn IN VARCHAR2,
                     I_autorequery_yn IN VARCHAR2 DEFAULT 'N',
                     I_bottom_title   IN VARCHAR2 DEFAULT NULL,
                     I_smartdraw      IN BOOLEAN DEFAULT TRUE,
                     I_menu_name      IN VARCHAR2 DEFAULT 'VIEW_MENU') IS
BEGIN
  MULTIVIEW_INITIALIZE.INITIALIZE(I_form_name,
                                  I_return_item,
                                  I_left_pos,
                                  I_right_max_pos,
                                  I_h_scrollbar_yn,
                                  I_autorequery_yn,
                                  I_bottom_title,
                                  I_smartdraw,
                                  I_menu_name);
EXCEPTION
  WHEN FORM_TRIGGER_FAILURE THEN
    RAISE;
  WHEN OTHERS THEN
    emessage(SQLERRM);
    RAISE FORM_TRIGGER_FAILURE;
END INITIALIZE;

查看代码发现,传递的参数中,I_menu_name参数默认的是VIEW_MENU,就是说你在初始化代码的时候,如果你没设置I_menu_name,那么默认的就是VIEW_MENU,而我在开发的时候,做的菜单是OPTION_MENU,也就是因为这个原因导致了该问题的出现。所以,解决方法有两种:

第一种方法,初始化代码中,设置I_menu_name的参数为你自定义的菜单名。

第二种方法,修改菜单名为VIEW_MENU,并重新做好相关的注册操作。

结合以上分析,最后我选择了第一种方法,因为这样操作起来会更加灵活一些。

本文标题:FRM:41067-Cannot find Menu Item:invalid ID错误

本文链接:http://yedward.net/?id=122

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章