Master Business Function in EnterpriseOne

Purpose of Document

Master Business Function (MBF) is a Business Function written to process a record into the JDE system which is made up of many sub-routines. JD Edwards provides MBFs to allow calling programs to process certain predefined transactions. An MBF encapsulates the required logic, enforces data integrity, and insulates the calling programs from the database structures.This document details general topics on Master Business Function (MBF) in EnterpriseOne including the types of Master Business Functions, purpose of MBFs, their components, how these business functions are called and how to troubleshoot them.

What is a Master Business Function?

In EnterpriseOne, there are two different type of Master Business Functions:

XT4111Z1 - Inventory Transactions
XT4113Z1 - Inventory Transfer
XT4114Z1 - Inventory Issue/Adjustment
XT4116Z1- Item Reclassifications

B4200310/B4200311/B4200312 - Sales Order Entry Master Business Function
N4200790 - Shipment Confirmation along with B4200810 - LoadOrUnloadShipConfirmCache
N4200860 - Backorder Release MBF
B4501000 - Live Promotions Processing Master Business Function

N4900710 - F4215 UnScheduled Delivery MBF
N4900730 - Disposition Load MBF
N4900780 - Load Confirm By Compartment MBF
N4900140 - Create Load MBF

XT4311Z1/XT4311Z2 - Purchase Order Entry
XT4312Z1/XT4314Z2 - Purchase Order Receipts
XT4314ZN/XT4314Z2 - Voucher Match

X4801/B4800210 - X4801 Work Order Entry Master Business Function along with B4800210 - X4801 Manufacturing Editing Module

B03B0011 - Invoice Entry Master Business Function
B03B0138/B03B0149 - F03B13 Maintain Receipt Header/F03B14 Maintain Receipt Detail
N03B0176 - Account Netting Master Business Function

B0400047 - Voucher Entry Master Business Function
B0400016 - A/P Payments Master Business Function

B0900049 - Journal Entry

N3002040 - F3002 Bill of Material Master Bsfn
N3001780 - F3003 Master Business Function
B3100770 - Work Order Completion MBF
B3101260 - F3111 Parts List Master Business Function
B3101250 - F3112 Work Order Routings Master Business Function
B3101040 - F31122 WO Hours & Quantities Master Business Function
B3102270 - Work Order Issues Master Business Function
B3401200 - F3460, Edit Line And Update Master Business Function
N3700070 - F3701 Test Definitions Master Business Function
N3700100 - F3702 Specifications Master Business Function
B3100770 - Work Order Completions MBF
B3102080 - Co_By Completions MBF
B3401360 - Process Messages MBF
N3401430 - F3460 Forecast MBF

(The above is a non-exhaustive list of Master Business Functions.)

Note:


What is the purpose of using Master Business Function?


Through master business function,

Note:


Transactional File Master Business Function

What are components of Transaction MBF?
A Transaction MBF is made up of below components:

Hook-up What does it do? Remarks
Begin Doc - At the end of header processing or before detail data are processed.
- OK button clicked when header and detail is separated.
- Set focus event in header/detail or headerless/detail form.
  • Initialize Cache/work file.
  • Validate if the control value is populated.
  • Initialize/default values.
  • Create Cache/work file for Header.
- Generally used when transaction contains header and detail information.
- Example: Header Information from F4201/F4301 and detail information from F4211/F4311. BeginDoc used for header information that contains customer/supplier information.
- This component is optional when target transaction only have a single row of data (header only for example).
Edit Line In exiting from row (Row Is Exited/Changed - Asynch) or OK button clicked with or without WHILE loop
  • Initialize Cache/Workfile if BeginDoc was not called.
  • Validate detail information
  • Initialize/default values for detail transaction.
  • Create cache/workfile for Detail.
- In distribution module this function validate item/item-related information.
- Most of validation will take place through this routine.
Edit Doc OK button click
  • Validate before commit. If header and detail information need to have tight integrity then it may compare detail cache to header cache
- This function is optional. If it hits error (or validate failed), form may be closed neither issuing error nor committing cache to transaction files
End Doc Post OK button clicked - Asynch
  • Commit cache/work file to transaction table(s)
- Mostly this function gets called with Transaction Processing ON asynchronously.
- If it does not hit error (successfully retrieved/committed cache) then ClearCache will be called.
Clear Cache Inside End Doc routine or Close/Cancel button clicked
  • Clear cache/workfile for header and detail
- This is to clear any cache created through Begin Doc and Edit Line process.
- User abandon transaction(by clicking Cancel Button) then calling this is important to free memory.
- Some MBF is calling this routine in End Doc.

Note:


How transaction MBF is built to run?


Below is an example of Sales Order creation through P4210 - Sales Order Entry,

are to be build into B4200310.c, B4200311.c and B4200312.c which belongs to Parent DLL CSALES

Note:

How it calls internal BSFN for Edit Line in complex routine?


Below is example from B420030 in Sales Order Entry,

JDEBFRTN(ID) JDEBFWINAPI F4311FSEditLine (LPBHVRCOM lpBhvrCom, LPVOID lpVoid, LPDSD4200310F lpDS)
{
return I4200310_F4211EditLine(lpBhvrCom, lpVoid, lpDS);
}

: As we can see above B4200310 has definition on F4211FSEditLine which is calling internal BSFN I4200310_F4211FSEditLine () but you may not be able to find the detail routine of I4200310_F4211FSEditLine in B4200310. In case you want to know what is actual parameter, refer LPDSD4200310F which is data structure to hold order detail

