Wednesday, March 8, 2017

BOM

Oracle Apps BOM basic Technical Interview Questions

1. How many Types of BOM item types are there?
Four

2. An alternate manufacturing process you can use to produce an assembly.  
    Alternate Routing  
 3. A set of items, bills, and routing can be deleted using?
 Delete group
 4. A list of component items associated with a parent item and information about how each item related to the parent item is?
Bill of Material
 5. An assembly that uses the bill of material of another assembly as its bill is called as
Common Bill of Material    

6. An alternate list of component items you can use to produce an assembly is called as     
Alternate Bill of Material  
 
7. The number of units of a resource available in a department is?
Capacity Units

8. Select the correct BOM item type among the following?
A. standard Bill
B. Model Bill,
C. Option Class
D. Planning Items

9. A routing that uses the routing of another assembly as its routing is called as
Common Routing   

10.  A business rule that restricts the entities to delete is called as
  Deletion Constraint

11. An area within your organization that consists of one or more people, machines, or
 Suppliers is called as
 Department

12. A group of departments is called?
  Department Class

13. A prototype part, material, sub assembly, assembly, or product you have not yet released to production.
 Engineering item    

14. A resource whose capacity can be shared with other departments is called as
  Multi Department Resource

15.  The time required to receive a purchased item into inventory from the initial supplier receipt, such as the time required to deliver an order from the receiving dock to its final destination is?
   Post processing lead time

16.  The time required to place a purchase order or create a discrete job or repetitive schedule is called as       
   Pre-processing lead time

17.  The time required to procure or manufacture an item is called as
   Processing lead time  

18.  An optional identifier you can assign to a component on a bill is called as  
   Reference Designator 
 
19. Anything of value, except material and cash, required to manufacture, cost, and
Schedule products is called as
  Resource 

20. A scheduled period of work for a department within an organization is called as
  Shift

21. A group of capacity modifications for resource shifts to simulate, plan, or schedule
  Capacity is called as
  Simulation Set

22. A calendar that identifies available workdays for one or more organizations is?
  Workday Calendar

23. Dates that define plant or shift workday variations, including holidays, scheduled  maintenance, or extended downtime is called as
 Workday Exceptions

24. The amount of a resource consumed at an operation is called as
  Usage Rate  

25. The frozen standard unit cost for a resource is called as
  Standard Rate
 
26.  Subdivision of an organization, representing either a physical area or a logical
Grouping of items, such as a storeroom or receiving dock is called as
  Sub inventory

Interface and respective Tables Used in Oracle BOM and WIP


Following are Interface and there respective tables Used in Oracle BOM and WIP
Oracle Bill of Material
Open Bills of Material Interface
1. BOM_BILL_OF_MTLS_INTERFACE
2. BOM_INVENTORY_COMPS_INTERFACE
3. BOM_REF_DESGS_INTERFACE
4. BOM_SUB_COMPS_INTERFACE
5. MTL_ITEM_REVISIONS_INTERFACE
Open Bills of Material Tables
1. bom_bill_of_materials
2. bom_inventory_components
3. bom_reference_designators
4. bom_substitute_components
5. mtl_item_revisions
Oracle Routing
Open Routing Interface
1. BOM_OP_ROUTINGS_INTERFACE
2. BOM_OP_SEQUENCES_INTERFACE
3. BOM_OP_RESOURCES_INTERFACE
4. MTL_RTG_ITEM_REVS_INTERFACE
Open Routing Tables
1. bom_operational_routings
2. bom_operation_sequences
3. bom_operation_resources

Oracle Bills of Material (BOM) Tables


Oracle Bills of Material (BOM) Tables


