Skip to Main Content
  • Questions
  • Invalid Date in PeopleCode in App Engine

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Maria.

Asked: May 24, 2017 - 2:54 pm UTC

Last updated: May 25, 2017 - 1:56 am UTC

Version: PeopleTools 8.55

Viewed 1000+ times

You Asked

I am receiving the following error:

Start Main - Non-Title IV (0,0)

Invalid date. (180,112) UWX_FA_NOTIV.MAIN.GBL.default.1900-01-01.GetStuds.OnExecute PCPC:2263 Statement:4

Process 3136112 ABENDED at Step UWX_FA_NOTIV.MAIN.GetStuds (PeopleCode) -- RC = 8 (108,524)

Process %s ABENDED at Step %s.%s.%s (Action %s) -- RC = %s


Here is my PeopleCode:
Global string &sInst, &sAidYear, &sFilePath;
Local integer &iStudentCount, &iUpdateCount;
Local string &PSEmplid, &PSItemType, &PSItemTerm, &PSItemDescr;
Local string &HxEmplid, &HXItemTerm, &HxItemType, &HXAmount;
Local string &outFilePath, &fileName;
Local date &PSItemEffDt;
Local number &PSSumItmAmt;
Local SQL &SQL1;

MessageBox(0, "", 0, 0, "Start Main - Non-Title IV");


/* Get Eligible Students - Student NODE */
/*jcd 09/28/2016 UWM_FA_63_225 Add institution,aid_year bind variables to query */
&SQL1 = CreateSQL("SELECT DISTINCT A.EMPLID FROM PS_ITEM_SF A WHERE A.ITEM_TERM IN (SELECT B.STRM FROM PS_AID_YR_CAR_TERM B WHERE B.AID_YEAR = " | "'" | &sAidYear | "'" | " AND B.ACAD_CAREER IN (SELECT A1.ACAD_CAREER FROM PS_UWX_FA_SETUP A1)) AND A.ITEM_TYPE IN (SELECT A2.ITEM_TYPE FROM PS_UWX_FA_NTIV_ITM A2 WHERE A2.INSTITUTION = :1 AND A2.AID_YEAR = :2) GROUP BY A.EMPLID, A.ITEM_TYPE ", &sInst, &sAidYear);
While &SQL1.Fetch(&PSEmplid);

/*jcd 09/28/2016 UWM_FA_63_225 Add institution,aid_year bind variables to query */
SQLExec("SELECT DISTINCT A.ITEM_TYPE, A.ITEM_TERM, B.DESCR, SUM(A.ITEM_AMT *-1), TO_CHAR(A.ITEM_EFFECTIVE_DT,'DD-MON-YYYY') FROM PS_ITEM_SF A, PS_ITEM_TYPE_TBL B WHERE A.ITEM_TYPE = B.ITEM_TYPE AND A.EMPLID = :1 AND A.ITEM_TERM IN (SELECT B.STRM FROM PS_AID_YR_CAR_TERM B WHERE B.AID_YEAR = " | "'" | &sAidYear | "'" | " AND B.ACAD_CAREER IN (SELECT A1.ACAD_CAREER FROM PS_UWX_FA_SETUP A1)) AND A.ITEM_TYPE IN (SELECT A2.ITEM_TYPE FROM PS_UWX_FA_NTIV_ITM A2 WHERE A2.INSTITUTION = :2 AND A2.AID_YEAR = :3) GROUP BY A.ITEM_TYPE, A.ITEM_TERM, B.DESCR, A.ITEM_EFFECTIVE_DT", &PSEmplid, &sInst, &sAidYear, &PSItemType, &PSItemTerm, &PSItemDescr, &PSSumItmAmt, &PSItemEffDt);

/* Check to see if student hasn't already been sent to UWEX Flex FA */
SQLExec("SELECT DISTINCT A.EMPLID, A.ITEM_TYPE, A.ITEM_TERM, SUM(A.ITEM_AMT) FROM PS_UWX_SF_NTIV_HX A WHERE A.EMPLID = :1 AND A.AID_YEAR = :2 GROUP BY A.EMPLID, A.ITEM_TYPE, A.ITEM_TERM ", &PSEmplid, &sAidYear, &HxEmplid, &HxItemType, &HXItemTerm, &HXAmount);

If All(&HxEmplid) Then /* Student does exist */
/* Student Does Exist in History --> check to see if Award Info changes */

/* Check if Award Info Change (Amount) */
If &HXAccept <> &PSSumItmAmt Then
/* Add in logic here to output the following data to a CSV file - EMPLID, AID_YEAR, ITEM_TERM, ITEM_TYPE, ITEM_AMT, ITEM_DESCR, ITEM_EFFECTIVE_DT and a UWX_ITEM_STATUS = UPDATED */

