Error 0252 (Invalid Extended Price) Error Clarification

Purpose of Document

Purpose of this document is to explain the routine of error 0252 (Invalid Extended Price) through business function B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended) in Inventory Transaction, Procurement and Sales Order Processing, which shall cover:

Table of Contents:

B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verity Unit Cost vs Extended)

Structure Member Name Data Type Req I/O Alias Others
mnTransactionQuantity MATH_NUMERIC Y I/O TRQT Transaction Quantity
bIsTRQTZero
mnTransactionUnitCost MATH_NUMERIC Y I/O UNCS Amount - Unit Cost
bIsUNCSZero
mnExtendedCost MATH_NUMERIC Y I/O PAID Amount - Extended Cost/Price
bIsPAIDZero
mnPrimaryUnitCost MATH_NUMERIC N O PRRC Amount - Primary Unit Cost
mnConversionFactorFromToPrimry MATH_NUMERIC N O CONV Conversion Factor From to Primary
mnConversionFactorPriceToPrim MATH_NUMERIC Y I CONV Conversion Factor Price To Primary
cCurrencyControl CHAR Y I CRYR Currency Conversion Y/N/Z
This flag is to indicate whether to compute cost for foreign amount.
Default 'N' (different from value from F0009.DOT1 value)
Y when cCalculateForeignAmount is IN ('1', 'y', 'Y')
mnForeignUnitCost MATH_NUMERIC N I FCSTR Amount - foreign Unit Cost Received
bIsFCSTRZero
mnForeignExtendedCost MATH_NUMERIC N I FOPNR Foreign Extended Cost
bIsFOPNRZero
mnPrimaryTransactionQuantity MATH_NUMERIC N I QAVAL Primary Transaction Quantity
mnQuantityConvertedToPrimary MATH_NUMERIC N I QTY Quantity Converted To Primary

The following edits will be performed.
Check input parameters:


Computation Detail:

Case mnTransactionUnitCost mnTransactionQuantity mnExtendedCost Action to Take
1 <> 0 <> 0 <> 0
  • Make sure they are balanced each other
  • (mnTransactionUnitCost / mnConversionFactorFromToPrimary) * mnPrimaryTransactionQuantity = mnExtendedCost
  • If above it not balanced then,
    • mnExtendedCost / mnPrimaryTransactionQuantity = mnTransactionUnitcost / mnConversionFactorFromToPrimary
    • If above is not in balance then set error '0252'
  • Note that the currency value will only be for Extended Cost
2 <> 0 <> 0 = 0
  • Calculate mnExtendedCost
    • mnExtendedCost = (mnTransactionUnitcost / mnConversionFacdtorFromToPrimary) * mnQuantityConvrtedToPrimary
    • (for currency) mnForeignExtendedCost = (mnForeignUnitCost / mnConversionFactorFromToPrimary) / mnQuantityConvertedToPrimary
Note: ConversionFactorFromToPrimry should be used instead of ConversionFactorFromPriceToPrimary; since all the transaction extended cost is based on transaction uom to primary uom
3 <> 0 = 0 = 0 Set Error '0003'
4 = 0 <> 0 <> 0
  • Calculate mnTransactionUnitCost
    • mnTransactionUnitCost = {(mnExtendedCost/mnTransactionQuantity) /mnConversionFactorFromToPrimry} * mnConversionFactorPriceToPrim
    • (for currency) mnForeignUnitCost = {(mnForeignExtendedCost / mnTransactionQuantity) / mnConversionFactorFromToPrimry} * mnConversionFactorPriceToPrim
5 <> 0 = 0 = 0 Set Error '0003'
6 = 0 = 0 = 0 Set Error '0003'

Note:


Error 0252 detail:

Extended Price Invalid

Cause. . . . . The Extended Price entered is incorrect. The Extended Price
should equal the number of units multiplied by the unit price.
Resolution . . Correct the Extended Price or blank out your entry and let the
system calculate the Extended Price.



Prototype of I4100030_Calculate ()
Prototype of calculation is,

