Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
The BOM Procedure

Example 1.2: Planning Bill of Material

The previous examples dealt with the bill of material from the perspective of the manufacturing process. In this example, let's turn to another type of BOM that is often useful in planning and handling engineering charges. It is referred to as a planning BOM, a pseudo BOM, super BOM, or a phantom BOM. Let's assume that the ABC Lamp Company sells lamps with 8 different shades (either 14 inches or 15 inches, in the color black, white, cream, or yellow), 3 alternate base plates (6 inches, 7 inches, or 8 inches), and 2 types of sockets (`One-way' and `Three-way'). Working with all different options, the company now has 48 (= 8 ×3 ×2) different final products. In other words, the ABC Lamp Company has 48 different end items to forecast and plan. This might not sound too complicated; however, this example is only a simplified case. In the real world, some manufacturing companies making automobiles, computers, or machine tools can easily make over 5,000 different final products. So many final products are obviously impossible to forecast accurately and plan with any hope of validity. However, a reasonable forecast for total lamp sales could be made, for example, 10,000 per week. Some parts like the `1100 Finished shaft' are common to all configurations. Although these parts are produced independently of one another, they can be grouped as common parts on the BOM for administrative purposes. The new part that is created to group all common parts is never stocked and hence it is called a phantom part. Phantom items are generally assigned 0 lead times and lot-for-lot order quantity. Besides the common parts phantom item, other phantom items are created for planning different options. These items are also referred to as model items. This process is known as the modularized bill of material construction. The following SAS code creates three data sets: The Phantom2 data set contains the generic part `LAXX' and all phantom items. The data set Option2 lists all options of each model item that are not already in the part master data set PMaster1 (described in Example 1.1). Finally, the ParComp2 data set contains the re-grouped part-component relationship information:

      /* Generic and phantom part data */
   data Phantom2;
      input Part      $8.
            Desc      $24.
            Req       8.0
            Unit      $8.
            LeadTime  4.0
            ;
   datalines;
   LAXX    Lamp LA                    10000 Each      3
   4000    Common parts                   . Each      0
   A10X    Socket assembly options        . Each      0
   B10X    Base assembly options          . Each      0
   S10X    Shade options                  . Each      0
   ;

     /* Additional options and alternative parts */
   data Option2;
      input Part      $8.
            Desc      $24.
            Req       8.0
            Unit      $8.
            LeadTime  4.0
            ;
   datalines;
   A101    Three-way socket assem.        . Each      1
   B101    7in Base assembly              . Each      1
   B102    8in Base assembly              . Each      1
   S101    14in White shade               . Each      2
   S102    14in Cream shade               . Each      2
   S103    14in Yellow shade              . Each      2
   S104    15in Black shade               . Each      2
   S105    15in White shade               . Each      2
   S106    15in Cream shade               . Each      2
   S107    15in Yellow shade              . Each      2
   1201    7-Diameter steel plate         . Each      3
   1202    8-Diameter steel plate         . Each      3
   1601    Three-way socket               . Each      2
   ;

     /* part-component relationship data */
   data ParComp2;
      input Part      $8.
            Component $8.
            QtyPer    8.2
            ;
   datalines;
   LAXX    4000        1.00 
   LAXX    B10X        1.00
   LAXX    S10X        1.00
   LAXX    A10X        1.00
   4000    1100        1.00
   4000    1300        1.00
   4000    1400        4.00
   4000    1500        1.00
   4000    1700        1.00
   B10X    B100        0.32
   B10X    B101        0.41
   B10X    B102        0.33
   S10X    S100        0.07
   S10X    S101        0.18
   S10X    S102        0.24
   S10X    S103        0.10
   S10X    S104        0.06
   S10X    S105        0.14
   S10X    S106        0.22
   S10X    S107        0.10
   A10X    A100        0.11
   A10X    A101        0.92
   B100    1200        1.00
   B101    1201        1.00
   B102    1202        1.00
   A100    1600        1.00
   A101    1601        1.00
   1100    2100       26.00
   1500    1400        2.00
   1700    2200       12.00
   1700    2300        1.00
   ;

The part identified as `4000' is the phantom item for common parts `1100', `1300', `1400', `1500', and `1700'. Each available option is structured as a model item with a quantity per parent (identified as the QtyPer variable) that represents its forecast popularity or option percentage. Note that the total percentage of each option in this example is more than 100 percent (for example, the total percentage of the `A10X: Socket assembly options' is 0.11 + 0.92 = 1.03). This extra percentage is used to cover the uncertainty of the exact percentage split. Using this procedure to cover possible high side demand for each option is called option overplanning (Fogarty, Blackstone, and Hoffmann 1991). The new part master data set PMaster2 combines the generic and phantom part data, the additional options data, and the old part master file shown in Output 1.1.1. The modularized single-level BOM data set, SlBOM2, combines the data set PMaster2 with the part-component data set ParComp2 by using PROC SQL. The SAS code to accomplish this is as follows:

     /* Append the old part master data to the new   */
     /* phantom item and additional option data sets */
   data PMaster2;
      set Phantom2 
          Option2 
          PMaster1(where=(Part NE 'LA01'));
   run;

   proc sort data=PMaster2;
      by Part;
   run;

   proc sort data=ParComp2;
      by Part;
   run;

     /* Merge the Part-Component information to the new */
     /* part master data to create an input data set    */
   proc sql;
      create table SlBOM2 as
         select PMaster2.*,
                    ParComp2.Component, ParComp2.QtyPer
            from PMaster2 left join ParComp2
               on PMaster2.Part=ParComp2.Part;
   quit;

Output 1.2.1: Modularized Single-Level Bills of Material
 
ABC Lamp Company
Modularized Single-Level Bills of Material

Part Desc Req Unit LeadTime Component QtyPer
1100 Finished shaft . Each 2 2100 26.00
1200 6-Diameter steel plate . Each 3   .
1201 7-Diameter steel plate . Each 3   .
1202 8-Diameter steel plate . Each 3   .
1300 Hub . Each 2   .
1400 1/4-20 Screw . Each 1   .
1500 Steel holder . Each 2 1400 2.00
1600 One-way socket . Each 2   .
1601 Three-way socket . Each 2   .
1700 Wiring assembly . Each 1 2200 12.00
1700 Wiring assembly . Each 1 2300 1.00
2100 3/8 Steel tubing . Inches 3   .
2200 16-Gauge lamp cord . Feet 2   .
2300 Standard plug terminal . Each 1   .
4000 Common parts . Each 0 1100 1.00
4000 Common parts . Each 0 1300 1.00
4000 Common parts . Each 0 1400 4.00
4000 Common parts . Each 0 1500 1.00
4000 Common parts . Each 0 1700 1.00
A100 Socket assembly . Each 1 1600 1.00
A101 Three-way socket assem. . Each 1 1601 1.00
A10X Socket assembly options . Each 0 A100 0.11
A10X Socket assembly options . Each 0 A101 0.92
B100 Base assembly . Each 1 1200 1.00
B101 7in Base assembly . Each 1 1201 1.00
B102 8in Base assembly . Each 1 1202 1.00
B10X Base assembly options . Each 0 B100 0.32
B10X Base assembly options . Each 0 B101 0.41
B10X Base assembly options . Each 0 B102 0.33
LAXX Lamp LA 10000 Each 3 4000 1.00
LAXX Lamp LA 10000 Each 3 B10X 1.00
LAXX Lamp LA 10000 Each 3 S10X 1.00
LAXX Lamp LA 10000 Each 3 A10X 1.00
S100 Black shade . Each 2   .
S101 14in White shade . Each 2   .
S102 14in Cream shade . Each 2   .
S103 14in Yellow shade . Each 2   .
S104 15in Black shade . Each 2   .
S105 15in White shade . Each 2   .
S106 15in Cream shade . Each 2   .
S107 15in Yellow shade . Each 2   .
S10X Shade options . Each 0 S100 0.07
S10X Shade options . Each 0 S101 0.18
S10X Shade options . Each 0 S102 0.24
S10X Shade options . Each 0 S103 0.10
S10X Shade options . Each 0 S104 0.06
S10X Shade options . Each 0 S105 0.14
S10X Shade options . Each 0 S106 0.22
S10X Shade options . Each 0 S107 0.10

The following SAS code sorts and displays the modularized single-level BOM data set as shown in Output 1.2.1:

   proc sort data=SlBOM2;
      by Part;
   run;

     /* Display the single-level BOM data */
   proc print data=SlBOM2 noobs;
      title 'ABC Lamp Company';
      title3 'Modularized Single-Level Bills of Material';
   run;

The following code invokes PROC BOM to generate the planning BOM and the summarized BOM from the modularized single-level BOM:

     /* Generate the indented BOM and summarized BOM data sets */
   proc bom data=SlBOM2 out=IndBOM2 summaryout=SumBOM2; 
      structure / part=Part 
                  requirement=Req
                  leadtime=LeadTime 
                  component=Component
                  quantity=QtyPer
                  id=(Desc Unit); 
   run;

      /* Display the indented BOM data */
   proc print data=IndBOM2 noobs;
      var _Level_ _Part_ Desc QtyPer Qty_Prod 
          Unit LeadTime Tot_Lead _Parent_ _Prod_;
      title 'ABC Lamp Company';
      title3 'Indented Bill of Material, Part LAXX';
   run;

   proc sort data=SumBOM2;
      by _Part_;
   run;

     /* Display the summarized BOM data */
   proc print data=SumBOM2 noobs; 
      title 'ABC Lamp Company';
      title3 'Summarized Bill of Material, Part LAXX';
   run;

The indented bill of material is shown in Output 1.2.2. Output 1.2.3 lists the quantity of each part that is needed to build 10,000 lamps.

Output 1.2.2: Planning Bill of Material with Option Overplanning
 
ABC Lamp Company
Indented Bill of Material, Part LAXX

_Level_ _Part_ Desc QtyPer Qty_Prod Unit LeadTime Tot_Lead _Parent_ _Prod_
0 LAXX Lamp LA . 1.00 Each 3 3   LAXX
1 A10X Socket assembly options 1.00 1.00 Each 0 3 LAXX LAXX
2 A101 Three-way socket assem. 0.92 0.92 Each 1 4 A10X LAXX
3 1601 Three-way socket 1.00 0.92 Each 2 6 A101 LAXX
2 A100 Socket assembly 0.11 0.11 Each 1 4 A10X LAXX
3 1600 One-way socket 1.00 0.11 Each 2 6 A100 LAXX
1 S10X Shade options 1.00 1.00 Each 0 3 LAXX LAXX
2 S107 15in Yellow shade 0.10 0.10 Each 2 5 S10X LAXX
2 S106 15in Cream shade 0.22 0.22 Each 2 5 S10X LAXX
2 S105 15in White shade 0.14 0.14 Each 2 5 S10X LAXX
2 S104 15in Black shade 0.06 0.06 Each 2 5 S10X LAXX
2 S103 14in Yellow shade 0.10 0.10 Each 2 5 S10X LAXX
2 S102 14in Cream shade 0.24 0.24 Each 2 5 S10X LAXX
2 S101 14in White shade 0.18 0.18 Each 2 5 S10X LAXX
2 S100 Black shade 0.07 0.07 Each 2 5 S10X LAXX
1 B10X Base assembly options 1.00 1.00 Each 0 3 LAXX LAXX
2 B102 8in Base assembly 0.33 0.33 Each 1 4 B10X LAXX
3 1202 8-Diameter steel plate 1.00 0.33 Each 3 7 B102 LAXX
2 B101 7in Base assembly 0.41 0.41 Each 1 4 B10X LAXX
3 1201 7-Diameter steel plate 1.00 0.41 Each 3 7 B101 LAXX
2 B100 Base assembly 0.32 0.32 Each 1 4 B10X LAXX
3 1200 6-Diameter steel plate 1.00 0.32 Each 3 7 B100 LAXX
1 4000 Common parts 1.00 1.00 Each 0 3 LAXX LAXX
2 1700 Wiring assembly 1.00 1.00 Each 1 4 4000 LAXX
3 2300 Standard plug terminal 1.00 1.00 Each 1 5 1700 LAXX
3 2200 16-Gauge lamp cord 12.00 12.00 Feet 2 6 1700 LAXX
2 1500 Steel holder 1.00 1.00 Each 2 5 4000 LAXX
3 1400 1/4-20 Screw 2.00 2.00 Each 1 6 1500 LAXX
2 1400 1/4-20 Screw 4.00 4.00 Each 1 4 4000 LAXX
2 1300 Hub 1.00 1.00 Each 2 5 4000 LAXX
2 1100 Finished shaft 1.00 1.00 Each 2 5 4000 LAXX
3 2100 3/8 Steel tubing 26.00 26.00 Inches 3 8 1100 LAXX

Output 1.2.3: Summarized Part Requirement
 
ABC Lamp Company
Summarized Bill of Material, Part LAXX

_Part_ Low_Code Req On_Hand Net_Req Desc Unit
1100 2 10000 0 10000 Finished shaft Each
1200 3 3200 0 3200 6-Diameter steel plate Each
1201 3 4100 0 4100 7-Diameter steel plate Each
1202 3 3300 0 3300 8-Diameter steel plate Each
1300 2 10000 0 10000 Hub Each
1400 3 60000 0 60000 1/4-20 Screw Each
1500 2 10000 0 10000 Steel holder Each
1600 3 1100 0 1100 One-way socket Each
1601 3 9200 0 9200 Three-way socket Each
1700 2 10000 0 10000 Wiring assembly Each
2100 3 260000 0 260000 3/8 Steel tubing Inches
2200 3 120000 0 120000 16-Gauge lamp cord Feet
2300 3 10000 0 10000 Standard plug terminal Each
4000 1 10000 0 10000 Common parts Each
A100 2 1100 0 1100 Socket assembly Each
A101 2 9200 0 9200 Three-way socket assem. Each
A10X 1 10000 0 10000 Socket assembly options Each
B100 2 3200 0 3200 Base assembly Each
B101 2 4100 0 4100 7in Base assembly Each
B102 2 3300 0 3300 8in Base assembly Each
B10X 1 10000 0 10000 Base assembly options Each
LAXX 0 10000 0 10000 Lamp LA Each
S100 2 700 0 700 Black shade Each
S101 2 1800 0 1800 14in White shade Each
S102 2 2400 0 2400 14in Cream shade Each
S103 2 1000 0 1000 14in Yellow shade Each
S104 2 600 0 600 15in Black shade Each
S105 2 1400 0 1400 15in White shade Each
S106 2 2200 0 2200 15in Cream shade Each
S107 2 1000 0 1000 15in Yellow shade Each
S10X 1 10000 0 10000 Shade options Each

Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
Top
Top

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.