Auto Generate Item Number
5270 ワード
自動生成品目コードの顧客化コードは、コードがよく書けていると思って、予備を残しておきましょう.
source:https://forums.oracle.com/thread/411343
コードはCUSTOMに入れる必要がある.pll
source:https://forums.oracle.com/thread/411343
コードはCUSTOMに入れる必要がある.pll
------------------------------------------------------------------------------------------------------------------------------------
/*********************************************************************/
/* Begin Master Item Form */
/* 1. Make sure the Item Field on the Master Item Form */
/* is NOT editable by the END USER */
/* 2. Set the Item Field to be the next Item Number */
/* in a 7 digit sequence. */
/* HELPFUL INFO: */
/* MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR */
/* - Item Field on the main Master Item Form */
/* MTL_SYSTEM_ITEMS.INVENTORY_ITEM */
/* - Item Field on the folder tab of the Master Item Form */
BEGIN
-- Item Master Form
IF FORM_NAME = 'INVIDITM' THEN
-- MTL_SYSTEM_ITEMS Block
IF BLOCK_NAME = 'MTL_SYSTEM_ITEMS' THEN
-- WHEN-NEW-ITEM-INSTANCE Event
IF EVENT_NAME = 'WHEN-NEW-ITEM-INSTANCE' THEN
-- We don't want to mess with the Item if we're in a Query Mode
IF NAME_IN('SYSTEM.MODE') != 'ENTER-QUERY' THEN
-- The value of the INVENTORY_ITEM_MIR will be blank when we're creating a new Item Master Record
-- and therefore that is when we want to DISABLE that item. If it's filled in, then we're
-- dealing with an existing Item Master Record, in which case we still want the END USER to be able to
-- highlight or select the item number that was generated by the system.
IF NAME_IN('SYSTEM.CURRENT_ITEM') = 'INVENTORY_ITEM_MIR' AND
NAME_IN('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR') IS NULL THEN
NEXT_ITEM; -- Move to the next item so the SYSTEM.CURRENT_ITEM isn't the Item Field Anymore(t
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
REQUIRED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
INSERT_ALLOWED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
UPDATEABLE,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
REQUIRED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
INSERT_ALLOWED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
UPDATEABLE,
PROPERTY_FALSE);
ELSIF NAME_IN('SYSTEM.CURRENT_ITEM') = 'INVENTORY_ITEM' AND
NAME_IN('MTL_SYSTEM_ITEMS.INVENTORY_ITEM') IS NULL THEN
NEXT_ITEM; -- Move to the next item so the SYSTEM.CURRENT_ITEM isn't the Item Field Anymore(t
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
REQUIRED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
INSERT_ALLOWED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR',
UPDATEABLE,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
REQUIRED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
INSERT_ALLOWED,
PROPERTY_FALSE);
SET_ITEM_PROPERTY('MTL_SYSTEM_ITEMS.INVENTORY_ITEM',
UPDATEABLE,
PROPERTY_FALSE);
END IF; -- NAME_IN - INVENTORY_ITEM_MIR - INVENTORY_ITEM
END IF; -- SYSTEM.MODE
END IF; -- WHEN-NEW-ITEM-INSTANCE
-- WHEN-VALIDATE-RECORD Event
IF EVENT_NAME = 'WHEN-VALIDATE-RECORD' THEN
IF NAME_IN('MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR') IS NULL THEN
DECLARE
NEXTITEMNUMBER VARCHAR2(10);
BEGIN
--FND_MESSAGE.SET_STRING('Setting the value of INVENTORY_ITEM to the next Item_Number');
--FND_MESSAGE.SHOW;
-- Call our custom plsql to get the next item number from a sequence
NEXTITEMNUMBER := XXSSI.XXSSI_ITEM_MAST_NUM_GEN.GET_NEXT_ITEM_NUMBER;
COPY(NEXTITEMNUMBER, 'MTL_SYSTEM_ITEMS.INVENTORY_ITEM_MIR');
COPY(NEXTITEMNUMBER, 'MTL_SYSTEM_ITEMS.SEGMENT1');
END;
END IF; -- NAME_IN - INVENTORY_ITEM_MIR
END IF; -- WHEN-VALIDATE-RECORD
END IF; -- BLOCK 'MTL_SYSTEM_ITEMS'
END IF; -- FORM 'Master Item'
END;
/* End Master Item Form */
/*********************************************************************/