void I4100030_Calculate ( LPBHVRCOM lpBhvrCom, LPVOID lpVoid,
LPMATH_NUMERIC lpmnDiv1,
LPMATH_NUMERIC lpmnDiv2,
LPMATH_NUMERIC lpmnDiv3,
LPMATH_NUMERIC lpmnMult,
LPMATH_NUMERIC lpmnResult,
LPMATH_NUMERIC lpmnCurrency,
JCHAR cUnitCost ) /* to indicate whether lpmnResult is Unit Cost or not. If value is 1 then display decimal is same with display decimal of UNCS */
{

MathDivide ( &mnDivResult, &mnRemainder, lpmnDiv1, lpmnDiv2,&nDecimals, &nRoundFlag ) ; /* &mnDivResult = (lpmnDiv1 / lpmnDiv2) + &mnRemainder */
MathDivide ( &mnDivResult, &mnRemainder, &mnDivResult, lpmnDiv3, &nDecimals, &nRoundFlag ) ; /* &mnDivResult = (mnDivResult/lpmnDiv3) + &mnRemainder */
MathMultiply ( lpmnResult, &mnDivResult, lpmnMult ) ; /* lpmnResult = &mnDivResult * lpmnMult */
}

Note:



Represenation of Display Decimal
Depends on the last parameter cUnitCost

cUnitCost Display Decimal
1 Indicate return value is Unit Cost Value. Display Decimal is same with DD display decimal for UNCS
0 & (Multi-Currency) For foreign extended amount set currency display decimal defined at F0013
0 & Non-currency Display Decimal of DD Alias PAID




Detail computation routine:
Case 1: (quantity, unit cost and extended cost)
I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnTransactionUnitCost, /* (Div1) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div2) */
&mnOne, /* (Div3) */
&lpDS->mnPrimaryTransactionQuantity, /* (multi) */
&mnCost1, /* (result) */
&mnOne, /* (currency) Y or Z for foreign amount computation */
_J('0') ) ; /* (cUnitCost) */

1st. mnDivResult = mnTransactionUnitCost/mnConversionFactorFromToPrimry
2nd. mnDivResult = (mnTransactionUnitCost/mnConversionFactorFromToPrimry)/1
3rd. mnCost1 = {(mnTransactionUnitCost/mnConversionFactorFromToPrimry)/1} * mnPrimaryTransactionQuantity = (mnTransactionUnitCost / mnConversionFactorFromToPrimary) * mnPrimaryTransactionQuantity


Is mnCost1 = mnExtendedCost?


I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnExtendedCost, /* (Div1) */
&lpDS->mnPrimaryTransactionQuantity, /* (Div2) */
&mnOne, /* (Div3) */
&mnOne, /* (Multi) */
&mnCost1, /* (result) */
&mnOne, /* (currency) */
_J('1') ) ; /* (cUnitCost) */

1st. mnDivResult = mnExtendedCost / mnPrimaryTransactionQuantity
2nd. mnDivResult = (mnExtendedCost / mnPrimaryTransactionQuantity)/1
3rd. mnCost1 = {(mnExtendedCost / mnPrimaryTransactionQuantity)/1} * 1 = mnExtendedCost / mnPrimaryTransactionQuantity



I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnTransactionUnitCost, /* (Div1) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div2) */
&mnOne, /* (Div3) */
&mnOne, /* (multi) */
&mnCost2, /* (result) */
&mnZero, /* (currency) */
_J('1') ) ; /* (cUnitCost) */

4th. mnDivResult = mnTransactionUnitCost/mnConversionFactorFromToPrimry
5th. mnDivResult = (mnTransactionUnitCost/mnConversionFactorFromToPrimry )/ 1
6th. mnCost2 = {(mnTransactionUnitCost/mnConversionFactorFromToPrimry )/ 1} * 1 = mnTransactionUnitcost / mnConversionFactorFromToPrimary


If mnCost1 <> mnCost2, set error '0252' which is common error in Inventory Transaction.

Case 4: (quantity and extended cost are specified)
Extended cost need to be rounded before calculating the unit cost
I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnExtendedCost, /* (Div1) */
&lpDS->mnTransactionQuantity, /* (Div2) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div3) */
&lpDS->mnConversionFactorPriceToPrim, /* (Multi) */
&lpDS->mnTransactionUnitCost, /* (result) */
&mnZero, /* (currency) */
_J('1') ) ; /* (cUnitCost) */

