Example 3.6 Bills of Material with Repeated Relationships
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
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 and ) 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
0 |
|
LA01 |
Lamp LA |
. |
. |
1 |
Each |
2 |
2 |
. |
0 |
|
|
LA01 |
1 |
LA01 |
B100 |
Base assembly |
1 |
0.00 |
1 |
Each |
1 |
3 |
0 |
0 |
010 |
SA2 |
LA01 |
2 |
B100 |
1100 |
Finished shaft |
1 |
0.00 |
1 |
Each |
2 |
5 |
0 |
0 |
010 |
SA4A |
LA01 |
3 |
1100 |
2100 |
3/8 Steel tubing |
26 |
0.20 |
26 |
Inches |
3 |
8 |
0 |
0 |
|
SA9B |
LA01 |
2 |
B100 |
1200 |
6-Diameter steel plate |
1 |
0.00 |
1 |
Each |
3 |
6 |
0 |
0 |
020 |
SA4A |
LA01 |
2 |
B100 |
1400 |
1/4-20 Screw |
4 |
0.25 |
4 |
Each |
1 |
4 |
0 |
0 |
110 |
SA4A |
LA01 |
2 |
B100 |
1300 |
Hub |
1 |
0.00 |
1 |
Each |
2 |
5 |
20 |
20 |
120 |
SA4B |
LA01 |
2 |
B100 |
1400 |
1/4-20 Screw |
4 |
0.50 |
4 |
Each |
1 |
4 |
20 |
20 |
215 |
SA4B |
LA01 |
1 |
LA01 |
S100 |
Black shade |
1 |
0.00 |
1 |
Each |
2 |
4 |
0 |
0 |
015 |
SA2 |
LA01 |
1 |
LA01 |
A100 |
Socket assembly |
1 |
0.00 |
1 |
Each |
1 |
3 |
15 |
15 |
020 |
SA5 |
LA01 |
2 |
A100 |
1500 |
Steel holder |
1 |
0.00 |
1 |
Each |
2 |
5 |
0 |
15 |
100 |
SA3 |
LA01 |
3 |
1500 |
1400 |
1/4-20 Screw |
2 |
0.00 |
2 |
Each |
1 |
6 |
0 |
15 |
|
SA7 |
LA01 |
2 |
A100 |
1600 |
One-way socket |
1 |
0.00 |
1 |
Each |
2 |
5 |
0 |
15 |
110 |
SA3 |
LA01 |
2 |
A100 |
1700 |
Wiring assembly |
1 |
0.00 |
1 |
Each |
1 |
4 |
0 |
15 |
120 |
SA5 |
LA01 |
3 |
1700 |
2200 |
16-Gauge lamp cord |
12 |
0.10 |
12 |
Feet |
2 |
6 |
0 |
15 |
010 |
SA5 |
LA01 |
3 |
1700 |
2300 |
Standard plug terminal |
1 |
0.00 |
1 |
Each |
1 |
5 |
5 |
20 |
030 |
SA5 |
LA01 |
The BOM procedure can create bills 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 bills 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
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 bills 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
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 |