Select Fetch Next Not working in BSFN

atish

Member
Hello All ,

This is my first post on JDE list.Please correct me if i missed anything

I have created one C BSFN which fetches the multiple records from table F7611B by using Select Fetch Next API's.
But when i run the BSFN from UBE/APPL ,it is going into error.
I have checked the code but doesn't find anything which is causing error.I even checked the API's and it's parameters.

JDE Release info ,as below :
Application Release - E920
Tool Release : 9.2.2.6

Please find .c and .h file for your reference,as below.

JDEBFRTN (ID) JDEBFWINAPI F7611BTableTEST (LPBHVRCOM lpBhvrCom, LPVOID lpVoid, LPDSD58TEST1 lpDS)

{
/************************************************************************
* Variable declarations
************************************************************************/
HREQUEST hRequestF7611B = (HREQUEST)NULL;
NID szTableF7611B = NID_F7611B;
ID idIndexF7611B = ID_F7611B_NOTAFISCALDET;
SELECTSTRUCT Select[4] = { 0 };
ID idJDBReturn = JDEDB_PASSED;
/************************************************************************
* Declare structures
************************************************************************/
HUSER hUser = (HUSER)NULL;
KEY1_F7611B dsF7611BKey1;
F7611B dsF7611B ;
/************************************************************************
* Declare pointers
************************************************************************/
memset((void*)(&dsF7611BKey1), (int)(_J('\0')), sizeof(KEY1_F7611B));
/************************************************************************
* Check for NULL pointers
************************************************************************/
if ((lpBhvrCom == (LPBHVRCOM) NULL) ||
(lpVoid == (LPVOID) NULL) ||
(lpDS == (LPDSD58TEST1) NULL))
{
jdeErrorSet (lpBhvrCom, lpVoid, (ID) 0, _J("4363"), (LPVOID) NULL);
return ER_ERROR;
}

/************************************************************************
* Set pointers
************************************************************************/

/************************************************************************
* Main Processing
************************************************************************/
idJDBReturn = JDB_InitBhvr(lpBhvrCom, &hUser, (JCHAR *)NULL, JDEDB_COMMIT_AUTO);
idJDBReturn = JDB_OpenTable(hUser, szTableF7611B, idIndexF7611B, NULL, (ushort)(0), (JCHAR *)NULL, &hRequestF7611B);

if (idJDBReturn == JDEDB_PASSED)
{
memset((void *)(Select), (int)(_J('\0')), sizeof(Select));
idJDBReturn = JDB_ClearSelection(hRequestF7611B);

jdeNIDcpy(Select[0].Item1.szDict, NID_BNNF);
jdeNIDcpy(Select[0].Item1.szTable, NID_F7611B);
Select[0].Item1.idInstance = 0;
jdeNIDcpy(Select[0].Item2.szDict, _J(""));
jdeNIDcpy(Select[0].Item2.szTable, _J(""));
Select[0].lpValue = (void *)&lpDS->mnNotaFiscalNumberBSFN_BNNF;
Select[0].nValues = (short)1;
Select[0].nAndOr = JDEDB_ANDOR_AND;
Select[0].nCmp = JDEDB_CMP_EQ;

jdeNIDcpy(Select[1].Item1.szDict, NID_BSER);
jdeNIDcpy(Select[1].Item1.szTable, NID_F7611B);
Select[1].Item1.idInstance = 0;
jdeNIDcpy(Select[1].Item2.szDict, _J(""));
jdeNIDcpy(Select[1].Item2.szTable, _J(""));
Select[1].lpValue = (void *)lpDS->szNotaFiscalSeriesBSFN_BSER;
Select[1].nValues = (short)1;
Select[1].nAndOr = JDEDB_ANDOR_AND;
Select[1].nCmp = JDEDB_CMP_EQ;

jdeNIDcpy(Select[2].Item1.szDict, NID_N001);
jdeNIDcpy(Select[2].Item1.szTable, NID_F7611B);
Select[2].Item1.idInstance = 0;
jdeNIDcpy(Select[2].Item2.szDict, _J(""));
jdeNIDcpy(Select[2].Item2.szTable, _J(""));
Select[2].lpValue = (void *)&lpDS->mnNextNumber001BSFN_N001;
Select[2].nValues = (short)1;
Select[2].nAndOr = JDEDB_ANDOR_AND;
Select[2].nCmp = JDEDB_CMP_EQ;

jdeNIDcpy(Select[3].Item1.szDict, NID_DCT);
jdeNIDcpy(Select[3].Item1.szTable, NID_F7611B);
Select[3].Item1.idInstance = 0;
jdeNIDcpy(Select[3].Item2.szDict, _J(""));
jdeNIDcpy(Select[3].Item2.szTable, _J(""));
Select[3].lpValue = (void *)lpDS->szDocumentTypeBSFN_DCT;
Select[3].nValues = (short)1;
Select[3].nAndOr = JDEDB_ANDOR_AND;
Select[3].nCmp = JDEDB_CMP_EQ;


idJDBReturn = JDB_SetSelection(hRequestF7611B, Select, (unsigned short)4, JDEDB_SET_REPLACE);
if (idJDBReturn == JDEDB_PASSED)
{
idJDBReturn = JDB_SelectKeyed(hRequestF7611B, (ID)ID_F7611B_NOTAFISCALDET, (void *)&dsF7611BKey1, (short)0);
if (idJDBReturn == JDEDB_PASSED)
{
while (JDB_Fetch(hRequestF7611B, (void *)&dsF7611B, FALSE) == JDEDB_PASSED)
{
jdeTraceSz1(NULL, _J("TEST While Loop"), NULL);
}
}
}
}
/************************************************************************
* Function Clean Up
************************************************************************/
JDB_CloseTable(hRequestF7611B);
return (ER_SUCCESS);
}

===========================================================
.H File
===========================================================
#ifndef __B58TEST1_H
#define __B58TEST1_H

/*****************************************************************************
* Table Header Inclusions
****************************************************************************/
#include <f7611b.h>
/*****************************************************************************
* External Business Function Header Inclusions
****************************************************************************/

/*****************************************************************************
* Global Definitions
****************************************************************************/

/*****************************************************************************
* Structure Definitions
****************************************************************************/

/*****************************************************************************
* DS Template Type Definitions
****************************************************************************/
/**
* TYPEDEF for Data Structure
* D58TEST1 : DSTR - F7611B Table Test
*
* Copyright Oracle USA
*
* This is a JDEdwards EnterpriseOne generated file.
* Do not modify this file.
* Only re-generate with the appropriate tool.
* Generation Date : 09/12/2019
*/

#ifndef DATASTRUCTURE_D58TEST1
#define DATASTRUCTURE_D58TEST1

typedef struct tagDSD58TEST1
{
MATH_NUMERIC mnNotaFiscalNumberBSFN_BNNF;
JCHAR szNotaFiscalSeriesBSFN_BSER[3];
MATH_NUMERIC mnNextNumber001BSFN_N001;
JCHAR szDocumentTypeBSFN_DCT[3];
JCHAR szDescriptionBSFN_DESC[31];
JCHAR cModeofReportBSFN_EV01;
MATH_NUMERIC mnNotaFiscalAmountBSFN_BVTN;
MATH_NUMERIC mnAddressNumberBSFN_AN8;
MATH_NUMERIC mnShipToNumberBSFN_SHAN;
JCHAR cActionCodeBSFN_EV01;
JCHAR cErrorCode_ERRC;
ID idEventID_GENLNG;
} DSD58TEST1, *LPDSD58TEST1;

#define IDERRmnNotaFiscalNumberBSFN_BNNF_1 1L
#define IDERRszNotaFiscalSeriesBSFN_BSER_2 2L
#define IDERRmnNextNumber001BSFN_N001_3 3L
#define IDERRszDocumentTypeBSFN_DCT_4 4L
#define IDERRszDescriptionBSFN_DESC_5 5L
#define IDERRcModeofReportBSFN_EV01_6 6L
#define IDERRmnNotaFiscalAmountBSFN_BVTN_7 7L
#define IDERRmnAddressNumberBSFN_AN8_8 8L
#define IDERRmnShipToNumberBSFN_SHAN_9 9L
#define IDERRcActionCodeBSFN_EV01_10 10L
#define IDERRcErrorCode_ERRC_11 11L
#define IDERRidEventID_GENLNG_12 12L

#endif /* DATASTRUCTURE_D58TEST1 */

/*****************************************************************************
* Source Preprocessor Definitions
****************************************************************************/
#if defined (JDEBFRTN)
#undef JDEBFRTN
#endif

#if defined (WIN32)
#if defined (WIN32)
#define JDEBFRTN(r) __declspec(dllexport) r
#else
#define JDEBFRTN(r) __declspec(dllimport) r
#endif
#else
#define JDEBFRTN(r) r
#endif

/*****************************************************************************
* Business Function Prototypes
****************************************************************************/
JDEBFRTN (ID) JDEBFWINAPI F7611BTableTEST (LPBHVRCOM lpBhvrCom, LPVOID lpVoid, LPDSD58TEST1 lpDS);
 
I think the issue is with this statement below . the key structure you are providing for select keyed , the DSTR does not have any values . I dont think it is needed there , it should be as below

dJDBReturn = JDB_SelectKeyed(hRequestF7611B, (ID)ID_F7611B_NOTAFISCALDET, (void *)&dsF7611BKey1, (short)0);

New :

dJDBReturn = JDB_SelectKeyed(hRequestF7611B, (ID)ID_F7611B_NOTAFISCALDET, (void *)NULL, (short)0);

Data will be selected as per the ID index you have mentioned for fetching .Hope this helps
 
Back
Top