How to Implement User Reserved Column in P4210

Title: How to Implement User Reserved Columns in P4210 (Sales Order Entry)

Abstract: This document explains how User Reserved Columns can be added into F4211 – Sales Order Detail File through P4210 – Sales Order Entry.

Caution: This document may contain information, software, products or services which are not supported by Oracle Support Services and are being provided ‘as is’ without warranty. Please refer to the following site for My Oracle Support Terms of Use: https://support.oracle.com/CSP/ui/TermsOfUse.html


Table of Contents

Introduction
User Interface

Action Plan

Example of Implementation

 


Introduction

Before implementing, try to understand the logic on how the system handles Sales Order Data. In adding/changing Sales Order, header and detail data can be either being held through Cache or through Work File.

 

Currently there are 3 available Work File,

 

Note: There is F42UI02 but it is just data structure not a logical data repository

 

Currently a Table F42UI12 contains User Reserved Columns. So we are going to make use of existing Function/Data Structure.

 

Before implementing, be sure to understand the detailed functionality of the master business function (BSFN) in Sales Order Entry.

 

In the EnterpriseOne Distribution Module, major application handles data through Cache (or Work File for equivalent Batch Application).

 

P4210 handles Sales Order Header/Detail Data as follows :-

  1. Call F4211FSBeginDoc to validate and create cache for Sales Order Header
  2. Call F4211FSEditLinePreProcess to handle additional columns which F4211FSEditLine cannot handle (Note that the original purpose of this BSFN is to handle Transportation functionality in Sales Order Entry application)
  3. Call F4211FSEditLine to validate Sales Order Detail Information and create it’s cache
  4. (Internal) F4211FSEditLine is calling F4211SOEInternalFunctions which is actual code which handles Sales Order Detail Cache
  5. Call F4211EditDoc to compare/compute header cache and detail cache
  6. Call F4211FSEndDoc to commit Header/Detail Cache to tables F4201 – Sales Order Header File and F4211 – Sales Order Detail File

 

For this example, we may make use of existing BSFN (without modifying any Data Structure and BSFN) but the same implementation can be done by altering F4211FSEditLine (with Data Structure of D4200310F) by adding the User Reserved Columns in the Data Structure and F42UI11. However this is not recommended because a  as change in the data structure may cause ‘Memory Related Issues’ across systems.

 

Detail Information is handled by BSFN B4200311 (same configuration can be found, XT4311Z2 for Purchase Order Entry, XT4312Z2 for Purchase Order Receipt and XT4314Z2 for Voucher Match Application)

 

F4211FSEditLine does not have User Reserved Columns as members of data structure and we can observe that F42UI12 (Extension of F42UI11) contains User Reserved Columns. So we need to make use of existing cache or workfile to fulfill this implementation.

 

Back to Top

User Interface

This will describe simple and standard functionality based on Adding a new Sales Order.

1.    Launch ‘Sales Order Revision’ P4210 – W4210A – [Sales Order Revision]

2.    In Exiting Grid Row store User Input value into Cache (Work File)

 

Action Plan

 

  1. Add User Reserved Columns in Business View V4211C – Sales Order Detail
  2. Unhide User Reserved Columns in Grid of W4211A form
  3. Enable existing code to handle User Reserved Columns to BSFN F4211FSEditLinePreProcess
  4. Handle Data in Update Mode
  5. Test change made

 

 

Possible Implementation

  1. Verify existing Work Files for Sales Order Detail File

è Table F42UI12 contains User Reserved Columns

è Data Structure D4200310J contains these columns

è So verify which business function uses the data structure

  1. Add/Select User Reserved Columns from Business ViewV4211C

 

 

  1. Verify Data Dictionary item for User Reserved Columns

 

 

  1. After changing properties of DD Item Columns move it to proper location

 

àNote that User Date (URDT) and User Reference (URRF) is a Data Dictionary item not Business View Column

àSince all the data are being handled through Master BSFN, using Data Dictionary Item may be a better option to implement

  1. Verify/Enable Disabled Code from (Grid) ‘Row Exit & Changed – Asynch’

è Above routine creates another set of cache (F42UI12)

è Source of Data will be handled in calling F4211FSEditLine

è Currently GC Source of Data = “7” is not utilized

