PeopleCode functions are required to support inbound processing. If you create a custom event project in PeopleTools for inbound support, add these functions to the project.
/* 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;