GetChildParentNode

Get Child Parent Structure

Major Business Rule

Object Name: B3000890

Parent DLL: CMFGBASE

Location: Client/Server

Language: C

1.Functional Description

1.1Purpose

This BF retrieves the next vertical structure for the Bill of Material explosion process, stores it 

in a link list, and returns it to the calling application through a GENLNG. 



1.2Setup Notes and Prerequisites

• This BF is part of the On-Line BOM Explosion process.  The On-Line BOM Explosion process includes 
standard ER for BOM explosion and additional Business Functions that have been created for On-line Bill 

of Material Explosion.

• After level 1 is written to the grid, call this BF passing the values from the first level..
• After the BOM has been completely exploded, call BF DestroyLinkList after BOM has been exploded.

1.3Special Logic

This section should be used when additional logic is used in the Business Function for application 

specific functionality or exceptional situations.


2.Technical Specifications

2.4Processing 


1.0.  If the pointer to the link list is equal to NULL, add first node to link list.

1.1.  Create Link List.
1.2.  Assign DS Level = 0.

1.2.  Add a node in the link list where the following values are saved:

Parent Branch   =  DS Parent Branch

Parent Item=  DS Parent Item

Type of Bill=  DS Type of Bill

Batch Qty=  DS Batch Qty

Batch Qty UOM=  DS Batch Qty UOM

Level=  DS Level

Component Branch=  DS Component Branch

Component Item =  DS Component Item

Quantity Required=  DS Quantity Required

Unit Of Measure=  DS Unit of Measure

Operation Sequence =  DS Operation Sequence

Line Number=  DS Line Number

Effective From=  DS Effective From

Hrequet=  Hrequest  Used to Retreive the Record  


1.0.  If the pointer to the link list is not equal to null, retrieve the values of the last link list 

node.

        Else if it is Null them Create it, fetch the first node using data sent in 
ID_F3002_COMPONENT_BRANCH__ITEM___A: Where CMCU = DS Parent Branch (MMCU),         
  ITM  = Parent Item(KIT).  

add that node and send back the data (see 2.2) and exit.



2.0.  Add the next level to the link list.

2.1.  Retrieve the next level from the Bill of Material Table (F3002) until fetch fails, record 
found, or SBNT <> 0.    (LOOP)

2.1.1.  If DS Bill Retrieved is equal to '1', retrieve a record from the Bill of Material 
Table 

index: ID_F3002_COMPONENT_BRANCH__ITEM___A
where CMCU = DS Parent Branch (MMCU), ITM= Parent Item(KIT).  



2.1.4.  If DS As of Date not equal to zero or NULL, check date effectivity.  The DS As of Date 
must be greater than or equal to the F3002 Effective From date and less than or equal to the 

F3002 Effective Thru Date.  If the DS As of Date is not within the date effectivity range, read 

next BOM record. From or Thru Grade and From or Thru Potency Must be in range.


2.2.  If a Bill of Material Record was found, process next level.
2.2.1.  Assign values to be stored in Link List.
LL Parent Branch-  F3002 MMCU

LL Parent Item-  F3002 KIT

LL Type of Bill-  F3002 TBM

LL Batch Qty-  F3002 BQTY

LL Batch Qty UOM-  F3002 UOM

LL Level-  DS Level

LL Component Branch-  F3002 CMCU

LL Component Item -  F3002 ITM

LL Quantity Required-  F3002 QNTY

LL Unit Of Measure-  F3002 UM

LL Operation Sequence-  F3002 OPSQ

LL Line No-  F3002 CPNT

LL Effective From-  F3002 EFFF

2.2.3.  Add node to link list.
2.2.4.  If DS Return Pointer is equal to '1', allocate memory for F3002 record and assign DS 
F3002 pointer = pointer to F3002 record.


2.2.5.  Assign  values from the F3002 record  to return in the BF data structure.
DS Parent Branch =  F3002 MMCU

DS Parent Item=  F3002 KIT

DS Type of Bill=  F3002 TBM

DS Batch Qty=  F3002 BQTY

DS Batch Qty UOM=  F3002 UOM

DS Component Branch=  F3002 CMCU

DS Component Item=  F3002 ITM

DS Unit of Measure=  F3002 UM

DS Operation Sequence=  F3002 OPSQ

