Oracle Forms- 'FND_MESSAGE' 问题

Oracle Forms- 'FND_MESSAGE' issue

我在 Oracle Forms(自定义 PLL - Oracle EBS R12)中创建了一个 POPUP

fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
         --    fnd_message.show;
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  '',
                                  1,
                                  2,
                                  3);
 
 
IF n_button_selection = 1
         THEN
             Procedure1();
         ELSIF n_button_selection = 2
         THEN
             Procedure2();
         ELSE
            NULL;
         END IF;

此代码工作正常但是,如果用户关闭表单(通过单击 'X' 标记),则执行 ELSIF 条件并调用过程 2。我希望控件转到 ELSE 并且什么都不做。 请帮忙。

我将代码修改为

 fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
      
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  'Cancel',
                                  1,
                                  2,
                                  3);

         --If user select "Yes" option to cascade, then enter inside if and call the proc to cascade

         IF n_button_selection = 1
         THEN
          MESSAGE('Pressed Yes-For Lines Cascading');
          shipping_method (l_header_id,
                            ship_method,
                           'Lines');
         ELSIF n_button_selection = 2
         THEN
         MESSAGE('Pressed No-For Header Cascading');
            shipping_method (l_header_id,
                              ship_method,
                               'Header');
         ELSE
          MESSAGE('Inside ELSE Condition');
            NULL;
         END IF;

但如果我关闭表单,控件仍会转到 Button Selection 2,即 ELSIF。

试试这个:

fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
         --    fnd_message.show;
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  'Cancle',
                                  1,
                                  3);


IF n_button_selection = 1
         THEN
             Procedure1();
         ELSIF n_button_selection = 2
         THEN
             Procedure2();
         ELSE
            NULL;
         END IF;