chapter 1. Bill of Material
Prev  Part V. Plan to Make (P2M) Cycle  Next

1.1. Bill of Material (BOM)

1.1.1. Enter BOM


A bill of material contains information on the parent item and its components, attachments. Define the parent item and all components as inventory items and set the BOM Allowed attribute to Yes. Set the BOM Item Type to model, option class, planning or standard in Define items screen.
A primary bill is a list of components you most frequently use to build a product. An alternate bill is another list of components for the same basic assembly. The primary bill is the default for rolling up costs, defining a job, and calculating cumulative item lead times. You must define a primary bill before you define an alternate. A primary bill can have many alternate bills. Oracle Master Scheduling/MRP uses the primary bill to plan your material. 
Enter the item sequence, operation sequence, and the component item. Enter the quantity used to make one unit of this assembly item at the current operation.


Work in Process pulls components from the supply subinventory and the locator during backflushing. Assign a supply subinventory and locator, to components that have a supply type of Assembly pull or Operation pull.


If Implemented check box is unchecked then Component is on a pending Engineering Change Order (ECO)

For various BOM Item types, the bill of material shall be created differently as..

Standard : A standard bill of material is the most common type of bill  and lists the mandatory components, the required quantity of each  component, and information to control work in process, material planning,  and other Oracle Manufacturing functions.

 Planning : A planning bill of material is a bill of material structure  that includes a percentage distribution for its components. The percentages associated with the components on a planning bill of material do not need to add to 100%. MRP uses component planning percentage in forecast explosions through planning, model, and option class bills of material. Assign planning percentages to components on model, option class, and planning bills. The yield is the percentage of the component that survives the manufacturing process. A yield factor of 0.90 means that only 90% of the usage quantity of the component on a bill actually survives to be incorporated into the finished assembly. To compensate for the expected gain or loss, any function that explodes a bill of material increases or decreases the material requirements for the component, based on the yield.
 

 Model : A model bill of material defines the list of options and option classes you can choose in Oracle Order Management to order a configuration.


Option Class : Mutually Exclusive and Optional Fields pertain to options for model and option class bills. All components are mandatory on standard and planning bills. The Optional field indicates whether the component is mandatory or optional. The Mutually Exclusive field applies only to option class bills and indicates whether you can choose one or many options within an option class. Oracle Order Management uses the Mutually Exclusive check box in combination with the Optional check box to determine the number of option items you can or must choose to order the components of the option class bill.

1.1.2. View Indented BOM



An indented Bill of Materials shows all the sub-levels and is components for the Assembly. Each standard component on a bill can have multiple reference designators and substitute components. When you create a bill, it exists only in the current organization. To use a bill in another organization, you must either copy it or reference it as a common.

1.1.3. BOM Technical Architecture

BOM_BILL_OF_MATERIALS

ASSEMBLY_ITEM_ID              
ORGANIZATION_ID               
ASSEMBLY_TYPE                 
BILL_SEQUENCE_ID              
ALTERNATE_BOM_DESIGNATOR      
COMMON_ASSEMBLY_ITEM_ID       
SPECIFIC_ASSEMBLY_COMMENT     
PENDING_FROM_ECN              
COMMON_BILL_SEQUENCE_ID       
COMMON_ORGANIZATION_ID        
NEXT_EXPLODE_DATE             
PROJECT_ID                    
TASK_ID                       
ORIGINAL_SYSTEM_REFERENCE     
STRUCTURE_TYPE_ID             
BOM_INVENTORY_COMPONENTS

COMPONENT_SEQUENCE_ID         
BILL_SEQUENCE_ID              
OPERATION_SEQ_NUM             
COMPONENT_ITEM_ID             
ITEM_NUM                      
COMPONENT_QUANTITY            
PARENT_BILL_SEQ_ID            
COMPONENT_YIELD_FACTOR        
COMPONENT_REMARKS             
EFFECTIVITY_DATE              
CHANGE_NOTICE                 
IMPLEMENTATION_DATE           
DISABLE_DATE                  
PLANNING_FACTOR               
QUANTITY_RELATED              
SO_BASIS                      
OPTIONAL                      
MUTUALLY_EXCLUSIVE_OPTIONS    
INCLUDE_IN_COST_ROLLUP        
CHECK_ATP                     
BOM_COMPONENT_OPERATIONS

COMP_OPERATION_SEQ_ID         
OPERATION_SEQ_NUM             
OPERATION_SEQUENCE_ID         
COMPONENT_SEQUENCE_ID         
BILL_SEQUENCE_ID              
CONSUMING_OPERATION_FLAG
CONSUMPTION_QUANTITY          
SUPPLY_SUBINVENTORY           
SUPPLY_LOCATOR_ID             
WIP_SUPPLY_TYPE               

Query to find first level components of an Assemby Query to find all level components of an Assembly
set lines 150
set pages 150