1st. mnDivResult = mnExtendedCost/mnTransactionQuantity
2nd. mnDivResult = (mnExtendedCost/mnTransactionQuantity) / mnConversionFactorFromToPrimry
3rd. mnTransactionUnitCost = {(mnExtendedCost/mnTransactionQuantity) / mnConversionFactorFromToPrimry} * mnConversionFactorPriceToPrim


(Compute Foreign Amount)
I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnForeignExtendedCost, /* (Div1) */
&lpDS->mnTransactionQuantity, /* (Div2) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div3) */
&lpDS->mnConversionFactorPriceToPrim, /* (multi) */
&lpDS->mnForeignUnitCost, /* (result) */
&mnZero, /* (currency) */
_J('1') ) ; /* (cUnitCost) */

1st. mnDivResult = mnForeignExtendedCost / mnTransactionQuantity
2nd. mnDivResult = (mnForeignExtendedCost / mnTransactionQuantity) / mnConversionFactorFromToPrimry
3rd. mnForeignUnitCost = {(mnForeignExtendedCost / mnTransactionQuantity) / mnConversionFactorFromToPrimry} * mnConversionFactorPriceToPrim



Case 2: (quantity and unit cost are specified)
I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnTransactionUnitCost, /* (Div1) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div2) */
&mnOne, /* (Div3) */
&lpDS->mnQuantityConvertedToPrimary, /* (multi) */
&lpDS->mnExtendedCost, /* (result) */
&mnOne, /* (currency) */
_J('0') ) ; /* (cUnitCost) */

1st. mnDivResult = mnTransactionUnitCost/mnConversionFactorFromToPrimry
2nd. mnDivResult = (mnTransactionUnitCost/mnConversionFactorFromToPrimry) / 1
3rd. mnExtendedCost = {(mnTransactionUnitCost/mnConversionFactorFromToPrimry) / 1} * mnQuantityConvertedToPrimary = (mnTransactionUnitcost / mnConversionFacdtorFromToPrimary) * mnQuantityConvrtedToPrimary



I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnForeignUnitCost, /* (Div1) */
&lpDS->mnConversionFactorFromToPrimry, /* (Div2) */
&mnOne, /* (Div3) */
&lpDS->mnQuantityConvertedToPrimary, /* (multi) */
&lpDS->mnForeignExtendedCost, /* (result) */
&mnForOne, /* (currency) */
_J('0') ) ; /* (cUnitCost) */

1st. mnDivResult = mnForeignUnitCost/mnConversionFactorFromToPrimry
2nd. mnDivResult = (mnForeignUnitCost/mnConversionFactorFromToPrimry) / 1
3rd. mnForeignExtendedCost = {(mnForeignUnitCost/mnConversionFactorFromToPrimry) / 1}* mnQuantityConvertedToPrimary = (mnForeignUnitCost / mnConversionFactorFromToPrimary) / mnQuantityConvertedToPrimary


then validate again:
I4100030_Calculate ( lpBhvrCom, lpVoid,
&lpDS->mnTransactionUnitCost,
&lpDS->mnConversionFactorFromToPrimry,
&mnOne,
&mnOne,
&lpDS->mnPrimaryUnitCost,
&mnZero,
_J('1') ) ;

1st. mnDivResult = mnTransactionUnitCost / mnConversionFactorFromToPrimry
2nd. mnDivResult = (mnTransactionUnitCost / mnConversionFactorFromToPrimry) / 1
3rd. mnPrimaryUnitCost = {(mnTransactionUnitCost / mnConversionFactorFromToPrimry) / 1} * 1 = mnTransactionUnitCost / mnConversionFactorFromToPrimary


If mnPrimaryUnitCost <> mnTransactionUnitCost / mnConversionFactorFromToPrimary then set error 0252


XT4111Z1 and B4100030

All inventory transaction calls XT4111Z1 to validate inventory and create its cache (F41UI11) and XT4111Z1 calls B4100030 to validate. As written at <Document 1276239.1> - E1: 41: Inventory Transaction MBF XT4111Z1 Clarification, all inventory transaction calls B4100030 (refer to parameter cCalculateQtyCostExt in section "How data gets validated?" in this document) except for R41413 (Cycle Count Update) and R41610 (Tag Inventory Update).

