The BOM Procedure

Example 2.6 Bill of Material with Repeated Relationships

(View the complete code for this example.)

As briefly described in the section Product Structure Data Set, sometimes it is necessary to structure a given component into a parent item more than once because it is used at different places, at different times in the process, or in different operations. The Product Structure data set shown in Output 2.6.1 is an example of this situation. Because of the different points of use (denoted by the PointUse variable) and lead-time offsets (denoted by the LTOff variable) involved in its two relationships, item '1400' (1/4-20 Screw) cannot be structured just once into the parent item 'B100' (Base assembly). The Line variable in this data set denotes the line sequence number, which is part of the unique key in the product structure record. Although it is not necessary in the BOM procedure, some software packages will not allow two relationships with the same parent and component. However, when unique line sequence numbers are assigned, a given component can be structured into a parent item any number of times. Line sequence numbers are sometimes used to sequence components in the desired order on a bill of material, frequently in order of use. They are also used on occasion to refer to the balloon or find number on engineer drawings (Clement, Coldrick, and Sari 1992).

Output 2.6.1: Product Structure Data Set with Repeated Relationships

ABC Lamp Company
 
Product Structure Records

ParentComponentQtyPerFscrapLinePointUseLTOff
LA01B1001.010SA20
 S1001.015SA20
 A1001.020SA515
B10011001.010SA4A0
 12001.020SA4A0
 140040.25110SA4A0
 13001.120SA4B20
 140040.50215SA4B20
A10015001.100SA30
 16001.110SA30
 17001.120SA50
11002100260.20 SA9B0
150014002. SA70
17002200120.10010SA50
 23001.030SA55


The following code invokes PROC BOM with this Product Structure data set, ParComp6, and the Part Master data set, PMaster3 (shown in Output 2.3.1), to create the indented bill of material for the product 'LA01'. The Line and PointUse variables specified in the RID= option can be used to distinguish the two relationships with the same parent item 'B100' and components '1400' (observations 6 and 8) in the indented BOM data set as displayed in Output 2.6.2.

  /* Create the indented BOM */
proc bom data=ParComp6 pmdata=PMaster3 out=IndBOM6a;
   structure / part=Part
               leadtime=LeadTime
               parent=Parent
               component=Component
               quantity=QtyPer
               factor=Fscrap
               offset=LTOff
               id=(Desc Unit)
               rid=(Line PointUse)
               enditem=("LA01");
run;

Output 2.6.2: Indented Bill of Material with Repeated Relationships

ABC Lamp Company
 
Indented Bill of Material, Part LA01

Obs_Level__Parent__Part_DescQtyPerFscrapQty_ProdUnitLeadTimeTot_LeadLTOffTot_OffLinePointUse_Prod_
10 LA01Lamp LA..1Each22.0  LA01
21LA01B100Base assembly10.001Each1300010SA2LA01
32B1001100Finished shaft10.001Each2500010SA4ALA01
43110021003/8 Steel tubing260.2026Inches3800 SA9BLA01
52B10012006-Diameter steel plate10.001Each3600020SA4ALA01
62B10014001/4-20 Screw40.254Each1400110SA4ALA01
72B1001300Hub10.001Each252020120SA4BLA01
82B10014001/4-20 Screw40.504Each142020215SA4BLA01
91LA01S100Black shade10.001Each2400015SA2LA01
101LA01A100Socket assembly10.001Each131515020SA5LA01
112A1001500Steel holder10.001Each25015100SA3LA01
123150014001/4-20 Screw20.002Each16015 SA7LA01
132A1001600One-way socket10.001Each25015110SA3LA01
142A1001700Wiring assembly10.001Each14015120SA5LA01
1531700220016-Gauge lamp cord120.1012Feet26015010SA5LA01
16317002300Standard plug terminal10.001Each15520030SA5LA01