bom_bill_of_materials
bom_inventory_components
bom_reference_designators
bom_substitute_components
mtl_item_revisions
bom_operational_routings
bom_operation_sequences
bom_operation_resources
BOM_BILL_OF_MTLS_INTERFACE
BOM_INVENTORY_COMPS_INTERFACE
BOM_REF_DESGS_INTERFACE
BOM_SUB_COMPS_INTERFACE
MTL_ITEM_REVISIONS_INTERFACE
BOM_OP_ROUTINGS_INTERFACE
BOM_OP_SEQUENCES_INTERFACE
BOM_OP_RESOURCES_INTERFACE
MTL_RTG_ITEM_REVS_INTERFACE



Mandatory columns needed to insert data into BOM Interface tables


Mandatory columns needed to insert data into BOM Interface tables

Here is a snippet of code which tells about the mandatory columns needed to insert the data into BOM Interface tables.


There are two BOM Interface tables, which needs to be populated in order to create BOM.

                 BOM_BILL_OF_MTLS_INTERFACE
                 BOM_INVENTORY_COMPS_INTERFACE
Insert command :

            INSERT INTO bom_bill_of_mtls_interface(
                          assembly_item_id
                              ,organization_id
                              ,bill_sequence_id
                              ,item_number
                              ,item_description
                              ,last_update_date
                              ,last_updated_by
                              ,creation_date
                              ,created_by
                              ,last_update_login
                              ,transaction_type
                              ,process_flag
                               )
            VALUES( <assembly_item_id>
                             ,<organization_id>
                             ,<bill_sequence_id>
                             ,<assembly_item_number>
                             ,<description>
                             ,SYSDATE
                              ,<user_id>
                              ,SYSDATE
                              ,user_id
                              ,user_id
                         ,<CREATE or UPDATE> -- If it is update, then bill sequence id is required, else NULL
                              ,1
                             );             

             INSERT INTO BOM_INVENTORY_COMPS_INTERFACE
                                (  component_item_id
                                    ,assembly_item_id
                                    ,organization_id
                                    ,item_num
                                    ,operation_seq_num
                                    ,effectivity_date
                                    ,transaction_type
                                    ,process_flag
                                    ,bill_sequence_id
                                    ,component_sequence_id
                                    ,item_description
                                    ,basis_type
                                    ,component_quantity
                                    ,component_yield_factor
                                    ,implementation_date
                                    ,supply_subinventory
                                    ,wip_supply_type
                                    ,so_basis
                                    ,check_atp
                                    ,planning_factor
                                    ,low_quantity
                                    ,high_quantity
                                    ,last_update_date
                                    ,last_updated_by
                                    ,creation_date
                                    ,created_by
                                    ,last_update_login
                                    ,component_remarks
                                     )
                              values
                                    (
                                     <component_item_id>
                                    ,<assembly_item_id>
                                    ,<organization_id>
                                    ,<item_seq_num>
                                    ,<operation_sequence>
                                    ,SYSDATE
                                    ,<CREATE or UPDATE> -- If it is update, then Component sequence id is required, else NULL
                                    ,1
                                    ,<bill_sequence_id>  -- If transaction type is UPDATE, then this value is required else NULL
                                    ,<comp_sequence_id> -- If transaction type is UPDATE, then this value is required else NULL
                                    ,<com_description>
                                    ,DECODE(basis_type,1,NULL,2)
                                    ,<component_quantity>
                                    ,<component_yield_factor>
                                    ,<implementation_date>
                                    ,<supply_subinventory>
                                    ,<l_wip_supply_type> -- lookup code from MFG_LOOKUPS where lookup_type = 'WIP_SUPPLY'
                                    ,<so_basis>
                                    ,DECODE(check_atp,'Y',1,'N',2)
                                    ,<planning_factor>
                                    ,<low_quantity>
                                    ,<high_quantity>
                                    ,SYSDATE
                                    ,user_id
                                    ,SYSDATE
                                    ,user_id
                                    ,user_id
                                   ,'BOM Migration'
                                    );

Once data is successfully loaded, then call the standard oracle concurrent program : Bill and Routing Interface to upload the data from interface tables to Base tables.
Exploding BOM - bompxinq.exploder_userexit