Simplified routine for IX4111Z1_CalculateUnitCost(..)


Typical Implementation (Example of P4205 Shipment Confirmation):

This section is to explain what we need to check in hitting error '0252' during Shipment Confirmation.

P4205 - Shipment Confirmation
|--- N4200790 - F42UI05EditLine (F42UI05 Edit Line)
|--- XT4111Z1 - F4111EditLine (F4111 Edit Line)
|--- B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended)

Note:


Direct calling B4100030 (not through XT4111Z1)
As explained above B4100030 is normally getting called by Inventory Transaction Master Business Function XT4111Z1 except for PO receipt transaction. B4100030 is to be called only when user made change in quantity, unit cost and/or extended cost during PO Receipt.

cf., B4002000 - ComputeUnitOrExtendedAmount (Order, Calculate Unit or Extended Amount) which can be called across Order Processing. This business function also can issue error '0252 - Extended Price Invalid' or '4377 - Invalid Input Parameter'. Currently this supports different cModeOfProcessing (1 to compute Unit Price, 2 to compute extended amount and 3 to validate quantity, Unit Price and Extended Amount).

For this example, XT4312Z2 can be called either from PO Receipt (e.g., P4312) or Receipt Routing (P43250). In case the outcome between 2 transactions are different from each other, check whether all the parameters are assigned same or not

P4312 - Purchase Order Receipt
(Row is Exited/Changed Asynch)
|--- XT4312Z1 - F4312EditLine (F43121 Edit Line) which is XT4312Z2 - F4312EditLineInternalFunctions (F4312 Edit Line Internal Functions)
|--- IXT4312Z1_EL_F4111EditLine (Internal function before it calls F4111EditLine so PO receipt routine is different from other inventory transactions)
|--- IXT4312Z1_EL_AssignQtyAmtCst (Internal function to compute amount and cost)
|--- IXT4312Z1_EL_CalculateAmounts (before calling XT4111Z1 so quantity, unit cost and extended cost value for XT4111Z1 and B4100030 are identical)
|--- VerifyQuantityCostExtended


List of applications which can issue error '0252'
Applications listed below can issue error code '0252'. In case the error message is coming from P4312 or P43250 check F4312EditLine, F4111EditLine and B400030 otherwise check F4111EditLine to determine the cause of your issue.




Considerations




Case Study

As described above B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended) can be called either through F4111EditLine or F4312EditLine. So below example may enable you to debug your issue in running any Inventory Transaction.

Example 1:
In running P49640 (Transportation Load Confirmation) user hits error '0252'.

To debug this issue better,

1. Capture/trace CallObject Kernel Log (namely, jdedebug.log), which reads,

P49640 (Transportation Load Confirmation)
|--- N4900780 - LoadConfirmEditLine (Load Confirm Edit Line)
|--- XT4111Z1 - F4111EditLine (F4111 Edit Line)
|--- B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended)


2. Detail parameters for the issue

