叽叽歪歪

    follow me on Twitter

    Item Handlers

    |

    Handlers serve to centralize the code so it is easier to read and work with.

     

    Item handlers are procedures that contain all the logic used for validating a particular item. An item handler package contains all the procedures for validating the items in a block or form.

     

    The packages are usually named after their block or form, while the procedures are named after their particular item. For example, the block EMP includes the items EMPNO, ENAME, and JOB. The corresponding package EMP contains procedures named EMPNO,ENAME, and JOB, making it easy to locate the code associated with a particular item.

     

    An item handler always takes one parameter named EVENT, type VARCHAR2, which is usually the name of the trigger calling the item handler

     

    Item Handler Format

    A typical item handler looks like this:

    procedure ITEM_NAME(event VARCHAR2) IS

    IF (event = ’WHEN–VALIDATE–ITEM’) THEN

    –– validate the item

    ELSIF (event = ’INIT’) THEN

    –– initialize this dependent item

    ELSIF (event in (’PRE–RECORD’, ’POST–QUERY’)) THEN

    –– etc.

    ELSE fnd_message.debug(’Invalid event passed to item_name: ’ ||

    EVENT);

    END IF;

    END ITEM_NAME;

     

    Eg.

    FORM: INVIDITM.fmb

    Block: MTL_SYSTEM_ITEMS_QF

    Program Unit: MTL_SYSTEM_ITEMS_QF

    PACKAGE MTL_SYSTEM_ITEMS_QF

    IS

     

    PROCEDURE category_set(event varchar2);

    PROCEDURE category(event varchar2);

    PROCEDURE inventory_item(event varchar2);

    PROCEDURE item_catalog_group(event varchar2);

    PROCEDURE item_low(event varchar2);

    PROCEDURE item_high(event varchar2);

     

    PROCEDURE description(event varchar2);

    PROCEDURE Long_Description (event varchar2);

     

    PROCEDURE new(event varchar2);

    PROCEDURE clear(event varchar2);

     

    END;

     

    Take inventory_item for example(inventory_item is one of items for Block: MTL_SYSTEM_ITEMS_QF)

    PROCEDURE inventory_item (event varchar2) is

    begin

     

      if (event = 'INIT') then

        if (:mtl_system_items_qf.item_low is not null or

                  :mtl_system_items_qf.item_high is not null) then

     

          fnd_key_flex.update_definition(

                  BLOCK=>'mtl_system_items_qf',

                  FIELD=>'inventory_item',

                  ENABLED=>'N');

     

          app_item_property.set_property('mtl_system_items_qf.inventory_item',

                  ENABLED, PROPERTY_OFF);

        else

          fnd_key_flex.update_definition(

                  BLOCK=>'mtl_system_items_qf',

                  FIELD=>'inventory_item',

                  ENABLED=>'Y');

     

          app_item_property.set_property('mtl_system_items_qf.inventory_item',

                  ENABLED, PROPERTY_ON);

        end if;

     

      elsif (event = 'WHEN-VALIDATE-ITEM') then

    -- bug 3432242

        app_field.clear_dependent_fields('mtl_system_items_qf.inventory_item',

                                         'mtl_system_items_qf.inventory_item_id',

                                         'mtl_system_items_qf.description');

        mtl_system_items_qf.description('INIT');

        mtl_system_items_qf.item_low('INIT');

        mtl_system_items_qf.item_high('INIT');

     

      end if;

     

    end inventory_item;

    0 comments:

    Post a Comment