Example 3.7 Bill of Material Verification

The previous examples illustrated how companies may have more than one type of bill of material. It is important that while the different types of BOM may differ in the way items are grouped together, they must use the same components (except the phantom items) in the same quantities, or require the same amount of materials in order to fill the same production plan. This example demonstrates some simple methods that compare the different types of BOM and detect any differences.

One way to compare two bill of material is to compare their summarized parts lists for the same production plan. The following SAS code creates a transactional data set, Trans7, which contains the new values of the gross requirements for the lamp 'LAXX' and all base assembly, shade, or socket assembly options that are described in Example 3.4. The gross requirements for the lamp 'LAXX' and options 'B100', 'S100', and 'A100' that are associated with the lamp 'LA01' are 1. All other options have 0 gross requirement. Therefore, the item 'LAXX' and all of the options listed in the data set Trans7 are master schedule items. See the section Part Master Data Set for a detailed description about master schedule items.

/* Gross requirement transactional data set */
data Trans7;
format Part $8. Req 8.0 ;
input Part $ Req ;
datalines;
LAXX           1
B100           1
B101           0
B102           0
S100           1
S101           0
S102           0
S103           0
S104           0
S105           0
S106           0
S107           0
A100           1
A101           0
;

The following SAS DATA step code updates the value of the Req variable in the PMaster4 data set (described in Example 3.4) with the value of the variable in the transactional data set Trans7.

proc sort data=Trans7;
   by Part;
run;
/* Update the gross requirement values of the */
/* Product Structure data set                 */
data PMaster7(drop=OldReq);
merge PMaster4(rename=(Req=OldReq)) Trans7(in=in2);
by Part;

if not in2 then Req=OldReq;
run;

The following code invokes PROC BOM with the new Part Master data set PMaster7 and the Product Structure data set ParComp4 (described in Example 3.4). The summarized parts list is shown in Output 3.7.1.

   /* Generate the indented BOM and summarized parts list */
proc bom data=ParComp4 pmdata=PMaster7 
         out=IndBOM7 summaryout=SumBOM7; 
   structure / part=Part 
               requirement=Req
               leadtime=LeadTime 
               parent=Parent  
               component=Component
               quantity=QtyPer
               id=(Desc Unit); 
run;

Output 3.7.1 Summarized Parts List (SumBOM7)
ABC Lamp Company
 
Summarized Parts List, Period 1

_Part_ Low_Code Req On_Hand Net_Req LeadTime Desc Unit
1100 2 1 0 1 2 Finished shaft Each
1200 3 1 0 1 3 6-Diameter steel plate Each
1300 2 1 0 1 2 Hub Each
1400 3 6 0 6 1 1/4-20 Screw Each
1500 2 1 0 1 2 Steel holder Each
1600 3 1 0 1 2 One-way socket Each
1700 2 1 0 1 1 Wiring assembly Each
2100 3 26 0 26 3 3/8 Steel tubing Inches
2200 3 12 0 12 2 16-Gauge lamp cord Feet
2300 3 1 0 1 1 Standard plug terminal Each
4000 1 1 0 1 0 Common parts Each
A100 2 1 0 1 1 Socket assembly Each
A10X 1 1 0 1 0 Socket assembly options Each
B100 2 1 0 1 1 Base assembly Each
B10X 1 1 0 1 0 Base assembly options Each
LAXX 0 1 0 1 3 Lamp LA Each
S100 2 1 0 1 2 Black shade Each
S10X 1 1 0 1 0 Shade options Each

The summarized parts list in Output 3.7.1 and the one in Output 3.1.3 are in agreement in the values of gross and net requirements, except for those phantom items, such as '4000 Common parts', 'A10X Socket assembly options', 'B10X Base assembly options', and 'S10X Shade options', which are not listed in Output 3.1.3.

Another way to compare two bill of material is to compare their summarized bill of material. Recall that, as discussed in Example 3.1, the summarized parts list as displayed in Output 3.1.3 is also the summarized bill of material for the item 'LA01'. You can also use the %BOMRSUB SAS macro described in Chapter 4, Bill of Material Postprocessing Macros, or the SAS DATA step to create the summarized bill of material from an indented bill of material. See Example 3.9 for an example of using a SAS DATA step to create a summarized bill of material from the Indented BOM data set.

The following SAS code uses the %BOMRSUB macro to create a summarized bill of material for the item 'LA01' from the Indented BOM data set shown in Output 3.5.2. The ""qtyreq=Gros_Req specification indicates that the total requirement for the item identified by the _Part_ variable should be stored in the Gros_Req variable.

/* Create the summarized bill of material */  
%bomrsub(root='LA01', in=BomOut5, quantity=QtyPer, 
qtyreq=Gros_Req, out=BomOut7);

Output 3.7.2 Summarized Bill of Material (BomOut7)
ABC Lamp Company
 
Summarized Bill of Material, Part LA01

_Part_ Gros_Req Desc Unit
1100 1 Finished shaft Each
1200 1 6-Diameter steel plate Each
1300 1 Hub Each
1400 6 1/4-20 Screw Each
1500 1 Steel holder Each
1600 1 One-way socket Each
1700 1 Wiring assembly Each
2100 26 3/8 Steel tubing Inches
2200 12 16-Gauge lamp cord Feet
2300 1 Standard plug terminal Each
4000 1 Common parts Each
A100 1 Socket assembly Each
B100 1 Base assembly Each
S100 1 Black shade Each

Again, the summarized bill of material, shown in Output 3.7.2, agrees with the summarized bill of material displayed in Output 3.1.3 in the values of gross requirements, except for the phantom items '4000 Common parts'. Note also that the gross requirement of the finished good 'LA01' is not listed in Output 3.7.2.