Calling Business function LoadConfirmEditLine from Level 1 for JDE. Application Name [P49640], Version [ZJDE0001] (BSFNLevel = 1)
...
IN->[ 15] mnQuantityTransaction [5000.0000]
IN->[ 16] szUnitOfMeasureTransact [LT] *** ORCL: 3 parameters in F4111EditLine (mnTransactionUnitCost, mnTransactionUnitCost and mnTransactionExtendedCost are computed by LoadConfirmEditLine ***
...
Calling Business function F4111EditLine from LoadConfirmEditLine for JDE. Application Name [P49640], Version [ZJDE0001] (BSFNLevel = 2)
...
IN->[ 7] szTransactionUOM [LT]
IN->[ 8] mnTransactionQuantity [-5000.0000]
IN->[ 9] mnTransactionUnitCost [83.0200] *** ORCL: This parameter is retrieved/computed through LoadConfirmEditLine ***
IN->[ 10] mnTransactionExtendedCost [0]
...
IN->[ 49] szPriceCostUOM []
IN->[ 50] mnConversionFactorFromToPrimry [0]
IN->[ 51] mnConversionFactorPriceToPrim [0]
IN->[ 52] mnTransactionForeignUnitCost [0]
IN->[ 53] mnTransactionForeignExtendCost [0]
...
Calling Business function VerifyQuantityCostExtended from F4111EditLine for JDE. Application Name [P49640], Version [ZJDE0001] (BSFNLevel = 3)
IN->[ 1] mnTransactionQuantity [-15000] *** ORCL: For this example, each compartments can hold 5000 LT and this routine is combined figure ***
IN->[ 2] mnTransactionUnitCost [83.020000000000000000] *** ORCL: F4111EditLine.mnTransactionUnitCost which is assigned by LoadConfirmEditLine ***
IN->[ 3] mnExtendedCost [-1260900] *** ORCL: this value is computed through F4111EditLine routine ***
IN->[ 4] mnPrimaryUnitCost [0]
IN->[ 5] mnConversionFactorFromToPrimry [1] *** ORCL: this value are handled by F4111EditLine ***
IN->[ 6] mnConversionFactorPriceToPrim [1] *** ORCL: this value are handled by F4111EditLine ***
IN->[ 7] cCurrencyControl [N] *** ORCL: this value are handled by F4111EditLine ***
IN->[ 8] mnForeignUnitCost [83.02]
IN->[ 9] mnForeignExtendedCost [.00]
IN->[ 10] mnPrimaryTransactionQuantity [-15000]
IN->[ 11] mnQuantityConvertedToPrimary [-15000]
ERROR INFO JDEERR - ID= 0, Error= 0252 - b4100030.c, Line= 353
OUT->[ 1] mnTransactionQuantity [-15000]
OUT->[ 2] mnTransactionUnitCost [83.020000000000000000]
OUT->[ 3] mnExtendedCost [-1260900]
OUT->[ 4] mnPrimaryUnitCost [0]
OUT->[ 5] mnConversionFactorFromToPrimry [1]
OUT->[ 6] mnConversionFactorPriceToPrim [1]
OUT->[ 7] cCurrencyControl [N]
OUT->[ 8] mnForeignUnitCost [83.02]
OUT->[ 9] mnForeignExtendedCost [.00]
OUT->[ 10] mnPrimaryTransactionQuantity [-15000]
OUT->[ 11] mnQuantityConvertedToPrimary [-15000]
Return value is 2 for VerifyQuantityCostExtended. (BSFNLevel = 4)

Note:



Example 2:
In moving routing steps to stock through P43250 (Receipt Routing Movement and Disposition) the amount computed is different from P4312 (PO Receipts). How to debug this?
1. To debug issue trace callobject kernel for both P4312 and P43250
2. Analyze CallStack through Performance workbench

P4312 - PO Receipts
|--- XT4312Z2 - F4312EditLine (F43121 Edit Line)
|--- B4002000 - ComputeUnitOrExtendedAmount (Orders, calculate Unit or Extended Amount) ** ORCL: this can be called multiple times **
|--- B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended)

P43250 - Receipt Routing Movement and Disposition
|--- NXT43092 - F43092EditLine (F43092 Edit Line)
|--- XT4312Z2 - F4312EditLine (F43121 Edit Line)
|--- B4002000 - ComputeUnitOrExtendedAmount (Orders, calculate Unit or Extended Amount) ** ORCL: this can be called multiple times **
|--- B4100030 - VerifyQuantityCostExtended (Inventory Trn, Verify Unit Cost vs Extended)

Note:


3. Analyze Detail Routine:
P4312 - PO Receipts

