The BOM Procedure

Example 3.7 Bill of Material Verification

(View the complete code for this example.)

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_CodeReqOn_HandNet_ReqLeadTimeDescUnit
110021012Finished shaftEach
1200310136-Diameter steel plateEach
130021012HubEach
1400360611/4-20 ScrewEach
150021012Steel holderEach
160031012One-way socketEach
170021011Wiring assemblyEach
210032602633/8 Steel tubingInches
2200312012216-Gauge lamp cordFeet
230031011Standard plug terminalEach
400011010Common partsEach
A10021011Socket assemblyEach
A10X11010Socket assembly optionsEach
B10021011Base assemblyEach
B10X11010Base assembly optionsEach
LAXX01013Lamp LAEach
S10021012Black shadeEach
S10X11010Shade optionsEach


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_ReqDescUnit
11001Finished shaftEach
120016-Diameter steel plateEach
13001HubEach
140061/4-20 ScrewEach
15001Steel holderEach
16001One-way socketEach
17001Wiring assemblyEach
2100263/8 Steel tubingInches
22001216-Gauge lamp cordFeet
23001Standard plug terminalEach
40001Common partsEach
A1001Socket assemblyEach
B1001Base assemblyEach
S1001Black shadeEach


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.

Last updated: August 11, 2020