The BOM Procedure

Example 2.5 Modular Bill of Material

(View the complete code for this example.)

The previous example illustrated how the bill of material can be arranged in product modules or options in order to obtain better forecasting, master production scheduling, and planning. There are also a number of other reasons for using modular bill of material. One reason is that the task of maintaining modularized bill of material is much simpler. The only bill of material that have to be maintained are the modules; there is no need to maintain enormous numbers of unique product configurations (Landvater and Gray 1989). You can easily construct a bill of material for a particular product configuration from the modular bill of material, if necessary. This example shows how to build modular bill of material for the 48 product configurations as described in Example 2.4. It also demonstrates how to construct a final-product-oriented bill of material from the modularized bill of material.

The ParComp5 data set contains the new product structure information. In this data set, the phantom items 'A10X', 'B10X', and 'S10X' are used as place holders for product modules: 'A100', 'A101', 'B100', …, 'S107'. The following code first creates the new Product Structure data set, ParComp5. It then invokes PROC BOM with the Part Master data set, PMaster4 (described in Example 2.4), and the new Product Structure data set, ParComp5, to construct modular bill of material for the production line of the company. It also displays the modularized indented bill of material.

/* Product Structure data */
data ParComp5;
   format Parent $8. Component $8. QtyPer 8.2 ;
   input Parent $ Component $ QtyPer;
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
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
;
/* Generate the indented BOM data set */
proc bom data=ParComp5 pmdata=PMaster4 out=IndBOM5;
   structure / part=Part
               leadtime=LeadTime
               parent=Parent
               component=Component
               quantity=QtyPer
               id=(Desc Unit);
run;

The Indented BOM data set, IndBOM5, is shown in Output 2.5.1. This output data set contains a pseudo bill of material for the pseudo end item 'LAXX' and 13 modules (modular bill of material) for items 'A100', 'A101', 'B100', 'B101', 'B102', and 'S100' …, 'S107', respectively.

Output 2.5.1: Modularized Indented Bill of Material (IndBOM5)

ABC Lamp Company
 
Indented Bill of Material

_Level__Parent__Part_DescQtyPerQty_ProdUnitLeadTimeTot_Lead_Prod_
0 A100Socket assembly.1.00Each11A100
1A1001600One-way socket1.001.00Each23A100
0 A101Three-way socket assem..1.00Each11A101
1A1011601Three-way socket1.001.00Each23A101
0 B100Base assembly.1.00Each11B100
1B10012006-Diameter steel plate1.001.00Each34B100
0 B1017in Base assembly.1.00Each11B101
1B10112017-Diameter steel plate1.001.00Each34B101
0 B1028in Base assembly.1.00Each11B102
1B10212028-Diameter steel plate1.001.00Each34B102
0 LAXXLamp LA.1.00Each33LAXX
1LAXX4000Common parts1.001.00Each03LAXX
240001100Finished shaft1.001.00Each25LAXX
3110021003/8 Steel tubing26.0026.00Inches38LAXX
240001300Hub1.001.00Each25LAXX
2400014001/4-20 Screw4.004.00Each14LAXX
240001500Steel holder1.001.00Each25LAXX
3150014001/4-20 Screw2.002.00Each16LAXX
240001700Wiring assembly1.001.00Each14LAXX
31700220016-Gauge lamp cord12.0012.00Feet26LAXX
317002300Standard plug terminal1.001.00Each15LAXX
1LAXXB10XBase assembly options1.001.00Each03LAXX
1LAXXS10XShade options1.001.00Each03LAXX
1LAXXA10XSocket assembly options1.001.00Each03LAXX
0 S100Black shade.1.00Each22S100
0 S10114in White shade.1.00Each22S101
0 S10214in Cream shade.1.00Each22S102
0 S10314in Yellow shade.1.00Each22S103
0 S10415in Black shade.1.00Each22S104
0 S10515in White shade.1.00Each22S105
0 S10615in Cream shade.1.00Each22S106
0 S10715in Yellow shade.1.00Each22S107


The following SAS code constructs an indented bill of material for the product 'LA01', which is configured with 'A100' (One-way socket assembly), 'B100' (6in Base assembly), and 'S100' (14in Black shade). It first uses the %BOMTSAE SAS macro to create a bill of material that is the same as the bill for the item 'LAXX', except the pseudo item 'B10X' is replaced by the modular bill for the item 'B100'. It then uses the %BOMTREP SAS macro to replace the pseudo items 'S10X' and 'A10X' with the bill of material for 'S100' and 'A100'. Note that the %BOMTSAE macro refers to the part master file PMaster3 (shown in Output 2.3.1) for the master data of the item 'LA01'. See the section Transactional Macros for details about these SAS macros.

/* Copy LAXX to LA01 with B10X replaced by B100 */
%bomtsae(root='LA01', sameas='LAXX', except='B10X', repby='B100',
      in=IndBOM5, pmdata=PMaster3, part=Part, quantity=QtyPer,
      leadtime=LeadTime, id=Desc Unit, out=BomOut5);

/* Merge the bill of material for S100 to the new BOM */
data BomOut51;
set BomOut5
    IndBOM5(where=(_Prod_='S100'));
run;

/* Replace S10X with S100 */
%bomtrep(root='S10X', repby='S100', in=BomOut51, quantity=QtyPer,
      leadtime=LeadTime, id=Desc Unit, del=1, out=BomOut52);

/* Merge the bill of material for A100 to the new BOM */
data BomOut53;
set BomOut52
    IndBOM5(where=(_Prod_='A100'));
run;

/* Replace A10X with A100 */
%bomtrep(root='A10X', repby='A100', in=BomOut53, quantity=QtyPer,
      leadtime=LeadTime, id=Desc Unit, del=1, out=BomOut5);

The indented bill of material for item 'LA01' is displayed in Output 2.5.2. It is the same as the bill of material displayed in Output 2.2.2 (which is created directly by PROC BOM), except for the common items such as '1100', '1300', '1400', '1500', and '1700', which are regrouped under the phantom item '4000'.

Output 2.5.2: Indented Bill of Material for Product 'LA01' (BomOut5)

ABC Lamp Company
 
Indented Bill of Material, Part LA01

_Level__Parent__Part_DescQtyPerQty_ProdUnitLeadTimeTot_Lead_Prod_
0 LA01Lamp LA.1.00Each22LA01
1LA014000Common parts1.001.00Each02LA01
240001100Finished shaft1.001.00Each24LA01
3110021003/8 Steel tubing26.0026.00Inches37LA01
240001300Hub1.001.00Each24LA01
2400014001/4-20 Screw4.004.00Each13LA01
240001500Steel holder1.001.00Each24LA01
3150014001/4-20 Screw2.002.00Each15LA01
240001700Wiring assembly1.001.00Each13LA01
31700220016-Gauge lamp cord12.0012.00Feet25LA01
317002300Standard plug terminal1.001.00Each14LA01
1LA01A100Socket assembly1.001.00Each13LA01
2A1001600One-way socket1.001.00Each25LA01
1LA01B100Base assembly1.001.00Each13LA01
2B10012006-Diameter steel plate1.001.00Each36LA01
1LA01S100Black shade1.001.00Each24LA01


Last updated: August 24, 2020