DS Effective From=  F3002 EFFF

                                         DS Effective From=  F3002 EFFF

2.2.6.  Assign DS End of Vertical Branch = '0'.
 2.2.7.  Assign DS Record Found = '1'.

   2.3.  If a Bill of Material Record was not found,    assign DS End of Vertical Branch  = '1', 
assign DS    Record Found = '0'.


3.0.  Destroy link list or build new link list


3.1.If calling this function not for the first time, delete link list nodes from the end of link 

list if no other vertical structure can be found at the node, and if all nodes are deleted, then 

destroy the link list.


3.2. If other vertical structure is found at the node, change the parent information in the 
current node, and then create another link list based on the modified node. And when calling this function 

next time, repeat step 3.0. 



This Function will return all the information saved in the Linked List one node at a time

Data Structure

D300089A - Get Child Parent Vertical

Parameter NameData ItemData TypeReq/OptI/O/Both
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.

mnParentItemKITMATH_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.

szParent2ndItemNumberKITLcharNONENONE

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.

szParent3rdItemNumberKITAcharNONENONE

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.

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.

mnBatchQuantityBQTYMATH_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.

szBatchQuantityUOMUOMcharNONENONE

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

szComponentBranchCMCUcharNONENONE

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)

mnComponentItemNumberITMMATH_NUMERICNONENONE

An inventory item number. The system provides three separate item numbers plus an extensive cross-reference capability to other item 
numbers (see data item XRT) to accommodate substitute item numbers, replacements, bar codes, customer numbers, supplier numbers, and 
so forth. The item numbers are as follows:   o Item Number (short) - An eight-digit, computer-assigned item number     o 2nd Item Number - The 
25-digit, free-form, user defined alphanumeric item number     o 3rd Item Number - Another 25-digit, free-form, user defined alphanumeric item 
number

mnQuantityRequiredQTYMATH_NUMERICNONENONE

The number of units associated with an asset.

szUnitOfMeasureUMcharNONENONE

A user defined code (00/UM) that identifies the unit of measurement for an amount or quantity. For example, it can represent a barrel, box, 
cubic meter, liter, hour, and so on.

mnOperationsSequenceNoOPSQMATH_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.

jdEffectiveFromEFFFJDEDATENONENONE

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.

jdEffectiveThruEFFTJDEDATENONENONE

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.

cCoProductsByProductsCOBYcharNONENONE

A code that distinguishes standard components or ingredients from co-products,by-products, and intermediates. Co-products are 
(concurrent) end items as the result of a process. By-products are items that can be produced at any step of a process, but were not planned. 
Intermediate products are items defined as a result of a step but are automatically consumed in the following step. Generally, intermediates are 
nonstock items and are only defined steps with a pay-point for reporting purposes. Standard components (Discrete Manufacturing) or ingredients 
(Process Manufacturing) are consumed during the production process. Valid values are:    C Co-products    B By-products    I Intermediate 
products    Blank Standard components or ingredients

cFixedOrVariableQtyFORQcharNONENONE

A code that indicates if the quantity per assembly for an item on the bill of material varies according to the quantity of the parent item 
produced or is fixed regardless of the parent quantity. This value also determines if the component quantity is a percent of the parent quantity. Valid 
values are:    F Fixed Quantity    V Variable Quantity (default)    %   Quantities are expressed as a percentage and must total 100%For 
fixed-quantity components, the Work Order and Material Requirements Planning systems do not extend the component's quantity per assembly 
value by the order quantity.

szLevelINDLcharNONENONE

A number indicating the level of a child in the relationship to its parent in a hierarchy.

cPassEV01charNONENONE

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

jdAsOfDateDATE01JDEDATENONENONE

Event point for JDE Date.

cEndOfRecordsEV01charNONENONE

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

cSuppressErrorsEV01charNONENONE

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.

idBOMLinkedListGENLNGIDNONENONE

General purpose ID variable.

idHUSERGENLNGIDNONENONE

General purpose ID variable.

nLevelAsIntegerINT02integerNONENONE

Number of Days in the Past to Query for Quote Requests Received. 

cIndentLevelEV01charNONENONE

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

cEndOfBillOfMaterialEV01charNONENONE

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

mnFromPotencyFRMPMATH_NUMERICNONENONE

