Assembly and Component Items Demand Shortage Report in Fusion SCP

Introduction/ Issue:

Developing a BIP report in Fusion to identify component demand shortages for assembly items and improve supply planning decisions.

Why we need to do / Cause of the issue:

In supply chain planning, one of the major challenges faced by supply teams is the sudden shortage of components required to build critical assembly items. Although demand exists at the assembly level, the corresponding component-level demand and shortages are often not visible in a single, consolidated view. This lack of visibility makes it difficult for supply planners to take timely action, leading to last-minute firefighting, delayed production, and potential customer impact. To address this gap, the Assembly and Component Demand Summary Report is designed to clearly showcase component demand shortages for specific assembly items, enabling proactive supply planning.

How do we solve:

  1. Login to Oracle Fusion and Navigate to Reports and Analytics under Tools
  2. Click on Browse Catalog. This will open analytics page. Now click on Create and select Data Model
  3. Click on plus icon and select SQL Query

4. Select the Data source as ApplicationDB_FSCM and Use the following query

SELECT DISTINCT

msi.item_name              AS “Assembly Item”,

msi.description            AS “Assembly Item Desc”,

msi.organization_code      AS “Assembly Item Org”,

msi1.item_name             AS “Component Item”,

msi1.description           AS “Component Item Desc”,

msi1.organization_code     AS “Component Org”,

— Component Category: Purchasing category if exists, otherwise default

(

SELECT NVL(

MAX(CASE

WHEN UPPER(mcs.category_set_name) LIKE ‘%PURCHASING%’

THEN mcc.category_name

END),

‘No Purchasing Category’)

FROM fusion.msc_item_categories mic

LEFT JOIN fusion.msc_catalog_categories mcc

ON mic.category_id = mcc.category_id

LEFT JOIN fusion.msc_category_sets mcs

ON mcc.category_set_id = mcs.category_set_id

WHERE mic.inventory_item_id = msi1.inventory_item_id

AND mic.organization_id = msi1.organization_id

) AS “Component Category”,

msi1.life_cycle_phase      AS “Component Status”,

bom.component_quantity     AS “Component Usage Quantity”,

msi.life_cycle_phase       AS “Assembly Status”,

— Assembly on-hand

ROUND(NVL((SELECT MAX(d.onhand)

FROM fusion.msc_data_1_dyd d

WHERE d.prd_lvl_member_id = msi.inventory_item_id

AND d.org_lvl_member_id = msi.organization_id), 0), 4) AS “Assembly Onhand”,

— Component on-hand

ROUND(NVL((SELECT MAX(d.onhand)

FROM fusion.msc_data_1_dyd d

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id), 0), 4) AS “Component Onhand”,

— Demand next 10 days

ROUND(NVL((SELECT SUM(d.total_demand)

FROM fusion.msc_data_1_dyd d

JOIN fusion.msc_dimension_tim_dyd t

ON d.tim_lvl_member_id = t.tim_lvl_member_id

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id

AND t.from_date BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE)+10), 0), 4) AS “Demand Next 10 Days”,

— Demand shortage

(ROUND(NVL((SELECT MAX(d.onhand)

FROM fusion.msc_data_1_dyd d

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id), 0), 4)

-ROUND(NVL((SELECT SUM(d.total_demand)

FROM fusion.msc_data_1_dyd d

JOIN fusion.msc_dimension_tim_dyd t

ON d.tim_lvl_member_id = t.tim_lvl_member_id

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id

AND t.from_date BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE)+10), 0), 4)

) AS “Demand Shortage”,

— Demand next 1 month

ROUND(NVL((SELECT SUM(d.total_demand)

FROM fusion.msc_data_1_dyd d

JOIN fusion.msc_dimension_tim_dyd t

ON d.tim_lvl_member_id = t.tim_lvl_member_id

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id

AND t.from_date BETWEEN TRUNC(SYSDATE) AND ADD_MONTHS(TRUNC(SYSDATE), 1)), 0), 4) AS “Demand Next 1 Month”,

— Demand next 3 months

ROUND(NVL((SELECT SUM(d.total_demand)

FROM fusion.msc_data_1_dyd d

JOIN fusion.msc_dimension_tim_dyd t

ON d.tim_lvl_member_id = t.tim_lvl_member_id

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id

AND t.from_date BETWEEN TRUNC(SYSDATE) AND ADD_MONTHS(TRUNC(SYSDATE), 3)), 0), 4) AS “Demand Next 3 Months”,

— Demand next 6 months

ROUND(NVL((SELECT SUM(d.total_demand)

FROM fusion.msc_data_1_dyd d

JOIN fusion.msc_dimension_tim_dyd t

ON d.tim_lvl_member_id = t.tim_lvl_member_id

WHERE d.prd_lvl_member_id = msi1.inventory_item_id

AND d.org_lvl_member_id = msi1.organization_id

AND t.from_date BETWEEN TRUNC(SYSDATE) AND ADD_MONTHS(TRUNC(SYSDATE), 6)), 0), 4) AS “Demand Next 6 Months”

FROM (

SELECT

mb.assembly_item_id,

mbc.inventory_item_id   AS component_item_id,

mbc.usage_quantity      AS component_quantity,

mb.organization_id      AS org_id

FROM

msc_item_structures mb

JOIN msc_bom_components mbc

ON mb.bill_sequence_id = mbc.bill_sequence_id

AND mb.assembly_item_id = mbc.using_assembly_id

AND mb.assembly_type = 1

AND mb.organization_id = mbc.organization_id

AND (TRUNC(mbc.disable_date) > TRUNC(SYSDATE) OR mbc.disable_date IS NULL)

AND TRUNC(mbc.effectivity_date) <= TRUNC(SYSDATE)

AND mbc.effectivity_date IS NOT NULL

AND mbc.plan_id = -1

AND mb.primary_flag = 1

) bom

JOIN fusion.msc_system_items msi

ON bom.assembly_item_id = msi.inventory_item_id

AND bom.org_id = msi.organization_id

AND msi.plan_id = -1

JOIN fusion.msc_system_items msi1

ON bom.component_item_id = msi1.inventory_item_id

AND bom.org_id = msi1.organization_id

AND msi1.plan_id = -1

–WHERE msi.item_name=’00500′

ORDER BY msi.item_name, “Component Item”

  1. Click on Data tab and view the data

 

6. Save the data model, then click Save as Sample Data followed by Create Report. Drag and drop the                 required columns into the report layout and save the report. If any changes are required, such as applying            conditional formatting, reopen the report in Edit mode and make the necessary updates.

 

 

 

7. If the report needs to be scheduled for end users, save both the data model and the report under the                  Custom folder in Shared Folders. Then, click the More option on the report, select Schedule, add the                required email recipients, and choose the schedule frequency.

 

 

Conclusion:

The Assembly and Component Demand Summary BIP report provides a consolidated view of assembly and component-level demand, enabling early identification of potential shortages. This helps reduce delays, prevent sudden shortages, and improve overall supply chain efficiency.

Recent Posts