The main purpose of exploding BOM is to get the details from the temporary table that oracle uses to hold data. Its session based. So once you are out of that session the data is gone. BOM_SMALL_EXPL_TEMP is the table used to hold the data in a session.

Data cannot be retrived be querying the View from FORM --> HELP-->Record History.
Hence explode the BOM for the Item you needed data.

There are many ways  of holding the data.You can write to a file, print report so on..Its upto you.

In this post i used a table BOM_SMALL_EXPL_TEMP1 to hold the data. Remember its not a temporary table, its a copy of BOM_SMALL_EXPL_TEMP with all the columns.

I too found it difficult to find the values to explode BOM. So i have explored the standard oracle form to find out what columns its uses to explode. All the comments after assignments are the standard oracle Block.FieldName (Block Name -> B_BILL_OF_MATLS). So you can pass the values of your Appliction if needed.

Version : 12.0.6
create or replace Procedure EAM_BOM_EXPLODE
( p_item_id in number ) /* The BOM assembly which you want to explode */
is

v_group_id NUMBER;
x_error_message VARCHAR2 (2000);
x_error_code NUMBER;
sess_id number;
l_rec_count number;

begin

fnd_global.apps_initialize(<>,<>,<>);

delete from BOM_SMALL_EXPL_TEMP1;

commit;

SELECT bom_explosion_temp_s.NEXTVAL
INTO v_group_id
FROM DUAL;

SELECT bom_explosion_temp_session_s.NEXTVAL
INTO sess_id
FROM Dual ;

bompxinq.exploder_userexit(
Verify_Flag => 0,
Org_Id => **ORG_ID**,
Order_By => 1,--:B_Bill_Of_Matls.Bom_Bill_Sort_Order_Type,
Grp_Id => v_group_id,
Session_Id => 0,
Levels_To_Explode => 20, --:B_Bill_Of_Matls.Levels_To_Explode,
Bom_Or_Eng => 1, -- :Parameter.Bom_Or_Eng,
Impl_Flag => 1, --:B_Bill_Of_Matls.Impl_Only,
Plan_Factor_Flag => 2, --:B_Bill_Of_Matls.Planning_Percent,
Explode_Option => 3, --:B_Bill_Of_Matls.Bom_Inquiry_Display_Type,
Module => 2,--:B_Bill_Of_Matls.Costs,
Cst_Type_Id => 0,--:B_Bill_Of_Matls.Cost_Type_Id,
Std_Comp_Flag => 2,
Expl_Qty => 1,--:B_Bill_Of_Matls.Explosion_Quantity,
Item_Id => p_item_id,--:B_Bill_Of_Matls.Assembly_Item_Id,
Alt_Desg => null,--:B_Bill_Of_Matls.Alternate_Bom_Designator,
Comp_Code => null,
Unit_Number_From => 0, --NVL(:B_Bill_Of_Matls.Unit_Number_From, :CONTEXT.UNIT_NUMBER_FROM),
Unit_Number_To => 'ZZZZZZZZZZZZZZZZZ', --NVL(:B_Bill_Of_Matls.Unit_Number_To, :CONTEXT.UNIT_NUMBER_TO),
Rev_Date => sysdate, --:B_Bill_Of_Matls.Disp_Date,
Show_Rev => 1, -- yes
Material_Ctrl => 2, --:B_Bill_Of_Matls.Material_Control,
Lead_Time => 2, --:B_Bill_Of_Matls.Lead_Time,
err_msg => x_error_message, --err_msg
error_code => x_error_code); --error_code

select count(*) into l_rec_count from
--BOM_EXPLOSION_TEMP temp
BOM_SMALL_EXPL_TEMP temp where temp.group_id = v_group_id;

DBMS_OUTPUT.PUT_LINE('l_rec_count = '||l_rec_count);

