You are on page 1of 10

E1: 42: MVC Architecture (Powerform) and Sales Order Entry (P42101) [ID

In this Document
Last Review Date
Instructions for the Reader
Troubleshooting Details
This document is to explain how MVC architecture (powerform) is implemented and how to debug in
hitting any issue in running a certain application which is written based on MVC architecture.
What is MVC Architecture?
View (Controller) Related (B4210400 to B4210899)
(Application) Controller (B4210900 - B4210999)
Model Related (Business Logic) - B4210000 to B4210399
Example of implementation:

Applies to:
JD Edwards EnterpriseOne CRM Sales Order Entry - Version: 8.11 Base and
later [Release: 8.11Base and later ]
JD Edwards EnterpriseOne Sales Order Entry - Version: 8.11 Base and later [Release:
8.11Base and later]
JD Edwards EnterpriseOne Sales Order Management - Version: 8.11 Base and later
[Release: 8.11Base and later]
JD Edwards EnterpriseOne Sales Order Processing - Version: 8.11 Base and later
[Release: 8.11Base and later]
Information in this document applies to any platform.

The audience for this note is someone with developer level knowledge.

Last Review Date
May 19, 2011

Instructions for the Reader
A Troubleshooting Guide is provided to assist in debugging a specific issue. When
possible, diagnostic tools are included in the document to assist in troubleshooting.

Troubleshooting Details

whenever a controller changes a view. and should not be relied upon in making purchasing decisions.log) may not describe information on controllers and wrappers (C business functions) so there may be possible difficulties in debugging. Similarly. and may not be incorporated into any contract. for example. by revealing areas that were previously hidden. views for displaying all or a portion of the data. As name implies though View. So this document is to serve how to debug application which is written MVC (and/or power form) architecture in EnterpriseOne. What is MVC Architecture? Model-View-Controller (MVC) is a classic design pattern often used by applications that need the ability to maintain multiple views of the same data.log and jasdebug. Model and Controllers are written in C and executed in logic server and detail information is not to be written into call object kernel log. or both. Whenever a controller changes a model's data or properties. The model manages the behavior and data of the application domain. responds to requests for information about its state (usually from the view). all dependent views are automatically updated. the view gets data from the underlying model to refresh itself. It is not a commitment to deliver any material. DISCLAIMER The following is intended for information purposes only. or view. The development. The reason is that logs (both jdedebug. and responds to instructions to change state (usually from the controller). and controllers for handling events that affect the model or view(s). and timing of any features or functionality described for Oracle's products remains at the sole discretion of Oracle. code.models for maintaining data. The MVC pattern hinges on a clean separation of objects into one of three categories .log (runtime debug log).This document is to explain how MVC architecture (powerform) is implemented and how to debug in hitting any issue in running a certain application which is written based on MVC architecture. or functionality. In event-driven systems. However how these behavior will be written well in jasdebug. • • • Model (data and its surrounding Business Logic) (Application) Controller View (controller) So routine to handle business data is: : E1 Form -> View (Controller) -> (Application) Controller -> Model (Business Logic) -> Master Business Function Events typically cause a controller to change a model. the . release.

An E1 form typically has a one to one correspondence with a display surface and knows how to render to it.Adapt is written at Grid Record Is Fetched event Confirm N/A Cancel Message V4211AC Manage Existing Order N/A Enter New Order .obsolete W42101B Confirm N/A Cancel B4210420 W42101B_InitOrderInquiryEX W42101C (D4210420A) Manage B4210420 Existing V4211AC_AdaptViewData Order (D4210420B) B4210410 . Multiple views can exist for a single model for different purposes.Main Container Implemented in Button Clicked Event . typically a user interface element. The controller receives input and initiates a response by making calls on model objects. Object References: View (Controller) Related (B4210400 to B4210899) Object Name P42101 Main Application Search and Container forms Form View Controller (DS) B4210450 W42101A_InitOrderInquiryEX W42101A (D4210421A) Manage B4210450 Pending V4211AC_AdaptPendingViewData Order (D4210420B) B4210440 .Init is written at Dialog Is Intialized . A controller accepts input from the user and instructs the model and E1 form to perform actions based on that input.obsolete (SO Create) B4210400 W42101D_CreateSalesOrder (D4210400A) W42101D (SO Confirm) B4210400 Enter New W42101D_ConfirmSalesOrder Order (D42100400B) (SO Submit) B4210400 SubmitSalesOrder (D4210400C) Business View Others Manage Pending Order Search F4211Z1 V4211Z1A .model notifies observers (usually views) when the information changes so that they can react. The view renders the model into a form suitable for interaction.