UWX_FA_NTIV_AET.EMPLID = &PSEmplid;
UWX_FA_NTIV_AET.AID_YEAR = &sAidYear;
UWX_FA_NTIV_AET.ITEM_TERM = &PSItemTerm;
UWX_FA_NTIV_AET.ITEM_TYPE = &PSItemType;
UWX_FA_NTIV_AET.ITEM_DESCR = &PSItemDescr;
UWX_FA_NTIV_AET.ITEM_AMT = &PSSumItmAmt;
UWX_FA_NTIV_AET.ITEM_EFFECTIVE_DT = &PSItemEffDt;
UWX_FA_NTIV_AET.UWX_NTIV_STAT = "UPD";

If &PSSumItmAmt = 0 Then
UWX_FA_NTIV_AET.UWX_NTIV_STAT = "CNC";
End-If;

/* Add in logic to output to XML file for document requirement */
UWX_FA_NTIV_AET.AE_SECTION = "Output";

/* Add in - &UpdateCount = &UpdateCount + 1; */
&iUpdateCount = &iUpdateCount + 1;

/* Add in logic to update UWX_SF_NTIV_HX */
SQLExec("UPDATE PS_UWX_SF_NTIV_HX SET ITEM_AMT = :1 ,UWX_NTIV_STAT = :2 WHERE EMPLID = :3 AND ITEM_TYPE = :4 AND AID_YEAR = :5 AND ITEM_TERM = :6", &PSItemAmt, "UPD", &PSEmplid, &PSItemType, &sAidYear, &PSItemTerm);

Else
/* Do nothing - amounts match */
End-If;

Else

If &PSSumItmAmt <> 0 Then
/* MessageBox(0, "", 0, 0, "> STUDENT DOES NOT EXIST in HISTORY - &PSEmplid: " | &PSEmplid | " Aid Year = " | &sAidYear); jcd 09/28/2016 UWM_FA_63_225. Remove message reporting.*/
&StudentCount = &StudentCount + 1;

&extStudID1 = &PSEmplid | Substring(&Inst, 3, 3);
/* Add in logic here to output the following data to a CSV file - EMPLID, AID_YEAR, ITEM_TERM, ITEM_TYPE, ITEM_AMT, ITEM_DESCR, ITEM_EFFECTIVE_DT and a UWX_ITEM_STATUS = NEW */
UWX_FA_NTIV_AET.EMPLID = &PSEmplid;
UWX_FA_NTIV_AET.AID_YEAR = &sAidYear;
UWX_FA_NTIV_AET.ITEM_TERM = &PSItemTerm;
UWX_FA_NTIV_AET.ITEM_TYPE = &PSItemType;
UWX_FA_NTIV_AET.ITEM_DESCR = &PSItemDescr;
UWX_FA_NTIV_AET.ITEM_AMT = &PSSumItmAmt;
UWX_FA_NTIV_AET.ITEM_EFFECTIVE_DT = &PSItemEffDt;
UWX_FA_NTIV_AET.UWX_NTIV_STAT = "ADD";


MessageBox(0, "", 0, 0, "&PSEmplid = " | &PSEmplid);
MessageBox(0, "", 0, 0, "&sAidYear = " | &sAidYear);
MessageBox(0, "", 0, 0, "&PSItemTerm = " | &PSItemTerm);
MessageBox(0, "", 0, 0, "&PSItemType = " | &PSItemType);
MessageBox(0, "", 0, 0, "&PSItemDescr = " | &PSItemDescr);
MessageBox(0, "", 0, 0, "&PSSumItmAmt = " | &PSSumItmAmt);
MessageBox(0, "", 0, 0, "&PSItemEffDt = " | &PSItemEffDt);


/* Add in logic to output to XML file for document requirement */
UWX_FA_NTIV_AET.AE_SECTION = "Output";

/* Inserts Award Data into the history table so it can be checked against for future runs */
SQLExec("INSERT INTO PS_UWX_SF_NTIV_HX(EMPLID, AID_YEAR, ITEM_TERM, ITEM_TYPE, ITEM_DESCR, ITEM_AMT, ITEM_EFFECTIVE_DT, UWX_NTIV_STAT) VALUES (:1, :2, :3, :4, :5, :6, :7, :8) ", &PSEmplid, &sAidYear, &PSItemTerm, &PSItemType, &PSItemDescr, &PSItemAmt, &PSItemEffDt, "NEW");
End-If;
End-If;


End-While;



and Connor said...

I dont know anything about PeopleSoft or PeopleTools code, but here's my hypothesis.

You are doing

TO_CHAR(A.ITEM_EFFECTIVE_DT,'DD-MON-YYYY')

into

&PSItemEffDt

But this variable is already defined as a date, so you should just be doing:

A.ITEM_EFFECTIVE_D

into

&PSItemEffDt

because otherwise you have implicit data type conversions going on, which are a common cause of "invalid date" errors.

Is this answer out of date? If it is, please let us know via a Comment