UpdateSubstituteParts

Update Substitute Parts

Major Business Rule

Object Name: B3000430

Parent DLL: CMFGBASE

Location: Client/Server

Language: C

1.Functional Description

1.1Purpose


Add, Delete, or Revise Substitiute Parts associated with the component in the Bill of Material 

Record.  Mode 1= Add/Copy, 2=Revise, 3=Delete. If Mode is equal to '1', substitute components will be copied 

from the Bill of Material that is being duplicated. If Mode is equal to '2', the substitiute 

components will be revised.  If Mode is equal to '3', delete all Component Substitutes.


If Mode is equal to '1', the F3002Pointer contains the pointer to the Bill of Material component from 

which the Component Substitutes will be copied.  The ParentBranch, ParentItem(short), Type of Bill, 

BatchQuantity(File), and Line No are the key values of the Bill of Material Component to which the 

substitute components are being copied.  The Sequence No, ParentItem2nd, and ParentItem3rd are additional 

information required for the copy. 


If Mode is equal to '2', the F3002Pointer contains the pointer to the Bill of Material component that 

has been revised.  The Line No and Sequence No contain the revised values that will cause the 

component substitutes to also be revised.  If the Line No or Sequence No has been changed, the component 

substitutes will be revised.


If Mode is equal to '3', the F3002 Pointer contains the pointer to the Bill of Material component 

that is being deleted.  All Substitute components associated with this Bill of Material Component will 

also be deleted.



2.Technical Specifications


2.4Processing 


1.0  If Mode is not equal to '1', '2' or '3' or  DS F3002Pointer is equal to NULL, Assign DS 
ErrorMessageID = '4375'.  If Mode is not equal to '2' or '3' or DS F3002Pointer is equal to NULL, and DS 

Suppress Error Messages is not equal to '1',  SetGBRError = '4375'.


2.0.  If (Mode is equal to '2') and (DS Line No is equal to DS F3002Pointer Line No) and (DS Sequence 
No is equal to DS F3002Pointer Sequence No), return.


3.0.  Fetch all records where MMCU, KIT, TBM, BQTY, and CPNT are equal to the values from the DS 
F3002Pointer using index: Parent Item, Branch, Type, + until all records have been copied, revised, 

deleted, or rejected.


3.1.  If (F3002 COBY is not equal to blank or NULL) or (F3002 SBNT is equal to zeros), read next 
record.


3.2.  If Mode is equal to '3', delete substitute part.

3.2.1.  If DS LogBillofMaterial is 'Y', call UpdateBOMAuditLog (B3000420) using the following 
parameters:

Mode = '3'
ParentBranch = F3002 ParentBranch

ParentItem = F3002 ParentItem

TypeofBill = F3002 TypeofBill

BatchQuantity = F3002 BatchQuantity

LineNo= F3002 LineNo

SubstituteItemSequence= F3002 SubstituteItemSequence

SuppressErrorMessage= '1'

3.2.2.  Delete the F3002 record.

3.3.  If Mode is equal to '2', revise substitute part.

3.3.1.  If DS LogBillofMaterial is equal to 'Y' and DS Line No is not equal to DS F3002Pointer 
Line No, call UpdateBOMAuditLog (B3000420) using the following parameters:

Mode= '3'

Parent Branch= F3002 Parent Branch

Parent Item= F3002 Parent Item (short)

Type of Bill= F3002 Type of Bill

Batch Quantity= F3002 Batch Quantity (File)

Line No. = F3002 Line No

Substitute Item Sequence = F3002 Substitute Item Sequence

SuppressErrorMessages= '1'

3.3.2.  If DS LogBillofMaterial is equal to 'Y' and DS Line No is equal to DS F3002Pointer Line 
No, call UpdateBOMAuditLog (B3000420) using the following parameters:

Mode= '2'

Parent Branch= F3002 Parent Branch

Parent Item= F3002 Parent Item (short)

Type of Bill= F3002 Type of Bill

Batch Quantity= F3002 Batch Quantity (File)

Line No. = F3002 Line No

Substitute Item Sequence = F3002 Substitute Item Sequence

SuppressErrorMessages= '1'

3.3.3.  If (DS Sequence No. is not equal to the DS F3002Pointer Sequence No), assign F3002 
Sequence No equal to DS Sequence No.  