Sales B4210630 Order Line S421003A_SetSOLineDefaults N/A Default (D4210630A) Reusable Subform S421004B Sales Order N/A N/A Availability B4210640 .obsolete (D4210640A) Reusable Subform S421005D B4210650 N/A .Sales S421005D_CalculateOrderSummary Order (D4210650A) Summary Header Revision Button clicked or in exiting a certain form control these are to be called to display data BUTTON Initialize Detail and depends on user interface each BSFN can be called EVENT: Notified By Parent No viewer for this form. Calling External B4101220 CalculateAvailability BUTTON Recalculate .P421001 Sales Order Header P421002 Sales Order Detail P421003 Line Default Form P421004 Line Availability P421005 Order Summary W42101E Order N/A N/A Header Revision S421001E B4210610 Sales S421001E_InitializeSOHeader Order (D4210610C) N/A Header B4210610 .B4210620 Sales S421002C_SetSOLineErrors Order (D4210620A) N/A Detail B4210620 Reusable S4210620_SetPropertiesAndErrors Subform (D4210620A) B4210620 S421002C_GetItemInquiryMode (D4210620D) B4210620 S421002C_ValidateApprarelTemplate (D4210620E) S421003A .SOHeaderViewController Reusable (D4210610A) Subform B4210620 S421002C_InitializeSODetail (D4210620C) B4210620 S421002C_SOLineViewController (D4210620A) S421002C .

Reusable Subform S421006A .Sales Lean Order Header Header Form Reusable Subform N4210430 .N/A View Dispatcher it is used for form interconnect B4210660 S421006A_GetFreeGoodLines (D4210660A) N/A B4210670 S421007A_InitializeSOHeader (D4210670C) N/A B4210670 S42007A_SOHeaderViewController (D4210670A) B4210440 is made up of below N/A functions GetAgreementData (D4210440AJ) GetApparelMatrixData (D4210440AP) GetConfiguredItemData (D4210440D) GetCrossReferenceItemData (D4210440L) GetCustomerSegmentItemData (D4210440W) GetDisplayBeforeAcceptData (D4210440H) GetFreeGoodCatalogData (D4210440AC) GetInventoryCommitmentData (D4210440X) GetKitItemData (D4210440N) GetLocalizationData (D4210440AL) GetOrderAddressData (D4210440AF) GetOrderTemplatesData (D4210440R) GetP42101ProcessingOptions (D4210440AO) GetPrePaymentData (D4210440AI) GetPriceHistoryData (D4210440J) GetProductAllocationData (D4210440P) GetProductVariantsData (D4210440AK) GetRevisionHistoryData (D4210440AE) BUTTON Load Free Good Lines BUTTON Initialize Header Or exiting a certain form controls Client only NER so it behavior like interactive application ..Free P421006 Goods Free Goods Reusable Subform S421007A P421007 .

