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 */
}