A number that indicates the minimum potency or percentage of active ingredients acceptable for an item. The system displays a warning 
message if you try to purchase or issue items that do not meet the minimum acceptable potency. The system does not allow you to sell items 
that do not meet the minimum acceptable potency.

mnThruPotencyTHRPMATH_NUMERICNONENONE

A number that indicates the maximum potency or percentage of active ingredients that is acceptable for an item. The system displays a 
warning message if you try to purchase or issue items that have a potency that exceeds the maximum potency acceptable. The system does 
not allow you to sell items that have a potency that exceeds the maximum potency acceptable.

szFromGradeFRGDcharNONENONE

A user defined code (40/LG) that indicates the minimum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that do not meet the minimum grade acceptable. The system does not allow you to sell items 
with grades that do not meet the minimum acceptable level.

szThruGradeTHGDcharNONENONE

A user defined code (40/LG) that indicates the maximum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that exceed the maximum grade acceptable. The system does not allow you to sell items with 
grades that exceed the maximum grade acceptable.

mnComponentLineNumberCPNBMATH_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

None

Related Tables

None
GetChildParentNodeReportVersion

GetChildParentNodeReportVersion

Get Child Parent Structure

Major Business Rule

Object Name: B3000890

Parent DLL: CMFGBASE

Location: Client/Server

Language: C

1.Functional Description

1.1Purpose

Retrieve the next horizontally related item in the BOM structure required in the Bill of Material 

explosion process.. 


1.2Setup Notes and Prerequisites

• This BF is part of the On-Line BOM Explosion process.  The On-Line BOM Explosion process includes 
standard ER for BOM explosion and additional Business Functions that have been created for On-line Bill 

of Material Explosion.

• Each time the BF is called, the vertical branch built by GetBOMStructureVertical will be processed 
from highest level to lowest level until a horizontal relationship is found.

• After a horizonal relationship is found, the ER should call GetBOMStructureVertical to vertically 
explode the item that was selected from this business function..


1.3Special Logic

This section should be used when additional logic is used in the Business Function for application 

specific functionality or exceptional situations.


2.Technical Specifications

2.4Processing 


1.0.  If DS Pointer to Link List is equal to NULL, return.


2.0.  Process link list records from the beginning of link list until end of link list or horizontal 
BOM relationship is found.  (LOOP)


2.1.  Retreive first node in Link List.  If no nodes exist in the link list, assign DS Records 
Found  = '0' and return.


2.3.  Read Next BOM Record Sequentially until record found, fetch fails, or SBNT <> 0.  (LOOP)
2.3.1.  Read next BOM record Using the saved HRequest.
index: ID_F3002_COMPONENT_BRANCH__ITEM___A
where CMCU = LL Component Branch, ITM = LL Component Item

2.3.2.  If record found and (DS As Of Date is not equal to 0 or NULL), check date effectivity.  
DS As of Date must be greater than or equal to F3002 Effective From date and less than or equal 

to F3002 Effective Thru.  If DS As of Date is not within date effectivity range, read next 

record.

                          

2.3.3.  If record found, process horizontal BOM relationship.  
2.3.3.1.  Update current Link List Node.  The level number should not change.
2.3.3.2.  Assign DS Record Found = '1'.

2.3.4.  If fetch fails, repeat 2.0. 

This function builds the Linked List for the BOM.  See documentation for hook up instructions


Data Structure

D300089A - Get Child Parent Vertical

Parameter NameData ItemData TypeReq/OptI/O/Both
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.

mnParentItemKITMATH_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.

szParent2ndItemNumberKITLcharNONENONE

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.

szParent3rdItemNumberKITAcharNONENONE

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.

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.

mnBatchQuantityBQTYMATH_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.

szBatchQuantityUOMUOMcharNONENONE

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

szComponentBranchCMCUcharNONENONE

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)

mnComponentItemNumberITMMATH_NUMERICNONENONE

An inventory item number. The system provides three separate item numbers plus an extensive cross-reference capability to other item 
numbers (see data item XRT) to accommodate substitute item numbers, replacements, bar codes, customer numbers, supplier numbers, and 
so forth. The item numbers are as follows:   o Item Number (short) - An eight-digit, computer-assigned item number     o 2nd Item Number - The 
25-digit, free-form, user defined alphanumeric item number     o 3rd Item Number - Another 25-digit, free-form, user defined alphanumeric item 
number