insert into BOM_SMALL_EXPL_TEMP1 select * from BOM_SMALL_EXPL_TEMP;

commit;

DBMS_OUTPUT.PUT_LINE(x_error_message);
DBMS_OUTPUT.PUT_LINE(x_error_code);
DBMS_OUTPUT.PUT_LINE('grp_id = '||v_group_id);
DBMS_OUTPUT.PUT_LINE('sess_id = '||sess_id);

End;

Once you are done compiling execute the following command to insert the data into the table you have created in the above case its BOM_SMALL_EXPL_TEMP1.

Begin
EAM_BOM_EXPLODE(p_item_id);
End;
/
select * from BOM_SMALL_EXPL_TEMP1;

AR (Accounts Receivable)

AR (Accounts Receivable)

Receivables overview:

Accounts receivable is an asset account in the general ledger that documents money owed to a business by customers who have purchases goods or services on credit.

Receivables Workbenches:

Oracle Receivables provides four integrated workbenches that you can use to perform most of your day–to–day Accounts Receivable operations. You can use the 
1- Receipts Workbench to perform most of your receipt–related tasks.
2- Transactions Workbench to process your invoices, debit memos, credit memos, on–account credits, charge backs, and adjustments. 
3- Collections Workbench lets you review customer accounts and perform collection activities such as recording customer calls and printing dunning letters. 
4- Bills Receivable Workbench lets you create, update, remit, and manage your bills receivable.


AR Required Steps:

Step 1:Define Your Set of Books (Required)
Step 2:Decide How to Use the Account Generator (Required)
Step 3:Define Your System Item Flexfield Structure (Required)
Step 4:Define Your Organizations (Required)
Step 5:Define Your Sales Tax Location Flexfield Structure (Required with Defaults)
Step 6:Define Your System Options (Required)
Step 7:Define Your Payment Terms (Required with Defaults)
Step 8:Open Your Accounting Periods (Required)
Step 9:Define Your Auto Accounting (Required)
Step 10:Define Your Transaction Types (Required with Defaults)
Step 11:Define Your Transaction Sources (Required)
Step 12:Define Your Collectors (Required with Defaults)
Step 13:Define Your Adjustment Approval Limits (Required)
Step 14:Define Your Remittance Banks (Required)
Step 15:Define Your Receivables Activities (Required)
Step 16:Define Your Receipt Classes (Required)
Step 17:Define Your Payment Methods (Required)
Step 18:Define Your Receipt Sources (Required)
Step 19:Define Your Aging Buckets (Required with Defaults)
Step 20:Define Your Salespeople (Required with Defaults)
Step 21:Define Your Profile Options (Required)
Step 22:Define Your Tax Codes and Rates (Required)
Step 23:Define Your Customer Profile Classes (Required with Defaults)
Step 24:Define Your Customers (Required)
Step 25:Define Your Remit-To Addresses (Required)
Step 26:Define Your Units of Measure (Required with Defaults)

------------------------------------------------------------------------------------------------

1- Receivable Activities:
Receivables->Setup->Receipts->Receivable Activities
Define receivables activities to default accounting information for your miscellaneous receipt, finance charge, chargeback, and adjustment transactions. The activities you define appear as list of values choices in the Receipt and Adjustment windows. 

2- Receipt Class: 
Receivables->Setup->Receipts->Receipt Classes
Define receipt classes to determine the required processing steps for receipts to which you assign payment methods with this class.


3- Receipt Source:
Receivables->Setup->Receipts->Receipt Sources
Define receipt batch sources to provide default values for the receipt class, payment method, and remittance bank account fields for receipts you add to a receipt batch. You can accept these default values or enter new ones. Receipt batch sources can use either automatic or manual batch numbering.