Calling Business function F4312EditLine from Level 1 for JDE. Application Name [P4312], Version [ZJDE0001] (BSFNLevel = 1)
...
IN->[ 16] mnQuantityReceived [3277]
IN->[ 17] szReceiptUOM [EA]
IN->[ 18] mnUnitCostReceived [904.2346]
IN->[ 19] mnForeignUnitCostReceived [0] *** ORCL: Note that mnForeignUnitCostReceived is not assigned through P4312 ***
IN->[ 20] mnAmountReceived [2964081]
IN->[ 21] mnForeignAmountReceived [37858.40]
...
Calling Business function VerifyQuantityCostExtended from F4312EditLine for JDE. Application Name [P4312], Version [ZJDE0001] (BSFNLevel = 2)
IN->[ 1] mnTransactionQuantity [3277]
IN->[ 2] mnTransactionUnitCost [11.552761672] *** ORCL: So this value is computed through XT4312Z2 routine ***
IN->[ 3] mnExtendedCost [37858.4]
IN->[ 4] mnPrimaryUnitCost [0]
IN->[ 5] mnConversionFactorFromToPrimry [1]
IN->[ 6] mnConversionFactorPriceToPrim [1]
IN->[ 7] cCurrencyControl [Y]
IN->[ 8] mnForeignUnitCost [0]
IN->[ 9] mnForeignExtendedCost [0]
IN->[ 10] mnPrimaryTransactionQuantity [3277]
IN->[ 11] mnQuantityConvertedToPrimary [3277]
OUT->[ 1] mnTransactionQuantity [3277]
OUT->[ 2] mnTransactionUnitCost [11.552761672]
OUT->[ 3] mnExtendedCost [37858.4]
OUT->[ 4] mnPrimaryUnitCost [11.5528]
OUT->[ 5] mnConversionFactorFromToPrimry [1]
OUT->[ 6] mnConversionFactorPriceToPrim [1]
OUT->[ 7] cCurrencyControl [Y]
OUT->[ 8] mnForeignUnitCost [0]
OUT->[ 9] mnForeignExtendedCost [0]
OUT->[ 10] mnPrimaryTransactionQuantity [3277]
OUT->[ 11] mnQuantityConvertedToPrimary [3277]
Return value is 0 for VerifyQuantityCostExtended. (BSFNLevel = 2)


P43250 - Receipt Routing Movement and Disposition

Calling Business function F43092EditLine from Level 1 for JDE. Application Name [P43250], Version [ZJDE0001] (BSFNLevel = 1)
...
Calling Business function F4312EditLine from F43092EditLine for JDE. Application Name [P43250], Version [ZJDE0001] (BSFNLevel = 2)
...
IN->[ 16] mnQuantityReceived [3277]
IN->[ 17] szReceiptUOM [EA]
IN->[ 18] mnUnitCostReceived [904.2347]
IN->[ 19] mnForeignUnitCostReceived [11.5528] *** ORCL: Note that the value is assigned in calling F4312EditLine ***
IN->[ 20] mnAmountReceived [2963177]
IN->[ 21] mnForeignAmountReceived [37858.40]
...
Calling Business function VerifyQuantityCostExtended from F4312EditLine for JDE. Application Name [P43250], Version [ZJDE0001] (BSFNLevel = 3)
IN->[ 1] mnTransactionQuantity [3277]
IN->[ 2] mnTransactionUnitCost [11.5528] *** ORCL: Same amount assigned is used for input parameter ***
IN->[ 3] mnExtendedCost [37858.40]
IN->[ 4] mnPrimaryUnitCost [0]
IN->[ 5] mnConversionFactorFromToPrimry [1]
IN->[ 6] mnConversionFactorPriceToPrim [1]
IN->[ 7] cCurrencyControl [Y]
IN->[ 8] mnForeignUnitCost [0]
IN->[ 9] mnForeignExtendedCost [0]
IN->[ 10] mnPrimaryTransactionQuantity [3277]
IN->[ 11] mnQuantityConvertedToPrimary [3277]
OUT->[ 1] mnTransactionQuantity [3277]
OUT->[ 2] mnTransactionUnitCost [11.5528]
OUT->[ 3] mnExtendedCost [37858.40]
OUT->[ 4] mnPrimaryUnitCost [11.5528]
OUT->[ 5] mnConversionFactorFromToPrimry [1]
OUT->[ 6] mnConversionFactorPriceToPrim [1]
OUT->[ 7] cCurrencyControl [Y]
OUT->[ 8] mnForeignUnitCost [0]
OUT->[ 9] mnForeignExtendedCost [0]
OUT->[ 10] mnPrimaryTransactionQuantity [3277]
OUT->[ 11] mnQuantityConvertedToPrimary [3277]
Return value is 0 for VerifyQuantityCostExtended. (BSFNLevel = 3)