è Enable block of codes highlighted above

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Verify existing code in B4200311.c to determine how it creates cache

 

***  Break In Code ***

 

   if((lpDS->cCMRecdWrittenToWF  !=_J('1')) &&

      (lpDS->cCMRecdWrittenToWF  !=_J('3')) &&

      (lpDS->cCMRecdWrittenToWF  !=_J('5')) &&

      ((lpDS->cWKSourceOfData != _J('7')) ||

      ((lpDS->cWKSourceOfData == _J('7')) &&

      (MathZeroTest(&lpDS->mnSODRelatedJobNumber))))) /* Based on GC Value assigne it comes to this routine */

   {

      if (lpDS->cCMWriteToWFFlag == _J('2'))  /* cCMWrieteToWFFlag = 2 is to be implemented only when BSFN gets called in Batch Application */

      {

         if((lpds4200310B->cCSSRecdWrittenToWF == _J('1')) &&

            ((lpdsF42UI12->zdffg1 != _J(' '))

            || (lpdsF42UI12->zdffg1 != _J('\0'))

            || (lpdsF42UI12->zdffg1 != _J('0'))))

         {

            lpdsF42UI12->zdffg1 = _J('1');

         }

      }

      idReturnAPIValue = F42UI12_Insert(lpds4200310B->lpdsF42UI12DAO,lpdsF42UI12,

         szErrorMessageID); /* Routine to write cache F42UI12 */

     

      if(idReturnAPIValue != ER_SUCCESS)

      {

         memset((void *)&dsDE0022, (int)_J('\0'), sizeof(dsDE0022));

         jdeStrcpy((JCHAR *)dsDE0022.szDescription, (const JCHAR *)_J("F42UI12"));

         jdeSetGBRErrorSubText(lpBhvrCom, lpVoid, (ID)0,

            szErrorMessageID, &dsDE0022);

        

      }

   }

   else 

   {

      if (lpds4200310B->cByPassOrPurge != _J('1'))

      {

        

         idReturnAPIValue = F42UI12Index2_UpdateKeyed(lpds4200310B->lpdsF42UI12DAO,3,

            lpDS->szCMComputerID,

            lpDS->mnCMJobNo,lpDS->mnCMLineNo,lpdsF42UI12,szErrorMessageID);

        

         if (idReturnAPIValue != ER_SUCCESS)

         {

            memset((void *)&dsDE0022, (int)_J('\0'), sizeof(dsDE0022));

            jdeStrcpy((JCHAR *)dsDE0022.szDescription, (const JCHAR *)_J("F42UI11"));

            jdeSetGBRErrorSubText(lpBhvrCom, lpVoid, (ID)0,

               szErrorMessageID, &dsDE0022);

         }

      }

      else

      {

      /*---------------------------------------------------------------------

      * The line is being bypassed, so delete it from the  work file now.

         *----------------------------------------------------------------------*/

         idReturnAPIValue = F42UI12Index2_DeleteKeyed(lpds4200310B->lpdsF42UI12DAO,3,

            lpDS->szCMComputerID,

            lpDS->mnCMJobNo,lpDS->mnCMLineNo,szErrorMessageID);

        

         if (idReturnAPIValue != ER_SUCCESS)

         {

            memset((void *)&dsDE0022, (int)_J('\0'), sizeof(dsDE0022));

            jdeStrcpy((JCHAR *)dsDE0022.szDescription, (const JCHAR *)_J("F42UI12"));

            jdeSetGBRErrorSubText(lpBhvrCom, lpVoid, (ID)0,

               szErrorMessageID, &dsDE0022);

         }

      }

   }

 

***  Break In Code ***

 

 

  1. Test - Enter User Reserved Columns

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Verify that GC User Reserved Columns are commited to table F4211

 

  1. To handle data from Update Mode

àOr this can be implemented with other method (Table I/O or calling BSFN)

Objects Affected

 

 

 

Back to Top

 

E1: FDA: Object Modification Recommendations: Interactive Applications (Doc ID 626586.1) 

E1: FDA: Object Modification Recommendations: Event Rules (Doc ID 626585.1) 

E1: TDA: Object Modification Recommendations: Business Views (Doc ID 626582.1) 

 

Back to Top