3.3.4.  If (DS Line No is not equal to the DS F3002Pointer Line No), assign F3002 Line No equal 
to DS Line No.

3.3.5.  Retrieve system date and time.
3.3.6.  Retrieve audit info using the BF GetAuditInfo.

3.3.7.  Update the Substitute Component in the Bill of Material File (F3002) using new DS 
F3002Pointer values.



3.4.  If Mode is equal to '1', add/copy substitute components.
3.4.1.  Assign the key values to where the substitute components are being copied.
MMCU = DS Parent Branch
KIT= DS ParentItem(short)

TBM = DS Type of Bill 

BQTY= DS Batch Quantity

CPNT = DS Line No

OPSQ= DS Operation Sequence

UOM= DS Batch Qty UOM

PID= DS Program Id

3.4.2.  Assign audit information.  Retrieve audit info using business function GetAuditInfo.
3.4.3.  Assign current date and time.

3.4.4.  Write new Substitute Component to the Bill of Material Table (F3002).

Retrievals:

1.) Bill of Material Table (F3002) using index Parent Item, Branch, Type, +

Parent BranchMMCU

Parent ItemKIT

Type of BillTBM

Batch QuantityBQTY

LineNoCPNT

Co-/By-Product FlagCOBY

Substitute Item SequenceSBNT

Operation SequenceOPSQ



Data Structure

D3000430 - Update Substitute Parts

Parameter NameData ItemData TypeReq/OptI/O/Both
cModeMODEcharNONENONE

The processing mode used in Purchase Order Consolidator to signify when specific orders are being processed.

szParentBranchMMCUcharNONENONE

A code that represents a high-level business unit. Use this code to refer to a branch or plant that might have departments or jobs, which 
represent lower-level business units, subordinate to it. For example:     o Branch/Plant (MMCU)     o Dept A (MCU)     o Dept B (MCU)     o Job 123 
(MCU) Business unit security is based on the higher-level business unit.

mnParentItemShortKITMATH_NUMERICNONENONE

The system provides for three separate item numbers.    1.   Item Number (short) - An eight-digit, computer assigned, completely 
non-significant item number.    2.   2nd Item Number - The 25-digit, free form, user defined alphanumeric item number.    3.   3rd Item Number - Another 
25-digit, free form, user defined alphanumeric item number.

szTypeofBillTBMcharNONENONE

A user defined code (40/TB) that designates the type of bill of material. You can define different types of bills of material for different uses. 
For example:    M     Standard manufacturing bill    RWK   Rework bill    SPR   Spare parts bill  The system enters bill type M in the work order 
header when you create a work order, unless you specify another bill type. The system reads the bill type code on the work order header to 
know which bill of material to use to create the work order parts list. MRP uses the bill type code to identify the bill of material to use when it 
attaches MRP messages. Batch bills of material must be type M for shop floor management, product costing, and MRP processing.

mnBatchQuantityFileBQTYMATH_NUMERICNONENONE

The quantity of finished units that you expect this bill of material or routing to produce. You can specify varying quantities of components 
based on the amount of finished goods produced. For example, 1 ounce of solvent is required per unit up to 100 units of finished product. 
However, if 200 units of finished product is produced, 2 ounces of solvent are required per finished unit. In this example, you would set up batch 
quantities for 100 and 200 units of finished product, specifying the proper amount of solvent per unit.

mnSequenceNumberOPSQMATH_NUMERICNONENONE

A number used to indicate an order of succession. In routing instructions, a number that sequences the fabrication or assembly steps in the 
manufacture of an item. You can track costs and charge time by operation. In bills of material, a number that designates the routing step in the 
fabrication or assembly process that requires a specified component part. You define the operation sequence after you create the routing 
instructions for the item. The Shop Floor Management system uses this number in the backflush/preflush by operation process. In engineering 
change orders, a number that sequences the assembly steps for the engineering change. For repetitive manufacturing, a number that 
identifies the sequence in which an item is scheduled to be produced. Skip To fields allow you to enter an operation sequence that you want to begin 
the display of information. You can use decimals to add steps between existing steps. For example, use 12.5 to add a step between steps 
12 and 13.

cLogBillOfMaterialLOGBcharNONENONE

A code that determines whether changes to the bill of material are recorded in the Bill of Material Change File table (F3011). When you log 
bill of material changes, the system saves the old bill of material and the new, changed bill of material. To record changes to the bill of 
material, click the Log Bill of Material option under the BOM/Routing Options heading.