mnQuantityRequiredQTYMATH_NUMERICNONENONE

The number of units associated with an asset.

szUnitOfMeasureUMcharNONENONE

A user defined code (00/UM) that identifies the unit of measurement for an amount or quantity. For example, it can represent a barrel, box, 
cubic meter, liter, hour, and so on.

mnOperationsSequenceNoOPSQMATH_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.

jdEffectiveFromEFFFJDEDATENONENONE

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.

jdEffectiveThruEFFTJDEDATENONENONE

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.

cCoProductsByProductsCOBYcharNONENONE

A code that distinguishes standard components or ingredients from co-products,by-products, and intermediates. Co-products are 
(concurrent) end items as the result of a process. By-products are items that can be produced at any step of a process, but were not planned. 
Intermediate products are items defined as a result of a step but are automatically consumed in the following step. Generally, intermediates are 
nonstock items and are only defined steps with a pay-point for reporting purposes. Standard components (Discrete Manufacturing) or ingredients 
(Process Manufacturing) are consumed during the production process. Valid values are:    C Co-products    B By-products    I Intermediate 
products    Blank Standard components or ingredients

cFixedOrVariableQtyFORQcharNONENONE

A code that indicates if the quantity per assembly for an item on the bill of material varies according to the quantity of the parent item 
produced or is fixed regardless of the parent quantity. This value also determines if the component quantity is a percent of the parent quantity. Valid 
values are:    F Fixed Quantity    V Variable Quantity (default)    %   Quantities are expressed as a percentage and must total 100%For 
fixed-quantity components, the Work Order and Material Requirements Planning systems do not extend the component's quantity per assembly 
value by the order quantity.

szLevelINDLcharNONENONE

A number indicating the level of a child in the relationship to its parent in a hierarchy.

cPassEV01charNONENONE

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

jdAsOfDateDATE01JDEDATENONENONE

Event point for JDE Date.

cEndOfRecordsEV01charNONENONE

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

cSuppressErrorsEV01charNONENONE

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.

idBOMLinkedListGENLNGIDNONENONE

General purpose ID variable.

idHUSERGENLNGIDNONENONE

General purpose ID variable.

nLevelAsIntegerINT02integerNONENONE

Number of Days in the Past to Query for Quote Requests Received. 

cIndentLevelEV01charNONENONE

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

cEndOfBillOfMaterialEV01charNONENONE

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

mnFromPotencyFRMPMATH_NUMERICNONENONE

A number that indicates the minimum potency or percentage of active ingredients acceptable for an item. The system displays a warning 
message if you try to purchase or issue items that do not meet the minimum acceptable potency. The system does not allow you to sell items 
that do not meet the minimum acceptable potency.

mnThruPotencyTHRPMATH_NUMERICNONENONE

A number that indicates the maximum potency or percentage of active ingredients that is acceptable for an item. The system displays a 
warning message if you try to purchase or issue items that have a potency that exceeds the maximum potency acceptable. The system does 
not allow you to sell items that have a potency that exceeds the maximum potency acceptable.

szFromGradeFRGDcharNONENONE

A user defined code (40/LG) that indicates the minimum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that do not meet the minimum grade acceptable. The system does not allow you to sell items 
with grades that do not meet the minimum acceptable level.

szThruGradeTHGDcharNONENONE

A user defined code (40/LG) that indicates the maximum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that exceed the maximum grade acceptable. The system does not allow you to sell items with 
grades that exceed the maximum grade acceptable.

mnComponentLineNumberCPNBMATH_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

None

Related Tables

None
GetChildParentVertical

GetChildParentVertical

Get Child Parent Structure

Major Business Rule

Object Name: B3000890

Parent DLL: CMFGBASE

Location: Client/Server

Language: C

1.Functional Description

1.1Purpose

Retrieve the next horizontally related item in the BOM structure required in the Bill of Material 

explosion process.. 


1.2Setup Notes and Prerequisites

• This BF is part of the On-Line BOM Explosion process.  The On-Line BOM Explosion process includes 
standard ER for BOM explosion and additional Business Functions that have been created for On-line Bill 