B4210999) .B4210440 GetSalesCommissionData (D4210440T) GetServiceLevelRuleData (D4210440AS) GetSupplyDemandData (D4210440AD) GetVertexGeocodeData (D4210440Z) GetVolumeBasedUpsellingData (D4210440U) PostProcessRateShoppingInfo (D4210440AN) PreProcessRateShoppingInfo (D4210440AM) PreprocWorkWithShipmentsByOrder (D4210440AA) ProcessAgreement (D4210440AJ) ProcessApparelMatrixData (D4210440AQ) ProcessCrossReferenceItems (D4210440M) ProcessInventoryCommitment (D4210440Y) ProcessOrderTemplates (D4210440S) ProcessLinePriceHistory (D4210440K) B4210440 ProcessProductAllocation (D4210440Q) ProcessProductCatalogLines (D4210440AB) ProcessProductVariants (D4210440AK) B4210440 ProcessSOConfiguredLine (D4210440E) ProcessSOKitLine (D4210440O) ProcessSupplyDemand (D4210440AG) ProcessVolumeBasedUpselling (D4210440V) UpdatePrePaymentFlag (D4210440AI) (Application) Controller (B4210900 .

Model Related (Business Logic) .h) as well as default view selections application and versions.B4210000 to B4210399 Object Name Scope of Interface B4210000 CancelSalesOrderEX CancelSalesOrderLineEX ClearSalesOrderEX ClearSalesOrderLineEX ConfirmSalesOrderEX CreateSalesOrderEX GetSalesOrderKeyEX Public GetSalesOrderLineEX GetSalesOrderPOEX GetSalesRelatedProcessVersionsEX ProcessSalesOrderHeaderEX ProcessSalesOrderLineEX SubmitSalesOrderEX UpdateSalesOrderLineEX "Package" B4210010 intended for CreateSalesOrderFunctions Sales Order Entry only "Package" B4210020 intended for ProcessSalesOrderHeaderFunctions Sales Order Entry only "Package" B4210030 intended for ProcessSalesOrderLineFunctions Sales Order Entry only "Package" B4210040 intended for ConfirmSalesOrderFunctions Sales Order Entry only Description Sales Order Entry Public Interface and wrappers Order Level interface and implemenation Header Level interface and implementation Line Level interface and implementation Order confirmation interface and implementation Comments This is a wrapper function only and there is no business logic implemented here . SalesOrderApplCtrlEX Interactive mode SalesOrderApplCtrlStandaloneEX and standalone mode Comments The Sales Order Action is defined in the Header File (b4210900.Application PopSalesOrderViewStackItemEx Controller.Object Name Description Sales Order Entry B4210900 .

B4210050 SubmitSalesOrderFunctions B4210060 CancelSalesOrderFunctions B4210070 ClearSalesOrderFunctions "Package" intended for Sales Order Entry only "Package" intended for Sales Order Entry only "Package" intended for Sales Order Entry only "Package" B4210080 intended for DefaultHeaderContactInformationE Sales Order ValidateContactIDRetrieveAlphaE Entry only B4210090 CRMUserReservedDataProcessing "Package" intended for Sales Order Entry only B4210100 PopulateF4201OrderTypeIndicator "Package" intended for Sales Order Entry only "Utility Package" B4210390 .intended for SalesOrderModelCommonFunctions Sales Order Entry only Order submission interface and implementation Order Cancellation interface and implementation Order Cleanup interface and implementation Contact defaulting and validation interface and implementation CRM User Reserved fields interface and implementation Order type indicator interface and implementation Sales Order Model and common function for interface and implementation Example of implementation: A. B4210010 and B4210020 Master Function is to be called by this common function . Sales Order Header • • • • S421007A for user interface (View) B4210670 .SalesOrderApplCtrlEX (Model) B4210000.S421007A_SOHeaderViewController (Controller) B4210900 .

log (namely call object kernel log) does not contain information on wrapper functions For this example. B4210030 which is calling B4204200 .ProcessSOHeader then eventually B4200310 F4211FSBeginDoc gets called (which validate header information and create cache for header) B. (View for Detail) B4210620 is made up of: • • • • • • S421002C_InitializeSODetail (S421002C Initialize Sales Order Detail) S421002C_SOLineViewController (S421002C Sales Order Line View Controller) S421002C_ValidateApprarelTemplate (S421002C Validate Apparel Template) S421002C_GetItemInquiryMode (S421002C Get Item Inquiry Mode) S421002C_SetPropertiesAndErros (S421002C Set Sales Order Line Properties and Err) S421002C_SetSOLineErrors (S421002C Set Sales Order Line Errors) B. Sales Order Detail • • • • • S421002C for user interface (View) B4210620 . A.S421002C_SOLineViewController (Controller) B4210900. Then B4204200 is calling: • ProcessSOHeader (Process SO Header Wrapper) .SalesOrderApplCtrlEX (Model) B4210000.h contains all the definition on behavior Call object kernel may not show how parameters are handled through View. Controller and Model For Sales Order Entry of P42101.• which is calling B4204200 . (View for Header) B4210670 contains below 2 BSFNs: • • S421007A_InitializeSoHeader (S421007A Initialize Sales Order Header) S421007A_SOHeaderViewController (S421007A Sales Order Header View Controller) A1.ProcessSODetail then B4200310/F4200311 F4211FSEditLine gets called (which validate detail information and create cache for detail) Note: • • • • In jdedebug. B4210000 and B4204200 won't be appeared B4210000. B4210900.

Master Business Function for Sales Order (B4200310/B4200311) is made up of: • • • • • • F4211FSBeginDoc (F4211FSBeginDocument) F4211FSEditLinePreProcess (F4211 Pre Process Values for Edit Line) F4211FSEditLine (F4211 Edit Line) which is calling B4200311 F4211SOEInternalFunctions (F4211 Sales Order Entry Internal Functions) F4211FSEditDoc (F4211 Edit Doc) F4211FSEndDoc (F4211 End Document) F4211ClearWorkFile (F4211 Delete Work File) So relationship between Model and Master Business Functions are: • • • • • ProcessSOHeader -> F4211FSBeginDoc ProcessSODetail -> F4211FSEditLinePreProcess and F4211FSEditLine CommitSalesOrder -> F4211FSEndDoc) ClearSOWorkFile -> F4211ClearWorkFile TPPostCommit (Auto Rollback or release record reservation and so on) .• • • • • ProcessSODetail (Process SO Detail Wrapper) ProcessConfigurator (Process Configurator Wrapper) CommitSalesOrder (Commit Sales Order Wrapper) ClearSOWorkFile (Clear Work File Wrapper) TPPostCommit (TP Post Commit Wrapper) C.