PeopleCode for a custom event project
Two PeopleCode functions are required to support inbound processing. If you create a custom event project in PeopleTools for inbound support, add the PeopleCode functions to the project.
The following PeopleCode contains the IBMPublishEvent and
IBMPublishFutureDatedEvent functions that are used to publish events
to the event table. Calls to these functions are made from the SavePostChange
PeopleCode function in the PeopleSoft component of interest.
/* IBM event notification */
Component string &KEYSTRING;
Component string &KEYNAME;
Component array of string &KEYARRAY;
Component string &KEYDELIM;
Component string &IBMVERB;
Local Record &IBMREC;
Function IBMPublishFutureDatedEvent(&BO, &KEYS, &EFFDATE)
; /* == create a new record object for cw_event_tbl == */
&IBMREC = CreateRecord(Record.IBM_EVENT_TBL);
/* =============== KEYS ================ */
/* composing keys and values in name value format */
&KEYSTRING = "";
&KEYDELIM = ":";
&KEYARRAY = Split(&KEYS, &KEYDELIM);
&LEN = &KEYARRAY.Len;
For &I = 1 To &LEN;
/* get keys and values */
/* get rid of record name */
&POS1 = Find(".", &KEYARRAY [&I]);
&L1 = Len(&KEYARRAY [&I]);
&POS2 = &L1 - &POS1;
&KEYNAME = Right(&KEYARRAY [&I], &POS2);
/****The code below will remove special characters and****/
/****adjust the characters' case to ensure it is same as the****/
/****attribute name in the business object definition***/
/****Start****/
&lLen = Len(&KEYNAME);
&sOrigString = &KEYNAME;
&sNewString = "";
&lCtr2 = 1;
&isSpecialChar = "true";
For &lCtr = 1 To &lLen;
&sChar = Substring(&sOrigString, &lCtr, 1);
If (&sChar = "A" Or
&sChar = "a" Or
&sChar = "B" Or
&sChar = "b" Or
&sChar = "C" Or
&sChar = "c" Or
&sChar = "D" Or
&sChar = "d" Or
&sChar = "E" Or
&sChar = "e" Or
&sChar = "F" Or
&sChar = "f" Or
&sChar = "G" Or
&sChar = "g" Or
&sChar = "H" Or
&sChar = "h" Or
&sChar = "I" Or
&sChar = "i" Or
&sChar = "J" Or
&sChar = "j" Or
&sChar = "K" Or
&sChar = "k" Or
&sChar = "L" Or
&sChar = "l" Or
&sChar = "M" Or
&sChar = "m" Or
&sChar = "N" Or
&sChar = "n" Or
&sChar = "O" Or
&sChar = "o" Or
&sChar = "P" Or
&sChar = "p" Or
&sChar = "Q" Or
&sChar = "q" Or
&sChar = "R" Or
&sChar = "r" Or
&sChar = "S" Or
&sChar = "s" Or
&sChar = "T" Or
&sChar = "t" Or
&sChar = "U" Or
&sChar = "u" Or
&sChar = "V" Or
&sChar = "v" Or
&sChar = "W" Or
&sChar = "w" Or
&sChar = "X" Or
&sChar = "x" Or
&sChar = "Y" Or
&sChar = "y" Or
&sChar = "Z" Or
&sChar = "z" Or
&sChar = "1" Or
&sChar = "2" Or
&sChar = "3" Or
&sChar = "4" Or
&sChar = "5" Or
&sChar = "6" Or
&sChar = "7" Or
&sChar = "8" Or
&sChar = "9" Or
&sChar = "0") Then
If (&isSpecialChar = "true") Then
&sNewString = &sNewString | Upper(&sChar);
&isSpecialChar = "false";
Else
&sNewString = &sNewString | Lower(&sChar);
End-If;
Else
&isSpecialChar = "true";
End-If;
End-For;
&KEYNAME = &sNewString;
/*********End*********/
&KEYSTRING = &KEYSTRING | &KEYNAME | "=" | @&KEYARRAY [&I] | &KEYDELIM
End-For;
&KEYSTRING = RTrim(&KEYSTRING, ":");
&IBMREC.IBM_OBJECT_KEYS.Value = &KEYSTRING;
/*============== VERB =========================*/
/* verb determination uses variable &IBMVERB */
Evaluate %Mode
When = "A"
&IBMVERB = "Create";
Break;
When = "U"
&IBMVERB = "Update";
Break;
When = "L"
&IBMVERB = "Update";
Break;
When = "C"
&IBMVERB = "Update";
Break;
When-Other
&IBMVERB = "Retrieve";
End-Evaluate;
&IBMREC.IBM_OBJECT_VERB.Value = &IBMVERB;
/* ====================== EVENT_ID GEN ==================================== */
/* create event_id */
&NEWNUM = GetNextNumber(IBM_FETCH_ID.IBM_NEXT_EVENT_ID, 99999);
/* only use newnum if no error generating next number */
If &NEWNUM > 0 Then
&IBMREC.IBM_EVENT_ID.Value = &NEWNUM;
Else
&IBMREC.IBM_EVENT_ID.Value = %Datetime;
End-If; /*Support for Future Effective Date - The adapter will poll such events when the date arrives*/
If &EFFDATE > %Datetime Then
&IBMREC.IBM_EVENT_DTTM.Value = &EFFDATE;
&IBMREC.IBM_EVENT_STATUS.Value = "99";
Else
&IBMREC.IBM_EVENT_DTTM.Value = %Datetime;
&IBMREC.IBM_EVENT_STATUS.Value = "0";
End-If; /*================ INSERT EVENT INTO IBM_EVENT_TBL ============*/
/* insert row into table using record object*/
&IBMREC.IBM_OBJECT_NAME.Value = &BO;
&IBMREC.Insert();
End-Function;
Function IBMPublishEvent(&BO, &KEYS);
/* == create a new record object for cw_event_tbl == */
&IBMREC = CreateRecord(Record.IBM_EVENT_TBL);
/* =============== KEYS ================ */
/* composing keys and values in name value format */
&KEYSTRING = "";
&KEYDELIM = ":";
&KEYARRAY = Split(&KEYS, &KEYDELIM);
&LEN = &KEYARRAY.Len;
For &I = 1 To &LEN;
/* get keys and values */
/* get rid of record name */
&POS1 = Find(".", &KEYARRAY [&I]);
&L1 = Len(&KEYARRAY [&I]);
&POS2 = &L1 - &POS1;
&KEYNAME = Right(&KEYARRAY [&I], &POS2);
/****The code below will remove special characters and
/****adjust the characters' case to ensure it is same as the
/****attribute name in the business object definition***/
/****Start****/
&lLen = Len(&KEYNAME);
&sOrigString = &KEYNAME;
&sNewString = "";
&lCtr2 = 1;
&isSpecialChar = "true";
For &lCtr = 1 To &lLen;
&sChar = Substring(&sOrigString, &lCtr, 1);
If (&sChar = "A" Or
&sChar = "a" Or
&sChar = "B" Or
&sChar = "b" Or
&sChar = "C" Or
&sChar = "c" Or
&sChar = "D" Or
&sChar = "d" Or
&sChar = "E" Or
&sChar = "e" Or
&sChar = "F" Or
&sChar = "f" Or
&sChar = "G" Or
&sChar = "g" Or
&sChar = "H" Or
&sChar = "h" Or
&sChar = "I" Or
&sChar = "i" Or
&sChar = "J" Or
&sChar = "j" Or
&sChar = "K" Or
&sChar = "k" Or
&sChar = "L" Or
&sChar = "l" Or
&sChar = "M" Or
&sChar = "m" Or
&sChar = "N" Or
&sChar = "n" Or
&sChar = "O" Or
&sChar = "o" Or
&sChar = "P" Or
&sChar = "p" Or
&sChar = "Q" Or
&sChar = "q" Or
&sChar = "R" Or
&sChar = "r" Or
&sChar = "S" Or
&sChar = "s" Or
&sChar = "T" Or
&sChar = "t" Or
&sChar = "U" Or
&sChar = "u" Or
&sChar = "V" Or
&sChar = "v" Or
&sChar = "W" Or
&sChar = "w" Or
&sChar = "X" Or
&sChar = "x" Or
&sChar = "Y" Or
&sChar = "y" Or
&sChar = "Z" Or
&sChar = "z" Or
&sChar = "1" Or
&sChar = "2" Or
&sChar = "3" Or
&sChar = "4" Or
&sChar = "5" Or
&sChar = "6" Or
&sChar = "7" Or
&sChar = "8" Or
&sChar = "9" Or
&sChar = "0") Then
If (&isSpecialChar = "true") Then
&sNewString = &sNewString | Upper(&sChar);
&isSpecialChar = "false";
Else
&sNewString = &sNewString | Lower(&sChar);
End-If;
Else
&isSpecialChar = "true";
End-If;
End-For;
&KEYNAME = &sNewString;
/*********End*********/
&KEYSTRING = &KEYSTRING | &KEYNAME | "=" | @&KEYARRAY [&I] | &KEYDELIM
End-For;
&KEYSTRING = RTrim(&KEYSTRING, ":");
&IBMREC.IBM_OBJECT_KEYS.Value = &KEYSTRING;
/*============== VERB =========================*/
/* verb determination uses variable &IBMVERB */
Evaluate %Mode
When = "A"
&IBMVERB = "Create";
Break;
When = "U"
&IBMVERB = "Update";
Break;
When = "L"
&IBMVERB = "Update";
Break;
When = "C"
&IBMVERB = "Update";
Break;
When-Other
&IBMVERB = "Retrieve";
End-Evaluate;
&IBMREC.IBM_OBJECT_VERB.Value = &IBMVERB;
/* ====================== EVENT_ID GEN ============================= */
/* create event_id */
&NEWNUM = GetNextNumber(IBM_FETCH_ID.IBM_NEXT_EVENT_ID, 99999);
/* only use newnum if no error generating next number */
If &NEWNUM > 0 Then
&IBMREC.IBM_EVENT_ID.Value = &NEWNUM;
Else
&IBMREC.IBM_EVENT_ID.Value = %Datetime;
End-If;
&IBMREC.IBM_EVENT_DTTM.Value = %Datetime;
/* ============== EVENT_STATUS =================*/
/* Validate and set event status &IBMSTATUS - list values if date is ok*/
&IBMREC.IBM_EVENT_STATUS.Value = "0";
/*================ INSERT EVENT INTO IBM_EVENT_TBL ============*/
/* insert row into table using record object*/
&IBMREC.IBM_OBJECT_NAME.Value = &BO;
&IBMREC.Insert();
End-Function;