XAPI Outbound Request Parsing API Usage Sample Code
This code sample shows the API usage for parsing an outbound request by the JD Edwards EnterpriseOne XAPI executor:
#include <jde.h>
#define b0000310_c
/*****************************************************************************
* Source File: b0000310
*
* Description: Company Real Time Notification Outbound Wrapper Source File
*
*****************************************************************************/
#include <b0000310.h>
#include <B4206030.h>
#include <B4206000.h>
/**************************************************************************
* Business Function: CompanyRealTimeWrapper
*
* Description: Company Real Time Notification Outbound Wrapper
*
* Parameters:
* LPBHVRCOM lpBhvrCom Business Function Communications
* LPVOID lpVoid Void Parameter - DO NOT USE!
* LPDSD0000310A lpDS Parameter Data Structure Pointer
*
*************************************************************************/
int iXMLRecordCount = 0;
int iCurrentRecord = 0;
NID nidDSName;
ID idReturnValue = ER_SUCCESS;
ID idSORecordCount = ER_ERROR; /*Return Code*/
LPDSD4206000A lpDS;
int lpmnJobNumber;
MATH_NUMERIC mnBatchNumber = {0};
unsigned long lBatchNumber = {0};
DSD4206030A dsD4206030A = {0};
/* CacheProcessInboundDemandRequest B4206030.c */
DSD4206000I dsD4206000I = {0};
/* Demand scheduling inbound DSTR */
iXMLRecordCount = jdeXMLRequest_GetDSCount(lpDS->szXMLHandle);
if( iXMLRecordCount > 0)
{
for ( iCurrentRecord = 0; iCurrentRecord < iXMLRecordCount; iCurrentRecord++)
{
memset((void *)(&dsD4206000I), (int)(_J('\0')), sizeof(DSD4206000I));
memset((void *)(nidDSName), (int)(_J('\0')), sizeof(NID));
if(jdeXMLRequest_GetDSName(lpDS->szXMLHandle,iCurrentRecord,nidDSName))
{
/* Retrieving data*/
if (jdeStricmp(nidDSName, (const JCHAR *)_J("D40R0180B")) == 0)
{
if (jdeXMLRequest_ParseDS(lpDS->szXMLHandle,iCurrentRecord,
&dsD4206000I,sizeof(DSD4206000I)))
{
/* Get next number for the batch number of the inbound INVRPT
record*/
if ( dsD4206000I.cInventoryAdvisement == _J('1'))
{
lBatchNumber = JDB_GetInternalNextNumber();
LongToMathNumeric(lBatchNumber, &mnBatchNumber);
FormatMathNumeric(dsD4206000I.szBatch,&mnBatchNumber);
}
/* Setup cancel flag for pending delete record */
if ( dsD4206000I.cPendingDelete == _J('1'))
{
/* Flag set as 1 for any cancel demand record */
dsD4206000I.cCancelFlag = _J('1');
}
else
{ /* Flag set as 9 for any non cancel demand record */
dsD4206000I.cCancelFlag = _J('9');
}
/* Load parms for cache */
//memset((void *)(&dsD4206030A), (int)(_J('\0')),
sizeof(DSD4206030A));
I4206000_LoadParmsToCache(&dsD4206000I, &dsD4206030A);
MathCopy(&dsD4206030A.mnJobnumberA, lpmnJobNumber);
/* Add the DSTR to cache */
idReturnValue = jdeCallObject( _J("CacheProcessInboundDemand
Request") ,(LPFNBHVR)NULL ,lpBhvrCom ,lpVoid ,(LPVOID)&dsD4206030A,
(CALLMAP *)NULL, (int)0,(JCHAR*)NULL ,(JCHAR*)NULL ,(int)0 );
/* Write XML DSTR to cache fail */
if (idReturnValue == ER_ERROR)
{
jdeErrorSet(lpBhvrCom, lpVoid, (ID)0, _J("032E"), (LPVOID)NULL);
}
}
else
{ /* warning XML parse fail */
jdeErrorSet(lpBhvrCom, lpVoid, (ID)0, _J("40R46"), (LPVOID) NULL);
}
} /* end if */
}/* end if DS name */
}/* end for - looping all matching XML DSTR */
/* Ensure there is at least one record */
idSORecordCount = ER_SUCCESS;
}/*if( iXMLRecordCount > 0) */
return idSORecordCount;