Title: How to Implement User Reserved columns in P4310
Purchase Order Entry
Abstract: This document explains
how User Reserved Columns can be implemented into F4311 Purchase Order Detail
File through P4310 Purchase 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.
Introduction
User Interface
Action Plan
Example of Implementation
Before you
take any action make sure all the information is fully understood including the
consequences of the change to be made.
P4310
Purchase Order Entry handles Header/Detail data as below,
- F4311InitializeCaching: This function can be
called in other method of Purchase Order Creation. At the end of
transaction F4311TerminateCaching has to be called
- F4311BeginDoc: Validate Header information in
relation with Supplier or Order itself and store it into Header Cache
F4301Z
- F4311EditLine: Validate Detail information in
relation with Item or related information and write it into Detail Cache
F4311Z. Actual validation and writing its of the cache is done through
internal business function (BSFN) F4311EditLineInternalFunctions
(XT4311Z2).
- F4311EditLineInternalFunctions (XT4311Z2.c): Handles
Detail Data and create cache.If there is any
change in Grid (or Purchase Order Detail) this BSFN needs adjusting
accordingly
- F4311EditDoc: Most of transactions which are
made up of Header and Detail relation EditDoc
will compare detail with header. For example, the sum of detail has to be
header
- F4311EndDoc: Last validation and including
committing cache to DB
- F4311ClearWorkFiles: This function is called
by F4311EndDoc to close/clear cache created during transaction if
Transaction is not closed before F4311EndDoc is called. But if transaction
is cancelled this function is called directly from application P4310
- F4311TerminateCaching: Since caching is
initialized it has to be terminated accordingly. This BSFN corresponds
with F4311InitializeCaching
Before Start
- Back up all the objects that may need to be
changed
- Make clear documentation on changes made
Before and After
- If there is any workaround for daily business,
implement workaround rather than add additional data in User Reserved
Columns
- Check business View in Grid of W4310A
- Check Data Structure or Work File whether it
contains User Reserved Columns from F4301Z and F4311Z
- Check whether XT4311Z2 contains logic to
handle User Reserved Columns either into Cache or into Work File
- Set proper action plan with object to be
changed and object to be maintained
User Interface
User may enter User Reserved
Columns in Grid of W4310A then the information has to be delivered to
F4311EditLine to create Purchase Order Detail Cache. This document covers how User Entered Values are handled in
P4310.
Action Plan
- Verify
whether existing Work File or data structure can hold User Reserved
Columns for Purchase Order Detail ΰ
Check XT4311Z1.h and F4311Z2
- Verify
that exiting Business View for PO Detail file have User Reserved Columns ΰ Go
to Business View Design and check it
- Determine
whether Data Structure or Business Function has to be changed or not ΰ
Determine Data Structure which is used by F4311EditLine which has been
called application P4310 in exiting Row
- Verify
that existing logic does not handle/utilize User Reserved Columns ΰ through
event rule check all the user reserved columns. During update mode BC
User Reserved Columns will be handled by BSFN F4311BeginDoc
- Verify
that equivalent batch process (R4311Z1I - PO Unedited Transaction Inbound
Processor) then determine whether to make use of this functionality
- Once
above items are clarified, implement F4311EditLine to hold Grid Column
User Reserved Columns as all others will be taken care of master BSFN
Possible
Implementation
- Purchase
Order Revision form is made up of Header/Detail form so the functionality
we are implementing is to be handled by Grid control which BSVW is V4311B
Purchase Order Detail Update POE

- User
Reserved Columns are not members of BSVW V4311B
- So
there has to be routine during Update Mode
- To handle
BC value select User Reserved Columns and generate BSVW again (or
re-create Typedef for BSVW B4311B)

- Verify
that existing Grid Control of W4311A [Oder Detail] form does not contain
User Reserved Columns

- So
additional columns are to be added to deal with user input data

- For
testing URDT and URRF are added through Data Dictionary Item

- Implemented
additional GC Columns to hold GC Variable to F4311EditLine

- User
Reserved Columns (of Grid Column Control) are mapped
- Verify
that Data Structure DF4311Z1B has User Reserved Columns as a member of
Data Structure. And work file F4311Z Purchase Order Generator
File has User Reserved Columns as columns


- Data is
inserted into F4311 Sales Order Detail File
- To handle User Reserved Columns in Update
Mode



- Data
is added/updated correctly
- Code
analysis
- Data
Structure in writing Work file F4311Z. Data Structure pointer
*dsFetchFromF4311Z
*** Break In Code of XT4311Z2 ***
ID IXTF4311Z2_WriteToDetailWorkFile(
LPBHVRCOM
lpBhvrCom,
LPVOID
lpVoid,
HUSER
hUser,
LPDSDF4311Z1B lpDS,
HREQUEST hRequestF4311Z,
F4311Z
*dsFetchFromF4311Z,
DSD4302180G *dsPODetailCache);
*** Break In code ***
*** Break In Code of XT4311Z2 continued ***
if
(IsStringBlank(lpDS->szUserReservedCode))
{
jdeStrcpy((JCHAR *)(&lpDS->szUserReservedCode),
(const JCHAR *)(lpdsF4311ZWorkFile->pwurcd));
}
if
(IsJDEDATENull(&lpDS->jdUserReservedDate))
{
memcpy((void
*)(&lpDS->jdUserReservedDate),
(const void *)(&lpdsF4311ZWorkFile->pwurdt),
sizeof(JDEDATE));
}
if (
(!memcmp((void *)&lpDS->mnUserReservedAmount,
(void
*)&mnNullMathNumeric,
sizeof(MATH_NUMERIC))) )
{
MathCopy(&lpDS->mnUserReservedAmount,
&lpdsF4311ZWorkFile->pwurat);
}
if (
(!memcmp((void
*)&lpDS->mnUserReservedNumber,
(void
*)&mnNullMathNumeric,
sizeof(MATH_NUMERIC))) )
{
MathCopy(&lpDS->mnUserReservedNumber,
&lpdsF4311ZWorkFile->pwurab);
}
*** Break In Code of ***
- Hold
User-input value into Data structure dsFetchFromF4311Z
*** Break In Code of XT4311Z2 continued ***
jdeStrcpy((JCHAR
*)(dsFetchFromF4311Z->pwurcd),
(const
JCHAR *)(lpDS->szUserReservedCode));
memcpy((void
*)(&dsFetchFromF4311Z->pwurdt),
(const
void *)(&lpDS->jdUserReservedDate),
sizeof(JDEDATE));
MathCopy(&dsFetchFromF4311Z->pwurat,
&lpDS->mnUserReservedAmount);
MathCopy(&dsFetchFromF4311Z->pwurab,
&lpDS->mnUserReservedNumber);
jdeStrcpy((JCHAR
*)(dsFetchFromF4311Z->pwurrf),
(const
JCHAR *)(lpDS->szUserReservedReference));
*** Break In Code ***
Note: Above code is standard code so do not modify any of above codes
Note: Above code is based on Unicode
Note: This code does imply other application other than P4310
Object Affected
n Business View V4311B
n Interactive Application P4310
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)