Skip Headers
JD Edwards EnterpriseOne Tools Development Standards for Business Function Programming Guide
Release 8.98 Update 4

Part Number E14699-02
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
PDF · Mobi · ePub

8 Implementing Error Messages

This chapter contains the following topics:

8.1 Understanding Error Messages

Messages provide an effective and usable method of communicating information to end-users. You can use simple messages or text substitution messages.

Text substitution messages provide specific information to the user. At runtime, the system replaces variables in the message with substitution values. Two types of text substitution messages exist:

The return code from all JDB and JDE Cache APIs must be checked and an appropriate error message set, returned, or both to the calling function. The standard error messages for JDB and JDE Cache errors are shown in these tables.

The JDB errors are:

Error ID Description
078D Open Table Failed
078E Close Table Failed
078F Insert to Table Failed
078G Delete from Table Failed
078H Update to Table Failed
078I Fetch from Table Failed
078J Select from Table Failed
078K Set Sequence of Table Failed
078S * Initialization of Behavior Failed

* 078S does not use text substitution

The JDE Cache errors are:

Error ID Description
078L Initialization of Cache Failed
078M Open Cursor Failed
078N Fetch from Cache Failed
078O Add to Cache Failed
078P Update to Cache Failed
078Q Delete from Cache Failed
078R Terminate of Cache Failed

8.2 Inserting Parameters for Error Messages in lpDS

Include the parameters cSuppressErrorMessage and szErrorMessageID in lpDS for error message processing. The functionality for each is as follows:

8.2.1 Example: Parameters in lpDS for an Error Message

This example includes the lpDS parameters, cSuppressErrorMessage, and szErrorMessageID:

if ((!IsStringBlank(lpDS->szErrorMessageID)) &&
       (lpDS->cSuppressErrorMessage != _J('1')))
   {
      jdeStrcpy ((JCHAR*) (lpDS->szErrorMessageID),
                 (const JCHAR*) (_J("0653")));
      jdeErrorSet (lpBhvrCom, lpVoid, (ID) IDERRcMethodofComputation_1,
                   lpDS->szErrorMessageID, (LPVOID) NULL);
      idReturnValue = ER_ERROR;
   }

/***********************************************************
 * Function Clean Up
 ***********************************************************/
   return idReturnValue;

8.3 Initializing Behavior Errors

Business functions that use the JD Edwards EnterpriseOne database API are required to call the Initialize Behavior function before calling any of the database functions. Set error 078S if the Initialize Behavior function does not complete successfully.

8.3.1 Example: Initialize Behavior Error

This example illustrates an initialize behavior error:

/***********************************************************************
 * Initialize Behavior
 ***********************************************************************/
idJDBReturn = JDB_InitBhvr(lpBhvrCom,
                           &hUser,
                           (JCHAR *) NULL,
                           JDEDB_COMMIT_AUTO);
if (idJDBReturn != JDEDB_PASSED)
{
   jdeStrcpy (lpDS->szErrorMessageID, _J("078S"));
   if (lpDS->cSuppressErrorMessage != _J('1'))
   {
      jdeErrorSet(lpBhvrCom, lpVoid, (ID)0, _J(078S), (LPVOID) NULL);
   }
   return ER_ERROR;
}

8.4 Using Text Substitution to Display Specific Error Messages

You can use the JD Edwards EnterpriseOne text substitution APIs for returning error messages within a business function. Text substitution is a flexible method for displaying a specific error message.

Text substitution is accomplished through the data dictionary. To use text substitution, you first must set up a data dictionary item that defines text substitution for the specific error message. A selection of error messages for JDB and JDE Cache have already been created and are listed in this chapter.

Error messages for cache and tables are critical in a configurable network computing (CNC) architecture. C programmers must set the appropriate error message when working with tables or cache APIs.

JDB API errors should substitute the name of the file against which the API failed. JDE cache API errors should substitute the name of the cache for which the API failed.

When calling errors that use text substitution, you must:

8.4.1 Example: Text Substitution in an Error Message

This example uses text substitution in JDB_OpenTable:

/**************************************************************
 * Open the General Ledger Table F0911
 *************************************************************/
eJDBReturn = JDB_OpenTable( hUser,
                            ID_F0911,
                            ID_F0911_DOC_TYPE__NUMBER___B,
                            idColF0911,
                            nNumColsF0911,
                            (JCHAR *)NULL,
                            &hRequestF0911);

if (eJDBReturn != JDEDB_PASSED)
{
   memset((void *)(&dsDE0022), 0x00, sizeof(dsDE0022));
   jdeStrncpy((JCHAR *)dsDE0022.szDescription,
              (const JCHAR *)(_J("F0911")),
              DIM(dsDE0022.szDescription)-1);
   jdeErrorSet (lpBhvrCom, lpVoid,(ID)0, _J("078D"), &dsDE0022);
}

8.5 Mapping Data Structure Errors with jdeCallObject

Any Business Function calling an external Business Function must use jdeCallObject. When using jdeCallObject, be sure to match the Error IDs correctly.

You need to match the Ids from the original Business Function with the Error Ids of the Business Function in jdeCallObject. A data structure is used in the jdeCallObject to accomplish this task.

/*************************************************************
 * Variable declarations
 *************************************************************/
CALLMAP   cm_D0000026[2]  = {{IDERRmnDisplayExchgRate_62,
                            IDERRmnExchangeRate_2}};
ID        idReturnCode    = ER_SUCCESS;  /* Return Code */
/************************************************************
* Business Function structures
*********************************************************/
DSD0000026  dsD0000026    = {0};    /* Edit Tolerance */ 

 idReturnCode = jdeCallObject(_J("EditExchanbeRateTolerance"),
                              NULL,
                              lpBhvrCom,
                              lpVoid,
                              (void *)&dsD0000026,
                              (CALLMAP *)&cm_D0000026,
                              ND0000026,
                              (JCHAR *)NULL,
                              (JCHAR *)NULL,
                              (int)0);