cSuppressErrorMessagesEV01charNONENONE

An option that specifies the type of processing for an event.

szErrorMessageIDDTAIcharNONENONE

A code that identifies and defines a unit of information. It is an alphanumeric code up to 8 characters long that does not allow blanks or 
special characters such as %, &, or +. You create new data items using system codes 55-59. You cannot change the alias.

szParentItem2ndKITLcharNONENONE

The system provides for three separate item numbers.    1.   Item Number (short) - An eight-digit, computer assigned, completely 
non-significant item number.    2.   2nd Item Number - The 25-digit, free form, user defined alphanumeric item number.    3.   3rd Item Number - Another 
25-digit, free form, user defined alphanumeric item number. This is used in a parts list as either a parent or component number. In the Equipment 
Management system, this item is used for memo purposes only.

szParentItem3rdKITAcharNONENONE

The system provides three separate item numbers:    1. Item Number (short) - An eight-digit, computer assigned, completely non-significant 
item number.    2. 2nd Item Number - The 25-digit, free form, user defined alphanumeric item number.    3. 3rd Item Number - Another 25-digit, 
free form, user defined alphanumeric item number.

idF3002PointerGENLNGIDNONENONE

General purpose ID variable.

szUnitOfMeasureAsInputUOMcharNONENONE

A user defined code (00/UM) that indicates the quantity in which to express an inventory item, for example, CS (case) or BX (box).

szProgramIdPIDcharNONENONE

The number that identifies the batch or interactive program (batch or interactive object). For example, the number of the Sales Order Entry 
interactive program is P4210, and the number of the Print Invoices batch process report is R42565. The program ID is a variable length value. 
It is assigned according to a structured syntax in the form TSSXXX, where: T The first character of the number is alphabetic and identifies the 
type, such as P for Program, R for Report, and so on. For example, the value P in the number P4210 indicates that the object is a 
program. SS The second and third characters of the number are numeric and identify the system code. For example, the value 42 in the number P4210 
indicates that this program belongs to system 42, which is the Sales Order Processing system. XXX The remaining characters of the numer are 
numeric and identify a unique program or report. For example, the value 10 in the number P4210 indicates that this is the Sales Order Entry 
program.

jdEffectiveFromDateEFFFJDEDATEOPTNONE

A date that indicates one of the following:     o When a component part goes into effect on a bill of material     o When a routing step goes into 
effect as a sequence on the routing for an item     o When a rate schedule is in effect The default is the current system date. You can enter 
future effective dates so that the system plans for upcoming changes. Items that are no longer effective in the future can still be recorded and 
recognized in Product Costing, Shop Floor Management, and Capacity Requirements Planning. The Material Requirements Planning system 
determines valid components by effectivity dates, not by the bill of material revision level. Some forms display data based on the effectivity 
dates you enter.

jdEffectiveThruDateEFFTJDEDATEOPTNONE

A date that indicates one of the following:     o When a component part is no longer in effect on a bill of material     o When a routing step is no 
longer in effect as a sequence on the routing for an item     o When a rate schedule is no longer active The default is December 31 of the 
default year defined in the Data Dictionary for Century Change Year. You can enter future effective dates so that the system plans for upcoming 
changes. Items that are no longer effective in the future can still be recorded and recognized in Product Costing, Shop Floor Management, 
and Capacity Requirements Planning. The Material Requirements Planning system determines valid components by effectivity dates, not by 
the bill of material revision level. Some forms display data based on the effectivity dates you enter.

szBranchComponentCMCUcharOPTNONE

A secondary or lower-level business unit. The system uses the value that you enter to indicate that a branch or plant contains several 
subordinate departments or jobs. For example, assume that the component branch is named MMCU. The structure of MMCU might be as follows:    
Branch/Plant - (MMCU)       Dept A - (MCU)       Dept B - (MCU)       Job 123 - (MCU)

mnLineNoCPNBMATH_NUMERICOPTNONE

A number that specifies how the system displays the sequence of components on a single-level bill of material. This number initially 
indicates the sequence in which a component was added to the bill of material. You can modify this number to change the sequence in which the 
components appear.

Related Functions

B3000420 Update BOM Audit Log
B9800100 Get Audit Information

Related Tables

F3002 Bill of Material Master File