DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_INV_COMPS1_PKG

Source


1 PACKAGE BODY BOM_INV_COMPS1_PKG as
2 /* $Header: bompic1b.pls 120.7 2010/09/02 21:02:52 umajumde ship $ */
3 
4 PROCEDURE Check_Overlap(X_Rowid       VARCHAR2,
5             X_Bill_Sequence_Id    NUMBER,
6             X_Component_Item_Id   NUMBER,
7                         X_Operation_Seq_Num     NUMBER,
8             X_Disable_Date                  DATE,
9                         X_Effectivity_Date    DATE) IS
10   dummy NUMBER;
11 BEGIN
12   SELECT 1 INTO dummy FROM sys.dual
13    WHERE NOT EXISTS
14          (SELECT 1 FROM bom_inventory_components
15            WHERE bill_sequence_id = X_Bill_Sequence_Id
16              AND component_item_id = X_Component_Item_Id
17              AND operation_seq_num = X_Operation_Seq_Num
18              AND (X_Disable_Date IS NULL
19                  OR (to_char(X_Disable_Date,'YYYY/MM/DD HH24:MI:SS') > to_char(effectivity_date,'YYYY/MM/DD HH24:MI:SS')))
20              AND ((to_char(X_Effectivity_Date,'YYYY/MM/DD HH24:MI:SS') <  to_char(disable_date,'YYYY/MM/DD HH24:MI:SS'))
21                  OR disable_date IS NULL)
22              AND implementation_date IS NOT NULL
23              AND NVL(ECO_FOR_PRODUCTION,2) = 2
24              AND ((rowid <> X_Rowid) OR (X_Rowid IS NULL)));
25 EXCEPTION
26   WHEN NO_DATA_FOUND THEN
27     fnd_message.set_name('BOM','BOM_COMP_OP_COMBINATION');
28     app_exception.raise_exception;
29 END Check_Overlap;
30 
31 PROCEDURE Check_Unit_Number_Overlap(X_Rowid     VARCHAR2,
32             X_Bill_Sequence_Id    NUMBER,
33             X_Component_Item_Id   NUMBER,
34                         X_Operation_Seq_Num     NUMBER,
35             X_From_Unit_Number              VARCHAR2,
36                         X_To_Unit_Number    VARCHAR2) IS
37   dummy NUMBER;
38 BEGIN
39   SELECT 1 INTO dummy FROM sys.dual
40    WHERE NOT EXISTS
41          (SELECT 1 FROM bom_inventory_components
42            WHERE bill_sequence_id = X_Bill_Sequence_Id
43              AND component_item_id = X_Component_Item_Id
44              AND operation_seq_num = X_Operation_Seq_Num
45              AND (X_To_Unit_Number IS NULL
46                  OR (X_To_Unit_Number >= from_end_item_unit_number))
47              AND ((X_From_Unit_Number <=  to_end_item_unit_number)
48                  OR to_end_item_unit_number IS NULL)
49              AND implementation_date IS NOT NULL
50              AND NVL(ECO_FOR_PRODUCTION,2) = 2
51              AND disable_date is NULL
52              AND ((rowid <> X_Rowid) OR (X_Rowid IS NULL)));
53 EXCEPTION
54   WHEN NO_DATA_FOUND THEN
55     fnd_message.set_name('BOM','BOM_UNIT_OVERLAP');
56     app_exception.raise_exception;
57 END Check_Unit_Number_Overlap;
58 
59 PROCEDURE Check_Commons(X_Bill_Sequence_Id    NUMBER,
60             X_Organization_Id   NUMBER,
61       X_Component_Item_Id   NUMBER,
62       X_Bill_or_Eco                   NUMBER DEFAULT 2) IS        --bug1517975
63   dummy NUMBER;
64   eng_items_allowed   number := 1;                      -- bug 1517975
65   eng_items_for_mfg_ecos_flag varchar(3) := 'NO';       -- bug 1517975
66 
67 BEGIN
68 -- Check if bill has cross-org commons
69 -- If so, make sure component exists in those other orgs
70 -- and the component does not violate the bill/comp matrix
71 
72 -- bug 1517975
73 FND_PROFILE.GET('ENG:ALLOW_ENG_COMPS',eng_items_allowed);
74 if ((eng_items_allowed = 1) and (X_Bill_or_Eco = 2)) then
75 eng_items_for_mfg_ecos_flag := 'YES';
76 end if;
77 
78   SELECT 1 INTO dummy
79     FROM bom_bill_of_materials bbom,
80          mtl_system_items msi1
81    WHERE bbom.source_bill_sequence_id = X_Bill_Sequence_Id
82      AND bbom.organization_id <> X_Organization_Id
83      AND msi1.inventory_item_id = bbom.assembly_item_id
84      AND msi1.organization_id = bbom.organization_id
85      AND NOT EXISTS (SELECT null
86                        FROM mtl_system_items msi2
87                       WHERE msi2.organization_id = bbom.organization_id
88                         AND msi2.inventory_item_id = X_Component_Item_Id
89                         --AND msi2.bom_enabled_flag = 'Y'
90                         --Not a required condition.
91                         AND ((bbom.assembly_type = 1 AND
92             msi2.eng_item_flag='N')
93                             OR (bbom.assembly_type = 2)
94                              OR (eng_items_for_mfg_ecos_flag = 'YES'))      --bug1517975
95                         AND msi2.inventory_item_id <> bbom.assembly_item_id
96       AND ((msi1.bom_item_type = 1
97             AND msi2.bom_item_type <> 3)
98           OR (msi1.bom_item_type = 2
99             AND msi2.bom_item_type <> 3)
100           OR (msi1.bom_item_type = 3)
101           OR (msi1.bom_item_type = 4
102         AND (msi2.bom_item_type = 4
103              OR (msi2.bom_item_type in (1,2)
104            AND msi2.replenish_to_order_flag = 'Y'
105            AND msi1.base_item_id is NOT NULL
106            AND msi1.replenish_to_order_flag = 'Y'
107           ))))
108       AND (msi1.bom_item_type = 3
109            OR msi1.pick_components_flag = 'Y'
110            OR msi2.pick_components_flag = 'N')
111       AND (msi1.bom_item_type = 3
112            OR nvl(msi2.bom_item_type, 4) <> 2
113            OR (msi2.bom_item_type = 2
114                AND ((msi1.pick_components_flag = 'Y'
115                AND msi2.pick_components_flag = 'Y')
116              OR (msi1.replenish_to_order_flag = 'Y'
117                  AND msi2.replenish_to_order_flag = 'Y'
118            ))))
119       AND (
120            (
121              (nvl(fnd_profile.value('BOM:MANDATORY_ATO_IN_PTO'), 2) <> 1)
122               AND (NOT (msi1.bom_item_type = 4
123                        AND msi1.pick_components_flag = 'Y'
124                        AND msi2.bom_item_type = 4
125                        AND msi2.replenish_to_order_flag = 'Y'
126                       )
127                   )
128             )
129            OR (nvl(fnd_profile.value('BOM:MANDATORY_ATO_IN_PTO'), 2) = 1)
130           ) /* bug 10082384 */
131       );
132   fnd_message.set_name('INV','INV_NOT_VALID');
133   fnd_message.set_token('ENTITY','Component item_CAP',TRUE);
134   fnd_message.set_name('BOM','BOM_COMMON_OTHER_ORGS');
135   app_exception.raise_exception;
136 EXCEPTION
137   WHEN NO_DATA_FOUND THEN
138     null;
139   WHEN TOO_MANY_ROWS THEN
140     fnd_message.set_name('INV','INV_NOT_VALID');
141     fnd_message.set_token('ENTITY','Component item_CAP',TRUE);
142     fnd_message.set_name('BOM','BOM_COMMON_OTHER_ORGS');
143     app_exception.raise_exception;
144 END Check_Commons;
145 
146 
147 PROCEDURE Check_ATP(X_Organization_Id   NUMBER,
148         X_Component_Item_Id   NUMBER,
149                     X_ATP_Comps_Flag    VARCHAR2,
150                     X_WIP_Supply_Type           NUMBER,
151                     X_Replenish_To_Order_Flag   VARCHAR2,
152                     X_Pick_Components_Flag      VARCHAR2) IS
153   dummy NUMBER;
154   l_atp_comps_flag  VARCHAR2(1);
155   l_atp_flag    VARCHAR2(1);
156 BEGIN
157 
158   -- Starting with R11, the ATP_Flag can have additional values R and C
159   -- apart from Y and N
160 
161   -- Starting with 11i, even ATP Components flag has additional values which are
162   -- similar to ATP flag. To incorporate these values for multi-level ATP we also
163   -- release the update allowed constraint on Check_ATP
164 
165         -- ATP Components flag for an item indicates whether an item's child components should be
166         -- ATP checked. A component c1 (ATP Check = Material) can be on a subassembly that does not
167         -- need to do atp check for components and hence has ATP Components of subassy is set to No. In
168         -- current validation c1 cannot be added onto the subassy because we restrict that.
169 
170         -- We will now release the restriction on the ATP Check and ATP Components flag. This will allow the
171         -- users to control what can and cannot be structured on a bill. If the item level attribute for a
172         -- component is ATP Check = Yes, BOM will allow the user to turn it off at the component level.
173         -- The default value will be copied from the item.
174 
175   null;
176  /*
177   SELECT atp_components_flag,
178    atp_flag
179     INTO l_atp_comps_flag,
180    l_atp_flag
181     FROM mtl_system_items msi
182    WHERE inventory_item_id = X_Component_Item_Id
183      AND organization_id = X_Organization_Id;
184 
185      IF(( X_Atp_Comps_Flag = 'N' AND
186     (  NVL(X_Wip_Supply_Type,1) = 6 OR
187        X_Replenish_To_Order_Flag = 'Y' OR
188        X_Pick_Components_Flag     = 'Y'
189      )
190    ) AND
191    (  l_atp_comps_flag IN ('Y','C', 'R', 'N') OR l_atp_flag IN ('Y', 'R', 'C','N' )
192     )
193   ) OR
194   X_Atp_Comps_flag IN ('Y','R','C')
195       THEN
196     -- Do nothing since this is permitted
197    -- If the Assembly item is Phantom or an ATO or PTO and has ATP Components as 'N'
198    -- Even then we will allow ATP components
199    NULL;
200       ELSIF (x_atp_comps_flag = 'N' AND
201     ( l_atp_comps_flag = 'N' AND l_atp_flag = 'N')
202       )
203       THEN
204     -- Even in this case do nothing since both the flag are N and hence is
205     -- is a valid combination
206 
207     NULL;
208       ELSE
209     fnd_message.set_name('BOM','BOM_INVALID_ATP');
210     app_exception.raise_exception;
211       END IF;
212     */
213 
214 END Check_ATP;
215 
216 
217 PROCEDURE Check_Unique(X_Rowid            VARCHAR2,
218            X_Bill_Sequence_Id NUMBER,
219                        X_Component_Item_id  NUMBER,
220                        X_Operation_Seq_Num      NUMBER,
221                        X_Effectivity_Date       DATE,
222            X_bill_or_eco    NUMBER) IS
223    dummy NUMBER;
224 BEGIN
225   SELECT 1 INTO dummy FROM dual WHERE NOT EXISTS
226     (SELECT 1 from bom_inventory_components
227       WHERE bill_sequence_id = X_Bill_Sequence_Id
228         AND component_item_id = X_Component_Item_Id
229         AND operation_seq_num = X_Operation_Seq_Num
230         AND effectivity_date = X_Effectivity_Date
231         AND NVL(ECO_FOR_PRODUCTION,2) = 2
232         AND ((X_Rowid is null) OR (rowid <> X_Rowid))
233     );
234 
235 EXCEPTION
236   WHEN NO_DATA_FOUND THEN
237     IF (X_bill_or_eco = 1) THEN
238        fnd_message.set_name('BOM','BOM_COMPONENT_DUPLICATE');
239     ELSE
240        fnd_message.set_name('ENG','ENG_HAS_BEEN_MODIFIED');
241     END IF;
242     app_exception.raise_exception;
243 END Check_Unique;
244 
245 
246 PROCEDURE Check_Unique_From_Unit_Number(X_Rowid VARCHAR2,
247            X_Bill_Sequence_Id NUMBER,
248                        X_Component_Item_id  NUMBER,
249                        X_Operation_Seq_Num      NUMBER,
250                        X_From_Unit_Number       VARCHAR2,
251            X_bill_or_eco    NUMBER) IS
252    dummy NUMBER;
253 BEGIN
254   SELECT 1 INTO dummy FROM dual WHERE NOT EXISTS
255     (SELECT 1 from bom_inventory_components
256       WHERE bill_sequence_id = X_Bill_Sequence_Id
257         AND component_item_id = X_Component_Item_Id
258         AND operation_seq_num = X_Operation_Seq_Num
259         AND from_end_item_unit_number = X_From_Unit_Number
260         AND ((X_Rowid is null) OR (rowid <> X_Rowid))
261         AND disable_date is NULL
262         AND NVL(ECO_FOR_PRODUCTION,2) = 2
263         AND ((X_bill_or_eco = 1) OR (X_bill_or_eco <> 1
264       AND implementation_date is null))
265     );
266 
267 EXCEPTION
268   WHEN NO_DATA_FOUND THEN
269     IF (X_bill_or_eco = 1) THEN
270        fnd_message.set_name('BOM','BOM_COMP_DUP_UNIT');
271     ELSE
272        fnd_message.set_name('ENG','ENG_UNIT_NUMBER_MODIFIED');
273     END IF;
274     app_exception.raise_exception;
275 END Check_Unique_From_Unit_Number;
276 
277 
278 PROCEDURE Insert_Row(X_Rowid                   IN OUT NOCOPY VARCHAR2,
279                        X_Operation_Seq_Num              NUMBER,
280                        X_Component_Item_Id              NUMBER,
281                        X_Last_Update_Date               DATE,
282                        X_Last_Updated_By                NUMBER,
283                        X_Creation_Date                  DATE,
284                        X_Created_By                     NUMBER,
285                        X_Last_Update_Login              NUMBER,
286                        X_Item_Num                       NUMBER,
287                        X_Component_Quantity             NUMBER,
288                        X_Component_Yield_Factor         NUMBER,
289                        X_Component_Remarks              VARCHAR2,
290                        X_Effectivity_Date               DATE,
291                        X_Change_Notice                  VARCHAR2,
292                        X_Implementation_Date            DATE,
293                        X_Disable_Date                   DATE,
294                        X_Attribute_Category             VARCHAR2,
295                        X_Attribute1                     VARCHAR2,
296                        X_Attribute2                     VARCHAR2,
297                        X_Attribute3                     VARCHAR2,
298                        X_Attribute4                     VARCHAR2,
299                        X_Attribute5                     VARCHAR2,
300                        X_Attribute6                     VARCHAR2,
301                        X_Attribute7                     VARCHAR2,
302                        X_Attribute8                     VARCHAR2,
303                        X_Attribute9                     VARCHAR2,
304                        X_Attribute10                    VARCHAR2,
305                        X_Attribute11                    VARCHAR2,
306                        X_Attribute12                    VARCHAR2,
307                        X_Attribute13                    VARCHAR2,
308                        X_Attribute14                    VARCHAR2,
309                        X_Attribute15                    VARCHAR2,
310                        X_Planning_Factor                NUMBER,
311                        X_Quantity_Related               NUMBER,
312                        X_So_Basis                       NUMBER,
313                        X_Optional                       NUMBER,
314                        X_Mutually_Exclusive_Options     NUMBER,
315                        X_Include_In_Cost_Rollup         NUMBER,
316                        X_Check_Atp                      NUMBER,
317                        X_Required_To_Ship               NUMBER,
318                        X_Required_For_Revenue           NUMBER,
319                        X_Include_On_Ship_Docs           NUMBER,
320                        X_Include_On_Bill_Docs           NUMBER,
321                        X_Low_Quantity                   NUMBER,
322                        X_High_Quantity                  NUMBER,
323                        X_Acd_Type                       NUMBER,
324                        X_Old_Component_Sequence_Id      NUMBER,
325                        X_Component_Sequence_Id          IN OUT NOCOPY NUMBER,
326                        X_Bill_Sequence_Id               NUMBER,
327                        X_Wip_Supply_Type                NUMBER,
328                        X_Pick_Components                NUMBER,
329                        X_Supply_Subinventory            VARCHAR2,
330                        X_Supply_Locator_Id              NUMBER,
331                        X_Operation_Lead_Time_Percent    NUMBER,
332                        X_Revised_Item_Sequence_Id       NUMBER,
333                        X_Cost_Factor                    NUMBER,
334                        X_Bom_Item_Type                  NUMBER,
335                        X_From_Unit_Number               VARCHAR2,
336                        X_To_Unit_Number                 VARCHAR2,
337            X_Enforce_Int_Requirements       NUMBER DEFAULT NULL,
338            X_auto_Request_Material    VARCHAR2 DEFAULT NULL
339            ,X_Suggested_Vendor_Name VARCHAR2 DEFAULT NULL
340            ,X_Vendor_Id         NUMBER DEFAULT NULL
341                      ,X_Unit_Price         NUMBER DEFAULT NULL
342          , X_basis_type      NUMBER
343   ) IS
344     CURSOR C IS SELECT rowid FROM BOM_INVENTORY_COMPONENTS
345                  WHERE component_sequence_id = X_Component_Sequence_Id;
346       CURSOR C2 IS SELECT bom_inventory_components_s.nextval FROM sys.dual;
347 
348   l_object_revision_id NUMBER;
349   l_minor_revision_id NUMBER;
350   l_comp_revision_id NUMBER;
351   l_comp_minor_revision_id  NUMBER;
352   l_err_tbl Error_Handler.Mesg_Token_Tbl_Type;
353   l_return_status VARCHAR2(10);
354   org_id number;      --4306013
355   alt_bom_code varchar2(240);   --4306013
356   ass_item_id NUMBER;     --4306013
357   s_ass_comment varchar2(240);    --4306013
358    BEGIN
359       if (X_Component_Sequence_Id is NULL) then
360         OPEN C2;
361         FETCH C2 INTO X_Component_Sequence_Id;
362         CLOSE C2;
363       end if;
364 
365 
366   --
367   -- With the enhancement to BOM functionality for supporting various PLM
368   -- requirements, BOM/Structures can have revisions and the components
369   -- can maintain effectivity with respect to these revisions.
370   -- We therefore now stamp the component with from_bill_revision_id
371   -- and from_structure_revision_code values.
372   -- These values are crucial for the explosion of BOM to work correctly for
373   -- a particular structure revision.
374   --
375 
376   --
377   -- 1. Based on Component's Effectivity, get the Item Revision
378   -- 2. Get the max structure revsion id/code for the current bill
379   --    object_revision_id is null or object is 'EGO_ITEM' and
380   --    object_revision_id = item_revsion_id
381   -- 3. Use the values returned in 2 as the From_Bill_Rev_Id and
382   --    From_Structure_Revision_Code values for the component.
383   --
384 
385 
386 
387   BOM_GLOBALS.GET_DEF_REV_ATTRS
388   (     p_bill_sequence_id => x_bill_sequence_id
389     ,    p_comp_item_id => x_component_item_id
390     ,   p_effectivity_date => x_effectivity_date
391     ,   x_object_revision_id => l_object_revision_id
392     ,   x_minor_revision_id => l_minor_revision_id
393     ,   x_comp_revision_id => l_comp_revision_id
394     ,   x_comp_minor_revision_id => l_comp_minor_revision_id
395   );
396 
397 
398        INSERT INTO BOM_INVENTORY_COMPONENTS(
399               operation_seq_num,
400               component_item_id,
401               last_update_date,
402               last_updated_by,
403               creation_date,
404               created_by,
405               last_update_login,
406               item_num,
407               component_quantity,
408               component_yield_factor,
409               component_remarks,
410               effectivity_date,
411               change_notice,
412               implementation_date,
413               disable_date,
414               attribute_category,
415               attribute1,
416               attribute2,
417               attribute3,
418               attribute4,
419               attribute5,
420               attribute6,
421               attribute7,
422               attribute8,
423               attribute9,
424               attribute10,
425               attribute11,
426               attribute12,
427               attribute13,
428               attribute14,
429               attribute15,
430               planning_factor,
431               quantity_related,
432               so_basis,
433               optional,
434               mutually_exclusive_options,
435               include_in_cost_rollup,
436               check_atp,
437               required_to_ship,
438               required_for_revenue,
439               include_on_ship_docs,
440               include_on_bill_docs,
441               low_quantity,
442               high_quantity,
443               acd_type,
444               old_component_sequence_id,
445               component_sequence_id,
446               bill_sequence_id,
447               wip_supply_type,
448               pick_components,
449               supply_subinventory,
450               supply_locator_id,
451               operation_lead_time_percent,
452               revised_item_sequence_id,
453               cost_factor,
454               bom_item_type,
455         from_end_item_unit_number,
456         to_end_item_unit_number,
457         enforce_int_requirements,
458         auto_request_material
459         ,suggested_vendor_name
460         ,vendor_id
461         ,unit_price
462         ,FROM_OBJECT_REVISION_ID
463         ,FROM_MINOR_REVISION_ID
464         --,COMPONENT_ITEM_REVISION_ID
465         --,COMPONENT_MINOR_REVISION_ID
466           ,basis_type
467              ) VALUES (
468               X_Operation_Seq_Num,
469               X_Component_Item_Id,
470               X_Last_Update_Date,
471               X_Last_Updated_By,
472               X_Creation_Date,
473               X_Created_By,
474               X_Last_Update_Login,
475               X_Item_Num,
476               X_Component_Quantity,
477               X_Component_Yield_Factor,
478               X_Component_Remarks,
479               X_Effectivity_Date,
480               X_Change_Notice,
481               X_Implementation_Date,
482               X_Disable_Date,
483               X_Attribute_Category,
484               X_Attribute1,
485               X_Attribute2,
486               X_Attribute3,
487               X_Attribute4,
488               X_Attribute5,
489               X_Attribute6,
490               X_Attribute7,
491               X_Attribute8,
492               X_Attribute9,
493               X_Attribute10,
494               X_Attribute11,
495               X_Attribute12,
496               X_Attribute13,
497               X_Attribute14,
498               X_Attribute15,
499               X_Planning_Factor,
500               X_Quantity_Related,
501               X_So_Basis,
502               X_Optional,
503               X_Mutually_Exclusive_Options,
504               X_Include_In_Cost_Rollup,
505               X_Check_Atp,
506               X_Required_To_Ship,
507               X_Required_For_Revenue,
508               X_Include_On_Ship_Docs,
509               X_Include_On_Bill_Docs,
510               X_Low_Quantity,
511               X_High_Quantity,
512               X_Acd_Type,
513               X_Old_Component_Sequence_Id,
514               X_Component_Sequence_Id,
515               X_Bill_Sequence_Id,
516               X_Wip_Supply_Type,
517               X_Pick_Components,
518               X_Supply_Subinventory,
519               X_Supply_Locator_Id,
520               X_Operation_Lead_Time_Percent,
521               X_Revised_Item_Sequence_Id,
522               X_Cost_Factor,
523               X_Bom_Item_Type,
524               X_From_Unit_Number,
525               X_To_Unit_Number,
526         X_Enforce_Int_Requirements,
527         X_Auto_Request_Material
528         ,X_Suggested_Vendor_Name
529         ,X_Vendor_Id
530         ,X_Unit_Price
531     ,   l_object_revision_id
532     ,   l_minor_revision_id
533     --,   l_comp_revision_id
534     --,   l_comp_minor_revision_id
535           ,X_basis_type
536              );
537     --Update referencing bills
538     BOMPCMBM.Insert_Related_Components(p_src_bill_seq_id  => X_Bill_Sequence_Id
539                                     , p_src_comp_seq_id   =>  X_Component_Sequence_Id
540                                     , x_Mesg_Token_Tbl => l_err_tbl
541                                     , x_Return_Status => l_return_status);
542     IF l_return_status <> FND_API.G_RET_STS_SUCCESS
543     THEN
544       app_exception.raise_exception;
545     END IF;
546 
547     OPEN C;
548     FETCH C INTO X_Rowid;
549     if (C%NOTFOUND) then
550       CLOSE C;
551       Raise NO_DATA_FOUND;
552     end if;
553     CLOSE C;
554 
555 
556   -- Raising Business event
557 
558     SELECT bbm.Organization_Id, bbm.alternate_bom_designator, bbm.assembly_item_id, bbm.specific_assembly_comment
559       INTO org_id, alt_bom_code, ass_item_id, s_ass_comment
560     FROM Bom_Bill_Of_Materials bbm
561     WHERE bbm.Bill_Sequence_Id = X_Bill_Sequence_Id;
562 
563 
564   Bom_Business_Event_PKG.Raise_Bill_Event
565      (p_pk1_value => ass_item_id
566       , p_pk2_value          => org_id
567       , p_obj_name           => NULL
568       , p_structure_name     => alt_bom_code
569       , p_organization_id    => org_id
570       , p_structure_comment  => s_ass_comment
571       , p_Event_Load_Type => 'Single'
572       , p_Event_Entity_Name => 'Component'
573       , p_Event_Entity_Parent_Id  => X_Bill_Sequence_Id
574       , p_Event_Name => Bom_Business_Event_PKG.G_STRUCTURE_MODIFIED_EVENT
575       , p_last_update_date => X_Last_Update_Date
576       , p_last_updated_by  => X_Last_Updated_By
577       , p_creation_date    => X_Creation_Date
578       , p_created_by       => X_Created_By
579       , p_last_update_login=> X_Last_Update_Login
580       , p_component_seq_id => X_Component_Sequence_Id
581       );
582   END Insert_Row;
583 
584 END BOM_INV_COMPS1_PKG;