Below MBFs are configured same manner so it is important to check internal business function for below listed transactions,


How internal components/routine communicate with another routine in a MBF?


For example in handling Inventory Issue through P4112 which utilizes MBF XT4112Z1 as below,

Get Local Computer ID
VA rpt_WorkStationId_JOBN <> BF szMachineKey

F4114 Begin Document
VA rpt_WorkStationId_JOBN -> BF szComputerID
" M30" -> BF szBranchPlant
-> BF mnBatchNumber
SL DateToday -> BF jdBatchDate
"II" -> BF szDocumentType
SL DateToday -> BF jdGLDate

F4114 Edit Line
VA rpt_WorkStationId_JOBN -> BF szComputerID
SL DateToday -> BF jdGLDate
"Inventory Issue" -> BF szGLExplanation
"1" -> BF cUpdateQuantityOnHand
"1" X BF cAllowQtyOverAvailable
"F" -> BF cFromTo
"1" -> BF cDefaultFromPrimaryLocation
SL DateToday -> BF jdTransactionDate
"II" -> BF szDocumentType
SL DateToday -> BF jdBatchDate
VA rpt_BatchNumber_ICU <- BF mnBatchNumber (Ref #1)
" M30" -> BF szBranchPlant
"210" -> BF szItemNumber
"1.0000" -> BF mnTransactionQty
"1.00" -> BF mnTransactionProcessType
VA rpt_DocVoucherInvoiceE_DOC <- BF mnDocumentNumber (Ref #2)
VA rpt_JobnumberA_F0911 <- BF mnF0911JobNumber (Ref #3)
"00200" -> BF szKeyCompany
VA rpt_JobnumberA_Inventory <- BF mnInvJobNumber (Ref #4)
"1" -> BF cProcessJE
"" -> BF mnSecondaryQty

F4114 End Document
"EP4112" -> BF szProgramID
VA rpt_DocVoucherInvoiceE_DOC -> BF mnDocumentNumber (Ref #2)
VA rpt_WorkStationId_JOBN -> BF szComputerID
"1" -> BF cWriteCardex
"II" -> BF szDocumentType
"1.00" -> BF mnTransactionProcessType
VA rpt_JobnumberA_F0911 -> BF mnF0911Jobnumber (Ref #3)
VA rpt_BatchNumber_ICU -> BF mnBatchNumber (Ref #1)
"1" -> BF cProcessCloseBatch
VA rpt_JobnumberA_Inventory -> BF mnInvJobNumber (Ref #4)

Note:


How to debug issue on Master Business Function?


Analyze jasdebug.log (at presentation layer) and jdedebug.log (in logic server) which contains runtime flow and business flow respectively


Considerations


In thin client configuration, interactive application is more suitable for smaller size of transactions otherwise you may hit 'ASYNCHRONOUS BUSINESS FUNCTION Error', 'Commit Failed', 'Transaction Failed' or Web Client Exception in committing cache to DB.

In general, interactive application may make use of Cache (based on data structure of work file) whereas batch application will write work file. The main consideration is not to utilize too much cache though it may return better performance in small transactions.

Since most of JDE applications may have equivalent batch processes, you can utilize these batch applications when trying to process large number of records.

MBF Interactive Application Batch Application
XT4114Z1 P4112 - Inventory Issue R47121 - EDI Product Activity Data Edit/Create
XT4113Z1 P4113 - Inventory Transfers R47121 - EDI Product Activity Data Edit/Create
XT4114Z1 P4114 - Inventory Adjustments R47121 - EDI Product Activity Data Edit/Create
XT4116Z1 P4116 - Item Reclassification R47121 - EDI Product Activity Data Edit/Create
B4200310/B4200311/B4200312 P4210/P42101 - Sales Order Entry R47011 - EDI Inbound Purchase Order Edit/Create
N4200790 P4205 - Ship Confirmation R47500 - Inbound Transaction Processor
R42500 - Ship Confirm Batch Application
XT4311Z1/XT4311Z2 P4310 - Purchase Order Entry R4311Z1I - PO Unedited Transaction Inbound Processor
XT4312Z1/XT4314Z2 P4312 - PO Receipt R47071 - EDI Receiving Advice Edit/Create - Purchasing
XT4314ZN/XT4314Z2 P4314 - Voucher Match R470412 - EDI Inbound Invoice/Match to P.O. Edit/Create
X4801 P48013 - Work Order R4701ZI - SCP Inbound Work Orders
B03B0011 P03B11 - Invoice Entry
B03B0138/B03B0149 P03B102 - Receipt Entry
B0400047 P0411 - Voucher R470412 - EDI Inbound Invoice/Match to P.O. Edit/Create
R04110Z* - Voucher Batch Processor
B0400016 P0413M - A/P Manual Payment
B0900049 P0911 - Journal Entry R0911Z1 - Store and Forward Journal Entry Upload
N3002040 P3002 - Bill of Material R3002Z1I - Process Inbound Bill of Masterial
N3001780 P3003 - Routing R3003Z1I - Process Inbound Processing
B3101260 P31113 - Work Order Inventory Issues R31113Z1I - Inbound Inventory Issue Transaction
B3401360 P3411 - MRP/MPS Detail Message Revisions R3411 - MRP/MPS Detail Message Processing

Note: