You could create custom C BSFN like this (LPDSD55PUT8 should be you custom DS too):
JDEBFRTN (ID) JDEBFWINAPI Get_P4210_ProcessingOptions (LPBHVRCOM lpBhvrCom, LPVOID lpVoid, LPDSD55PUT8 lpDS)
{
/************************************************************************
* Variable declarations
************************************************************************/
ID idReturnValue = ER_SUCCESS;
ID idJDEDBReturn = JDEDB_PASSED; /* DB API Return Code */
HUSER hUser;
/************************************************************************
* Declare structures
************************************************************************/
/************************************************************************
* Declare pointers
************************************************************************/
LPDST4210 lpdsProcOptions = (LPDST4210)NULL;
/************************************************************************
* Check for NULL pointers
************************************************************************/
if ((lpBhvrCom == (LPBHVRCOM) NULL) ||
(lpVoid == (LPVOID) NULL) ||
(lpDS == (LPDSD55PUT8) NULL))
{
jdeErrorSet (lpBhvrCom, lpVoid, (ID) 0, "4363", (LPVOID) NULL);
return ER_ERROR;
}
/**************************************************************************
* Initialize Behavior Routine
**************************************************************************/
idJDEDBReturn = JDB_InitBhvr((void *)lpBhvrCom, &hUser, (char *) NULL,
JDEDB_COMMIT_AUTO);
if (idJDEDBReturn != JDEDB_PASSED)
{
jdeSetGBRError(lpBhvrCom, lpVoid, (ID) 0, "078S");
return ER_ERROR;
}
/************************************************************************
* Set pointers
************************************************************************/
/************************************************************************
* Main Processing
************************************************************************/
if (IsStringBlank(lpDS->P4210_Version))
{
strcpy((char *)lpDS->P4210_Version, (const char *)"ZJDE0001");
}
lpdsProcOptions = (LPDST4210)AllocatePOVersionData(hUser,"P4210", /*Now you're in a "God mode" */
lpDS->P4210_Version,
sizeof(DST4210));
if (lpdsProcOptions != (LPDST4210)NULL)
{
strcpy((char *)lpDS->OrderType,
(const char *)lpdsProcOptions->szDefaultOrdertype);
MathCopy(&lpDS->LineNumberIncrement,
&lpdsProcOptions->mnDefaultLineIncrement);
strcpy((char *)lpDS->LineType,
(const char *)lpdsProcOptions->szDefaultLinetype);
FreePODataStructure(lpdsProcOptions);
}
else
{
idReturnValue = ER_ERROR;
}
/************************************************************************
* Function Clean Up
************************************************************************/
return (idReturnValue);
}