4- Customer Profile Class:
Receivables->Customers->Profile Classes
You must define customer profile classes to categorize your customers based on credit, payment terms, statement cycles, automatic receipt, finance charge, dunning, and invoicing information. When you initially set up your customers, you assign each customer to a profile class. To customize the profile class for a specific customer, use the Customer Profile Classes window. Receivables provides the predefined customer profile class 'DEFAULT'. 


5- Transaction Type:
Receivables->Setup->Transactions->Types
Define the transaction types that you assign to your invoices, debit memos, commitments, chargebacks, credit memos, and on-account credits. Receivables uses transaction types to default payment term, account, tax, freight, creation sign, posting, and receivables information. Receivables provides two predefined transaction types: 'Invoice' and 'Credit Memo'.


6- Transaction Sources:
Receivables->Setup->Transactions->Sources
Define the transaction sources that you will assign to your invoices, debit memos, commitments, credit memos, and on-account credits. Receivables uses transaction sources to control your transaction and transaction batch numbering, to specify your default transaction type, and to select validation options for imported transactions. Before you can define a transaction source for your invoices, you must define transaction sources for your credit memos. Receivables provides the following predefined transaction sources: 'MANUAL-OTHER', 'DM Reversal,' and 'Chargeback'.



7- Auto Accounting   
Receivables->Setup->Transactions->Auto Accounting:

Define AutoAccounting to specify how you want Receivables to determine the general ledger accounts for transactions that you enter manually or import using AutoInvoice. Receivables creates default accounts for revenue, receivable, freight, tax, unearned revenue, unbilled receivable, finance charges, and AutoInvoice clearing (suspense) accounts using this information.
When you enter transactions in Receivables, you can override the default general ledger accounts that AutoAccounting creates.
You can control the value that AutoAccounting assigns to each segment of your Accounting Flexfield, such as Company, Division, or Account.
You must define AutoAccounting before you can enter transactions in Receivables


8- Collectors
Receivables->Setup->Collections->Collectors
Receivables lets you define collectors and assign them to a profile class or to a customer's credit profile class. When you assign a collector a to profile class, that collector becomes the collector for customers to whom you assign that profile class. You can modify collector assignments for your customers in the Customers window and for your profile classes in the Customer Profile Classes window.


9- Remit to Address
Receivables->Setup->Print->Remit to Addresses

Define remit-to addresses to let your customers know where to send payment for their invoices. Receivables uses the addresses that you define in the Remit To Addresses window to provide default remit-to information when you enter transactions.
If you use AutoInvoice but have not defined a remit-to address for a location, AutoInvoice will reject all invoices for which it could not determine a remit-to address. However, if you do not wish to set up a remit-to address for each location, you can set up one remit-to address with a default assignment

10- Sales Persons
Receivables ->Setup-> Auto Invoice-> Sales Persons
Define the salespeople you assign to your invoices, debit memos, and commitments to allocate sales credits. If you do not want to assign sales credits to a transaction, you can enter 'No Sales Credit'.


11- System Options
Receivables ->Setup-> System -> System Options



12: Adjustment Approval Limits
Receivables->Setup->Auto Invoice-> Approval Limits
You can define adjustment approval limits for each of your users. Receivables enforces these limits when you either create or approve invoice, debit memo, and chargeback adjustments in the Adjustments, Submit AutoAdjustments, and Approve Adjustments windows.
When you enter an adjustment that is outside your approval limit range, Receivables assigns a pending adjustment status until someone with the appropriate approval limits approves or rejects the adjustment. You must specify both lower and upper approval limits for each of your users

13: Payment Method
Receivables->Setup->Receipts->Receipt Classes
Receivables uses payment methods to account for your receipt entries and applications. Payment methods also determine a customer's remittance bank information.
     Prerequisites
        Define receipt classes
        Define banks


Oracle Fusion - Cost Lines and Expenditure Item link in Projects

SELECT   ccd.transaction_id,ex.expenditure_item_id,cacat.serial_number FROM fusion.CST_INV_TRANSACTIONS cit,   fusion.cst_cost_distribution_...