of Material Explosion.

• Each time the BF is called, the vertical branch built by GetBOMStructureVertical will be processed 
from highest level to lowest level until a horizontal relationship is found.

• After a horizonal relationship is found, the ER should call GetBOMStructureVertical to vertically 
explode the item that was selected from this business function..


1.3Special Logic

This section should be used when additional logic is used in the Business Function for application 

specific functionality or exceptional situations.


2.Technical Specifications

2.4Processing 


1.0.  If DS Pointer to Link List is equal to NULL, return.


2.0.  Process link list records from the end of link list until beginning of link list or horizontal 
BOM relationship is found.  (LOOP)


2.1.  Retreive last node in Link List.  If no nodes exist in the link list, assign DS Records 
Found  = '0' and return.


2.3.  Read Next BOM Record Sequentially until record found, fetch fails, or SBNT <> 0.  (LOOP)
2.3.1.  Read next BOM record Using the saved HRequest.
index: ID_F3002_COMPONENT_BRANCH__ITEM___A
where CMCU = LL Component Branch, ITM = LL Component Item

2.3.2.  If record found and (DS As Of Date is not equal to 0 or NULL), check date effectivity.  
DS As of Date must be greater than or equal to F3002 Effective From date and less than or equal 

to F3002 Effective Thru.  If DS As of Date is not within date effectivity range, read next 

record.

                          

2.3.3.  If record found, process horizontal BOM relationship.  
2.3.3.1.  Update current Link List Node.  The level number should not change.
2.3.3.2.  Assign DS Record Found = '1'.

2.3.4.  If fetch fails, repeat 2.0. 

This function builds the Linked List for the BOM.  See documentation for hook up instructions

Data Structure

D300089A - Get Child Parent Vertical

Parameter NameData ItemData TypeReq/OptI/O/Both
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.

mnParentItemKITMATH_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.

szParent2ndItemNumberKITLcharNONENONE

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.

szParent3rdItemNumberKITAcharNONENONE

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.

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.

mnBatchQuantityBQTYMATH_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.

szBatchQuantityUOMUOMcharNONENONE

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

szComponentBranchCMCUcharNONENONE

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)

mnComponentItemNumberITMMATH_NUMERICNONENONE

An inventory item number. The system provides three separate item numbers plus an extensive cross-reference capability to other item 
numbers (see data item XRT) to accommodate substitute item numbers, replacements, bar codes, customer numbers, supplier numbers, and 
so forth. The item numbers are as follows:   o Item Number (short) - An eight-digit, computer-assigned item number     o 2nd Item Number - The 
25-digit, free-form, user defined alphanumeric item number     o 3rd Item Number - Another 25-digit, free-form, user defined alphanumeric item 
number

mnQuantityRequiredQTYMATH_NUMERICNONENONE

The number of units associated with an asset.

szUnitOfMeasureUMcharNONENONE

A user defined code (00/UM) that identifies the unit of measurement for an amount or quantity. For example, it can represent a barrel, box, 
cubic meter, liter, hour, and so on.

mnOperationsSequenceNoOPSQMATH_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.

jdEffectiveFromEFFFJDEDATENONENONE

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.

jdEffectiveThruEFFTJDEDATENONENONE

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.

cCoProductsByProductsCOBYcharNONENONE

A code that distinguishes standard components or ingredients from co-products,by-products, and intermediates. Co-products are 
(concurrent) end items as the result of a process. By-products are items that can be produced at any step of a process, but were not planned. 
Intermediate products are items defined as a result of a step but are automatically consumed in the following step. Generally, intermediates are 
nonstock items and are only defined steps with a pay-point for reporting purposes. Standard components (Discrete Manufacturing) or ingredients 
(Process Manufacturing) are consumed during the production process. Valid values are:    C Co-products    B By-products    I Intermediate 
products    Blank Standard components or ingredients

cFixedOrVariableQtyFORQcharNONENONE

A code that indicates if the quantity per assembly for an item on the bill of material varies according to the quantity of the parent item 
produced or is fixed regardless of the parent quantity. This value also determines if the component quantity is a percent of the parent quantity. Valid 
values are:    F Fixed Quantity    V Variable Quantity (default)    %   Quantities are expressed as a percentage and must total 100%For 
fixed-quantity components, the Work Order and Material Requirements Planning systems do not extend the component's quantity per assembly 
value by the order quantity.