col segment1 form a20
select
bom.assembly_item_id,
bic.component_sequence_id              ,
bic.bill_sequence_id                   ,
--parent_bill_seq_id             ,
bic.operation_seq_num                  ,
bic.component_item_id                  ,
msi.segment1,
--bic.bom_item_type                  ,
bic.item_num                           ,
bic.component_quantity
from
bom_inventory_components bic,
mtl_system_items msi,
bom_bill_of_materials bom
where bom.assembly_item_id=149
and bom.organization_id=207
and bom.bill_sequence_id=bic.bill_sequence_id
and bic.component_item_id=msi.inventory_item_id
and msi.organization_id=207
order by 1,2
/
set lines 150
set pages 150

col parent_item form a20
col child_item form a20
break on parent_item

select
(select msi.segment1 from mtl_system_items msi where msi.inventory_item_id=bom.assembly_item_id and msi.organization_id=207) parent_item,
bom.assembly_item_id,
lpad(' ',2*(level-1),' ')||
(select msi.segment1 from mtl_system_items msi where msi.inventory_item_id=bic.component_item_id and msi.organization_id=207) child_item,
bic.component_item_id                  child_item_id,
--bic.component_sequence_id              ,
bic.bill_sequence_id                   ,
--parent_bill_seq_id             ,
bic.operation_seq_num                  ,
--bic.bom_item_type                  ,
--bic.item_num                           ,
level,
bic.component_quantity
from
bom_inventory_components bic,
(select * from bom_bill_of_materials where organization_id=207) bom
where bom.bill_sequence_id=bic.bill_sequence_id
start with bom.assembly_item_id=149
connect by  prior bic.component_item_id=bom.assembly_item_id
--order by level, bom.assembly_item_id
/
(Oracle uses BOM explosion package for this, which takes care of various conditions like Model and Option class etc)

1.1.4. BOM API

PROCEDURE Process_BOM
(p_api_version_number IN NUMBER
, p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE
, x_return_status OUT VARCHAR2
, x_msg_count OUT NUMBER
, x_msg_data OUT VARCHAR2
, p_ECO_rec IN Eco_Rec_Type:= G_MISS_ECO_REC
, p_assembly_item_tbl IN Revised_Item_Tbl_Type:= G_MISS_REVISED_ITEM_TBL
, p_rev_component_tbl IN Rev_Component_Tbl_Type:=G_MISS_REV_COMPONENT_TBL
, p_ref_designator_tbl IN Ref_Designator_Tbl_Type:=G_MISS_REF_DESIGNATOR_TBL
, p_sub_component_tbl IN Sub_Component_Tbl_Type:=G_MISS_SUB_COMPONENT_TBL
, x_assembly_item_tbl OUT Revised_Item_Tbl_Type
, x_rev_component_tbl OUT Rev_Component_Tbl_Type
, x_ref_designator_tbl OUT Ref_Designator_Tbl_Type
, x_sub_component_tbl OUT Sub_Component_Tbl_Type)
p_api_version_number:
p_init_msg_list: This parameter, if set to TRUE, allows callers to request that the API do the initialization of the message list on their behalf. On the other hand, the caller may set this to FALSE (or accept the default value) in order to do the
initialization itself by calling Error_Handler.Initialize.
p_assembly_item_tbl, p_rev_component_tbl, p_ref_designator_tbl, p_sub_ component_tbl: This is the set of data structures that represents the incoming business object.
p_assembly_item is a record that holds the Bill of Materials header for a BOM. All the other data structures are PL/SQL tables of records that hold records for each of the other entities. All these data structures directly correspond to the entities shown in the BOM entity diagram.
x_assembly_item_tbl, x_rev_component_tbl, x_ref_designator_tbl, x_sub_component_tbl: This is the set of data structures that represents the outgoing business object. These records essentially constitute the whole business object as it was sent in, except now it has all the changes that the import program made to it through all the steps in the Process Flow.
 x_return_status: This is a flag that indicates the state of the whole business object after the import. The caller may look up this flag to choose an appropriate course of action (commit, rollback, or further processing by the caller).
x_msg_count: This holds the number of messages in the API message stack after the import. This parameter returns a 0 when there are no messages to return.
 x_msg_data: This returns a single message when the message count is 1. The purpose of this parameter is to save the caller the extra effort of retrieving a lone message from the message list. This parameter returns NULL when there is
more than one message.

PROCEDURE Initialize, Initializes the message list
PROCEDURE Reset, resets the message index to the start of the list so the user can start reading from the start of the list The following procedure will return theentire message list to the user
PROCEDURE Get_Message_List (x_message_list OUT Eng_Eco_Pub.Error_Tbl_Type);
Retrieving messages by entity: One implementation of procedure Get_Entity_Message will return all messages pertaining to a particular entity (p_entity_id), denoted by the symbols ECO (ECO Header), RI (Revised Item), RC (Revised Component), SC (Substitute Component), RD (Reference Designator).
PROCEDURE Get_Entity_Message (p_entity_id IN VARCHAR2 , x_message_list OUT Eng_Eco_Pub.Error_Tbl_Type)


Copyright © 2000-2005 ConfluentMinds Pvt Ltd. All Rights Reserved. Unauthorized use, duplication or distribution is strictly prohibited. This is the proprietary information of ConfluentMinds Pvt Ltd. Use is subject to license terms.

Prev  Home  Next
A Techno-functional Guide to Oracle Applications - Supply Chain Management.Your feedback please.