The BOM procedure can create bill of material with two or more identical relationships in a given parent item, if necessary. The specification of the keyword KEEP for the DUPLICATE= option tells PROC BOM to sequence components in the same order as they are listed in the Product Structure data set while constructing the indented bill of material. The following SAS code invokes PROC BOM to create a bill of material with identical relationships, displayed in Output 2.6.3. Note that the RID= option is not specified in this invocation of PROC BOM: the two relationships with the same parent item 'B100' and component '1400' are identical.

/* Create the indented BOM */
proc bom data=ParComp6 pmdata=PMaster3 out=IndBOM6b
      duplicate=KEEP;
structure / part=Part
            leadtime=LeadTime
            parent=Parent
            component=Component
            quantity=QtyPer
            factor=Fscrap
            id=(Desc Unit)
            enditem=("LA01");
run;

Output 2.6.3: Indented Bill of Material with Identical Relationships

ABC Lamp Company
 
Indented Bill of Material, Part LA01

_Level__Parent__Part_DescQtyPerFscrapQty_ProdUnitLeadTimeTot_Lead_Prod_
0 LA01Lamp LA..1Each22LA01
1LA01B100Base assembly10.001Each13LA01
2B1001100Finished shaft10.001Each25LA01
3110021003/8 Steel tubing260.2026Inches38LA01
2B10012006-Diameter steel plate10.001Each36LA01
2B10014001/4-20 Screw40.254Each14LA01
2B1001300Hub10.001Each25LA01
2B10014001/4-20 Screw40.504Each14LA01
1LA01S100Black shade10.001Each24LA01
1LA01A100Socket assembly10.001Each13LA01
2A1001500Steel holder10.001Each25LA01
3150014001/4-20 Screw20.002Each16LA01
2A1001600One-way socket10.001Each25LA01
2A1001700Wiring assembly10.001Each14LA01
31700220016-Gauge lamp cord120.1012Feet26LA01
317002300Standard plug terminal10.001Each15LA01


On other occasions, you may want the bill of material to show the total quantity of each component used by a given parent item without any reference to the order, time, or place of use. To do this, you can specify the keyword COMBINE for the DUPLICATE= option. This is the default behavior of the DUPLICATE= option. The SAS code to accomplish this is as follows:

/* Create the indented BOM */
proc bom data=ParComp6 pmdata=PMaster3 out=IndBOM6c
      duplicate=COMBINE;
structure / part=Part
            leadtime=LeadTime
            parent=Parent
            component=Component
            quantity=QtyPer
            factor=Fscrap
            id=(Desc Unit)
            enditem=("LA01");
run;

The indented bill of material is displayed in Output 2.6.4. Note that the two identical relationships of the parent 'B100' and the component '1400' are collapsed into one relationship. See the section Product Structure Data Set for details about combining identical parent-component relationships.

Output 2.6.4: Indented Bill of Material with Identical Relationships Collapsed

ABC Lamp Company
 
Indented Bill of Material, Part LA01

_Level__Parent__Part_DescQtyPerFscrapQty_ProdUnitLeadTimeTot_Lead_Prod_
0 LA01Lamp LA..1Each22LA01
1LA01B100Base assembly10.0001Each13LA01
2B1001100Finished shaft10.0001Each25LA01
3110021003/8 Steel tubing260.20026Inches38LA01
2B10012006-Diameter steel plate10.0001Each36LA01
2B10014001/4-20 Screw80.3758Each14LA01
2B1001300Hub10.0001Each25LA01
1LA01S100Black shade10.0001Each24LA01
1LA01A100Socket assembly10.0001Each13LA01
2A1001500Steel holder10.0001Each25LA01
3150014001/4-20 Screw20.0002Each16LA01
2A1001600One-way socket10.0001Each25LA01
2A1001700Wiring assembly10.0001Each14LA01
31700220016-Gauge lamp cord120.10012Feet26LA01
317002300Standard plug terminal10.0001Each15LA01


Last updated: August 24, 2020