szLevelINDLcharNONENONE

A number indicating the level of a child in the relationship to its parent in a hierarchy.

cPassEV01charNONENONE

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

jdAsOfDateDATE01JDEDATENONENONE

Event point for JDE Date.

cEndOfRecordsEV01charNONENONE

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

cSuppressErrorsEV01charNONENONE

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.

idBOMLinkedListGENLNGIDNONENONE

General purpose ID variable.

idHUSERGENLNGIDNONENONE

General purpose ID variable.

nLevelAsIntegerINT02integerNONENONE

Number of Days in the Past to Query for Quote Requests Received. 

cIndentLevelEV01charNONENONE

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

cEndOfBillOfMaterialEV01charNONENONE

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

mnFromPotencyFRMPMATH_NUMERICNONENONE

A number that indicates the minimum potency or percentage of active ingredients acceptable for an item. The system displays a warning 
message if you try to purchase or issue items that do not meet the minimum acceptable potency. The system does not allow you to sell items 
that do not meet the minimum acceptable potency.

mnThruPotencyTHRPMATH_NUMERICNONENONE

A number that indicates the maximum potency or percentage of active ingredients that is acceptable for an item. The system displays a 
warning message if you try to purchase or issue items that have a potency that exceeds the maximum potency acceptable. The system does 
not allow you to sell items that have a potency that exceeds the maximum potency acceptable.

szFromGradeFRGDcharNONENONE

A user defined code (40/LG) that indicates the minimum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that do not meet the minimum grade acceptable. The system does not allow you to sell items 
with grades that do not meet the minimum acceptable level.

szThruGradeTHGDcharNONENONE

A user defined code (40/LG) that indicates the maximum grade that is acceptable for an item. The system displays a warning message if 
you try to purchase or issue items with grades that exceed the maximum grade acceptable. The system does not allow you to sell items with 
grades that exceed the maximum grade acceptable.

mnComponentLineNumberCPNBMATH_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

None

Related Tables

None
FFF

2.2.6.  Assign DS End of Vertical Branch = '0'.
 2.2.7.  Assign DS Record Found = '1'.

   2.3.  If a Bill of Material Record was not found,    assign DS End of Vertical Branch  = '1', 
assign DS    Record Found = '0'.


3.0.  Destroy link list or build new link list


3.1.If calling this function not for the first time, delete link list nodes from the end of link 

list if no other vertical structure can be found at the node, and if all nodes are deleted, then 

destroy the link list.


3.2. If other vertical structure is found at the node, change the parent information in the 
current node, and then create another link list based on the modified node. And when calling this function 

next time, repeat step 3.0. 



This Function will return all the information saved in the Linked List one node at a time

Data Structure

D300089A - Get Child Parent Vertical

Parameter NameData ItemData TypeReq/OptI/O/Both
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.

mnParentItemKITMATH_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.

szParent2ndItemNumberKITLcharNONENONE

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.

szParent3rdItemNumberKITAcharNONENONE

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.

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.

mnBatchQuantityBQTYMATH_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.

szBatchQuantityUOMUOMcharNONENONE

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

szComponentBranchCMCUcharNONENONE

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)

mnComponentItemNumberITMMATH_NUMERICNONENONE

An inventory item number. The system provides three separate item numbers plus an extensive cross-reference capability to other item 
numbers (see data item XRT) to accommodate substitute item numbers, replacements, bar codes, customer numbers, supplier numbers, and 
so forth. The item numbers are as follows:   o Item Number (short) - An eight-digit, computer-assigned item number     o 2nd Item Number - The 
25-digit, free-form, user defined alphanumeric item number     o 3rd Item Number - Another 25-digit, free-form, user defined alphanumeric item 
number

mnQuantityRequiredQTYMATH_NUMERICNONENONE

The number of units associated with an asset.

szUnitOfMeasureUMcharNONENONE

A user defined code (00/UM) that identifies the unit of measurement for an amount or quantity. For example, it can represent a barrel, box, 
cubic meter, liter, hour, and so on.

mnOperationsSequenceNoOPSQMATH_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.

jdEffectiveFromEFFFJDEDATENONENONE

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