Code Sample: Invoking the F0045 Log Service Error Business Function (B0001250)

The code that invokes the B0001250 business function should be the same or similar for all business functions. This is an example of the C code:

/*============================================================
 * Call BSSV API
*============================================================*/
idReturnValue = jdeCallBusinessService(lpDSInternal->lpBhvrCom, 
                                 lpDSInternal->lpVoid,
 BSSV_PACKAGE,
 _J("processProcurement"), TRUE,
 szBSSVXMLString,
 &szBSSVPayloadReturn);

if( idReturnValue == CallBSSVNoError)
{
/*  Parse the XML String  */
xrcsStatus = XRCS_parseXMLStringRemoveEncoding(lpDSInternal->hParser, 
szBSSVPayloadReturn, &hPayloadDoc);
if(xrcsStatus != XRCS_SUCCESS) 
{
jdeTraceSz(NULL, _J("B34A1300 - XRCS_parseXMLStringRemoveEncoding 
failed.\n"));
idReturnValue = ER_ERROR;
}
else
{
/* Get Payload Root Element */
xrcsStatus = XRCS_getDocumentElement(hPayloadDoc,&hPayloadRootElm);
if(xrcsStatus != XRCS_SUCCESS) 
{
jdeTraceSz(NULL, _J("B34A1300 - XRCS_getDocumentElement failed for 
Payload element.\n"));
idReturnValue = ER_ERROR;
}
else
{
* Get Tag Element */
xrcsStatus = XRCS_getElementsByTagName(hPayloadRootElm, 
_J("sz-errors"), &hElm,&nElmCount);
   if(xrcsStatus != XRCS_SUCCESS) 
{
jdeTraceSz(NULL, _J("B34A1300 - XRCS_getElementsByTagName failed 
for szError tag.\n"));
idReturnValue = ER_ERROR;
}
else
{
/* Retrieve tag szErrors from bssvPayloadReturn into szBSSVError string */ 

if(nElmCount > 0 && hElm != (XRCS_hElement*) NULL)
{
XRCS_getElementText(hElm[0],&szXMLText);
jdeStrncpyTerminate((JCHAR *)szBSSVError, szXMLText,DIM 
(szBSSVError)) ;
idReturnValue = ER_ERROR;
if (jdeStrlen( szXMLText ) > MAX_ERR_LEN) 
{
dsD0001250A.cServiceErrorTruncationFlag = _J('1');  
}
bCallErrorRecovery = TRUE;
}
else
{
jdeTraceSz(NULL, _J("B34A1300 - Service consumed successfully.\
n"));
}}
}
}/* end else parse error */
} /* ed if no error in BSSV */
else
{
/* Error when connecting to BSSV - Assign "0:007FIS" to BSSVERR */
jdeStrncpyTerminate((JCHAR *)szBSSVError, (const JCHAR *)_J("0:007FIS"),
DIM (szBSSVError)) ;
bCallErrorRecovery = TRUE;
idReturnValue = ER_ERROR;
}

if ( bCallErrorRecovery )
{
/* Call B0001250 */
dsD0001250A.idBSSVDocHandle = (ID)jdeStoreDataPtr(lpDSInternal->hUser, 
lpDSInternal->hDoc);
dsD0001250A.cSuppressErrorMessage = _J('1');
jdeStrncpyTerminate(dsD0001250A.szBSSVPackage,  
BSSV_PACKAGE,
DIM(dsD0001250A.szBSSVPackage));
jdeStrncpyTerminate(dsD0001250A.szBSSVMethodName,  
(const JCHAR *)_J("processProcurement"),
DIM(dsD0001250A.szBSSVMethodName));             
jdeStrncpyTerminate((JCHAR *)szPipe, (const JCHAR *)_J("|"),DIM (szPipe));
FormatMathNumeric(szOrderNumber, &lpdsD4302470A->mnOrderNumber) ;
jdeStrcat(szOrderNumber, szPipe);
jdeStrcat(szOrderNumber, lpdsD4302470A->szOrderType);
jdeStrcat(szOrderNumber, szPipe);
jdeStrcat(szOrderNumber, lpdsD4302470A->szOrderCompany);
jdeStrcat(szOrderNumber, szPipe);
jdeStrcat(szOrderNumber, lpdsD4302470A->szOrderSuffix);
jdeStrncpyTerminate((JCHAR *)dsD0001250A.szTransactionKey, 
szOrderNumber,DIM (dsD0001250A.szTransactionKey)) ;   
dsD0001250A.cActionCode = lpdsD4302470A->cOrderAction;
jdeStrncpyTerminate((JCHAR *)dsD0001250A.szBSSVTransactionType, 
(const JCHAR *)_J("AUTO"),DIM (dsD0001250A.szBSSVTransactionType)) ;   
jdeStrncpyTerminate((JCHAR *)dsD0001250A.szBSSVError, szBSSVError,DIM 
(dsD0001250A.szBSSVError)) ;   
jdeStrncpyTerminate((JCHAR *)dsD0001250A.szProgramId, 
(const JCHAR *)_J("B34A1300"),DIM (dsD0001250A.szProgramId)) ;   
jdeUTime_SetCurrentTime(&dsD0001250A.UniversalDateUpdated);
jdeStrncpyTerminate((JCHAR *)dsD0001250A.szCallingFunctionCode, 
lpDS->szCallingBusinessFunction, DIM (dsD0001250A.szCallingFunctionCode));

idReturnValue = jdeCallObject(_J("F0045LogServicesError"),
NULL, lpDSInternal->lpBhvrCom,
lpDSInternal->lpVoid,&dsD0001250A,
(CALLMAP*)NULL,(int)0,(JCHAR*)NULL,
(JCHAR*)NULL,(int)0);

if (idReturnValue == ER_ERROR)
{
jdeTraceSz(NULL, _J("B34A1300 - Error in call to B0001250: 
F0045LogServicesError.\n"));
}

} /* end if bCallErrorRecovery */
}