Note:

Example 3:

EDI Inbound 861- Receiving Advice (R47071) and PO Receipts (P4312) behavior differently in specifying F47072.FUC (Amount - Foreign Unit Cost). The former fails to reset Foreign Unit Cost and Amount whereas the latter is able to set valid outcome. Note that depending on the processing option for parameter 17. Price At Receipt (with Available values Blank = Do not price at receipt, 1 = Price at receipt) in Process tab, the outcome can be vary. For detail, refer to Bug 17233239 - FAP&FREC NOT UPDATED BY FOREIGN PRICE CHANGE.

Case (Price at Receipt is ON)

R47071 (EDI Inbound 861- Receiving Advice)
---| F4312EditLine (XT4312Z1/XT4312Z2)
------| ...
------| CalculateReceiptPrice (B4500251 - Calculate Receipt Price)
------| VerifyQuantityCostExtended


Case (Price at Receipt is OFF)

R47071 (EDI Inbound 861- Receiving Advice)
---| F4312EditLine (XT4312Z1/XT4312Z2)
------| ...
------| VerifyQuantityCostExtended

Note: The business function B4500251 serves as an interface function for Receipts as well as for the settlement, Grower and contract modules. When called for any other module other than receipts i.e when a transaction does not exist, then the Price engine B4500250 is called in a price only mode.Also for these other modules other than receipt the processing mode used by B4500250 and B4500050 will be a 'P' for procurement.


Business scenario,

The foreign unit cost during PO entry was 14.9999 and F47072.FUC is updated with value 15.0960.

Calling Business function F4312EditLine from Level 1 for USERID. Application Name [R47071], Version [ZJDE0001] (BSFNLevel = 1)
...
IN->[ 16] mnQuantityReceived [2500]
IN->[ 17] szReceiptUOM [EA]
IN->[ 18] mnUnitCostReceived [1262.6294]
IN->[ 19] mnForeignUnitCostReceived [14.9999] *** both R47071 and P4312 sets same value for this parameter ***
IN->[ 20] mnAmountReceived [.]
IN->[ 21] mnForeignAmountReceived [37740.00]
...
IN->[ 42] mnExchangeRate [83.6400000]
...

Calling Business function VerifyQuantityCostExtended from F4312EditLine for USERID. Application Name [R47071], Version [ZJDE0001] (BSFNLevel = 2)

IN->[ 1] mnTransactionQuantity [2500]
IN->[ 2] mnTransactionUnitCost [14.9999] *** this value has to be written as 15.0960 which is actual foreign unit cost for receipt ***
IN->[ 3] mnExtendedCost [37740.00]
IN->[ 4] mnPrimaryUnitCost [0]
IN->[ 5] mnConversionFactorFromToPrimry [1]
IN->[ 6] mnConversionFactorPriceToPrim [1]
IN->[ 7] cCurrencyControl [Y]
IN->[ 8] mnForeignUnitCost [0]
IN->[ 9] mnForeignExtendedCost [0]
IN->[ 10] mnPrimaryTransactionQuantity [2500]
IN->[ 11] mnQuantityConvertedToPrimary [2500]
ERROR INFO JDEERR - ID= 8, Error= 0252 - b4100030.c, Line= 353
OUT->[ 1] mnTransactionQuantity [2500]
OUT->[ 2] mnTransactionUnitCost [14.9999]
OUT->[ 3] mnExtendedCost [37740.00]
OUT->[ 4] mnPrimaryUnitCost [0]
OUT->[ 5] mnConversionFactorFromToPrimry [1]
OUT->[ 6] mnConversionFactorPriceToPrim [1]
OUT->[ 7] cCurrencyControl [Y]
OUT->[ 8] mnForeignUnitCost [0]
OUT->[ 9] mnForeignExtendedCost [0]
OUT->[ 10] mnPrimaryTransactionQuantity [2500]
OUT->[ 11] mnQuantityConvertedToPrimary [2500]
Return value is 2 for VerifyQuantityCostExtended. (BSFNLevel = 2)

Note:



<Internal_Only> Additional Case study is to be implemented along the way</Internal_Only>