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 3.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 3.6.1: Product Structure Data Set with Repeated Relationships
ABC Lamp Company |
Product Structure Records |
Parent | Component | QtyPer | Fscrap | Line | PointUse | LTOff |
---|---|---|---|---|---|---|
LA01 | B100 | 1 | . | 010 | SA2 | 0 |
S100 | 1 | . | 015 | SA2 | 0 | |
A100 | 1 | . | 020 | SA5 | 15 | |
B100 | 1100 | 1 | . | 010 | SA4A | 0 |
1200 | 1 | . | 020 | SA4A | 0 | |
1400 | 4 | 0.25 | 110 | SA4A | 0 | |
1300 | 1 | . | 120 | SA4B | 20 | |
1400 | 4 | 0.50 | 215 | SA4B | 20 | |
A100 | 1500 | 1 | . | 100 | SA3 | 0 |
1600 | 1 | . | 110 | SA3 | 0 | |
1700 | 1 | . | 120 | SA5 | 0 | |
1100 | 2100 | 26 | 0.20 | SA9B | 0 | |
1500 | 1400 | 2 | . | SA7 | 0 | |
1700 | 2200 | 12 | 0.10 | 010 | SA5 | 0 |
2300 | 1 | . | 030 | SA5 | 5 |
The following code invokes PROC BOM with this Product Structure data set, ParComp6
, and the Part Master data set, PMaster3
(shown in Output 3.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 3.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 3.6.2: Indented Bill of Material with Repeated Relationships
ABC Lamp Company |
Indented Bill of Material, Part LA01 |
Obs | _Level_ | _Parent_ | _Part_ | Desc | QtyPer | Fscrap | Qty_Prod | Unit | LeadTime | Tot_Lead | LTOff | Tot_Off | Line | PointUse | _Prod_ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | LA01 | Lamp LA | . | . | 1 | Each | 2 | 2 | . | 0 | LA01 | |||
2 | 1 | LA01 | B100 | Base assembly | 1 | 0.00 | 1 | Each | 1 | 3 | 0 | 0 | 010 | SA2 | LA01 |
3 | 2 | B100 | 1100 | Finished shaft | 1 | 0.00 | 1 | Each | 2 | 5 | 0 | 0 | 010 | SA4A | LA01 |
4 | 3 | 1100 | 2100 | 3/8 Steel tubing | 26 | 0.20 | 26 | Inches | 3 | 8 | 0 | 0 | SA9B | LA01 | |
5 | 2 | B100 | 1200 | 6-Diameter steel plate | 1 | 0.00 | 1 | Each | 3 | 6 | 0 | 0 | 020 | SA4A | LA01 |
6 | 2 | B100 | 1400 | 1/4-20 Screw | 4 | 0.25 | 4 | Each | 1 | 4 | 0 | 0 | 110 | SA4A | LA01 |
7 | 2 | B100 | 1300 | Hub | 1 | 0.00 | 1 | Each | 2 | 5 | 20 | 20 | 120 | SA4B | LA01 |
8 | 2 | B100 | 1400 | 1/4-20 Screw | 4 | 0.50 | 4 | Each | 1 | 4 | 20 | 20 | 215 | SA4B | LA01 |
9 | 1 | LA01 | S100 | Black shade | 1 | 0.00 | 1 | Each | 2 | 4 | 0 | 0 | 015 | SA2 | LA01 |
10 | 1 | LA01 | A100 | Socket assembly | 1 | 0.00 | 1 | Each | 1 | 3 | 15 | 15 | 020 | SA5 | LA01 |
11 | 2 | A100 | 1500 | Steel holder | 1 | 0.00 | 1 | Each | 2 | 5 | 0 | 15 | 100 | SA3 | LA01 |
12 | 3 | 1500 | 1400 | 1/4-20 Screw | 2 | 0.00 | 2 | Each | 1 | 6 | 0 | 15 | SA7 | LA01 | |
13 | 2 | A100 | 1600 | One-way socket | 1 | 0.00 | 1 | Each | 2 | 5 | 0 | 15 | 110 | SA3 | LA01 |
14 | 2 | A100 | 1700 | Wiring assembly | 1 | 0.00 | 1 | Each | 1 | 4 | 0 | 15 | 120 | SA5 | LA01 |
15 | 3 | 1700 | 2200 | 16-Gauge lamp cord | 12 | 0.10 | 12 | Feet | 2 | 6 | 0 | 15 | 010 | SA5 | LA01 |
16 | 3 | 1700 | 2300 | Standard plug terminal | 1 | 0.00 | 1 | Each | 1 | 5 | 5 | 20 | 030 | SA5 | LA01 |
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 3.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 3.6.3: Indented Bill of Material with Identical Relationships
ABC Lamp Company |
Indented Bill of Material, Part LA01 |
_Level_ | _Parent_ | _Part_ | Desc | QtyPer | Fscrap | Qty_Prod | Unit | LeadTime | Tot_Lead | _Prod_ |
---|---|---|---|---|---|---|---|---|---|---|
0 | LA01 | Lamp LA | . | . | 1 | Each | 2 | 2 | LA01 | |
1 | LA01 | B100 | Base assembly | 1 | 0.00 | 1 | Each | 1 | 3 | LA01 |
2 | B100 | 1100 | Finished shaft | 1 | 0.00 | 1 | Each | 2 | 5 | LA01 |
3 | 1100 | 2100 | 3/8 Steel tubing | 26 | 0.20 | 26 | Inches | 3 | 8 | LA01 |
2 | B100 | 1200 | 6-Diameter steel plate | 1 | 0.00 | 1 | Each | 3 | 6 | LA01 |
2 | B100 | 1400 | 1/4-20 Screw | 4 | 0.25 | 4 | Each | 1 | 4 | LA01 |
2 | B100 | 1300 | Hub | 1 | 0.00 | 1 | Each | 2 | 5 | LA01 |
2 | B100 | 1400 | 1/4-20 Screw | 4 | 0.50 | 4 | Each | 1 | 4 | LA01 |
1 | LA01 | S100 | Black shade | 1 | 0.00 | 1 | Each | 2 | 4 | LA01 |
1 | LA01 | A100 | Socket assembly | 1 | 0.00 | 1 | Each | 1 | 3 | LA01 |
2 | A100 | 1500 | Steel holder | 1 | 0.00 | 1 | Each | 2 | 5 | LA01 |
3 | 1500 | 1400 | 1/4-20 Screw | 2 | 0.00 | 2 | Each | 1 | 6 | LA01 |
2 | A100 | 1600 | One-way socket | 1 | 0.00 | 1 | Each | 2 | 5 | LA01 |
2 | A100 | 1700 | Wiring assembly | 1 | 0.00 | 1 | Each | 1 | 4 | LA01 |
3 | 1700 | 2200 | 16-Gauge lamp cord | 12 | 0.10 | 12 | Feet | 2 | 6 | LA01 |
3 | 1700 | 2300 | Standard plug terminal | 1 | 0.00 | 1 | Each | 1 | 5 | LA01 |
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 3.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 3.6.4: Indented Bill of Material with Identical Relationships Collapsed
ABC Lamp Company |
Indented Bill of Material, Part LA01 |
_Level_ | _Parent_ | _Part_ | Desc | QtyPer | Fscrap | Qty_Prod | Unit | LeadTime | Tot_Lead | _Prod_ |
---|---|---|---|---|---|---|---|---|---|---|
0 | LA01 | Lamp LA | . | . | 1 | Each | 2 | 2 | LA01 | |
1 | LA01 | B100 | Base assembly | 1 | 0.000 | 1 | Each | 1 | 3 | LA01 |
2 | B100 | 1100 | Finished shaft | 1 | 0.000 | 1 | Each | 2 | 5 | LA01 |
3 | 1100 | 2100 | 3/8 Steel tubing | 26 | 0.200 | 26 | Inches | 3 | 8 | LA01 |
2 | B100 | 1200 | 6-Diameter steel plate | 1 | 0.000 | 1 | Each | 3 | 6 | LA01 |
2 | B100 | 1400 | 1/4-20 Screw | 8 | 0.375 | 8 | Each | 1 | 4 | LA01 |
2 | B100 | 1300 | Hub | 1 | 0.000 | 1 | Each | 2 | 5 | LA01 |
1 | LA01 | S100 | Black shade | 1 | 0.000 | 1 | Each | 2 | 4 | LA01 |
1 | LA01 | A100 | Socket assembly | 1 | 0.000 | 1 | Each | 1 | 3 | LA01 |
2 | A100 | 1500 | Steel holder | 1 | 0.000 | 1 | Each | 2 | 5 | LA01 |
3 | 1500 | 1400 | 1/4-20 Screw | 2 | 0.000 | 2 | Each | 1 | 6 | LA01 |
2 | A100 | 1600 | One-way socket | 1 | 0.000 | 1 | Each | 2 | 5 | LA01 |
2 | A100 | 1700 | Wiring assembly | 1 | 0.000 | 1 | Each | 1 | 4 | LA01 |
3 | 1700 | 2200 | 16-Gauge lamp cord | 12 | 0.100 | 12 | Feet | 2 | 6 | LA01 |
3 | 1700 | 2300 | Standard plug terminal | 1 | 0.000 | 1 | Each | 1 | 5 | LA01 |