CompShack Blogs

Integration Broker

PeopleSoft Integration Broker related articles, setups, tips and tricks.

How to resubmit on Integration Broker message with DONE status

Go To subscription node in PeopleTools >> Integration Broker >> Monitor Integrations >> Sub Contracts and get teh the PUBID of the message in DONE status

For PT 8.47 and lower run the below SQL to verify that the message status is DONE
select * from PSAPMSGSUBCON where PUBID=;

Then run the update below:
update PSAPMSGSUBCON set STATUSSTRING='CNCLD', RETRYCOUNT=0, SUBCONSTATUS=8 where PUBID=;

For PT 8.48 and higher, run the below SQL to verify that the message status is DONE
select * from PSAPMSGSUBCON where QUEUESEQID=;

Message cannot be changed. Message referenced in runtime tables (Doc ID 660969.1)

Applies to

PeopleSoft Enterprise PT PeopleTools - Version 8.4 and later
Information in this document applies to any platform.
SPECIFIC TO:Enterprise, Peopletools, PT8.48+

This document was previously published as Customer Connection Solution 201065338

***Checked for relevance on 27-APR-2010***
***Checked for relevance on 12-JAN-2012***
***Checked for relevance on 09-JUL-2014***

Symptoms

Code to get the record and count from the data base

Step:1 PeopleCode:
Local File &MYFILE;
Local string &str_cnt;
Local string &FPath;

&str_cnt = "Record Name" | Char(9) | "Count";
&FPath = "\\psapsftt\TTEF\OneSource\PC-Inbound\Record.xls";
&MYFILE = GetFile(&FPath, "W", %FilePath_Absolute);
&MYFILE.WriteLine(&str_cnt);

Step2:Doselect

%SelectInit(RECNAME)
SELECT RECNAME
FROM %Table(PSRECDEFN)
WHERE RECNAME NOT IN (Record Names)
AND RECTYPE NOT IN (2,3,5) /*2 - Derived/Work 3- Sub-Record 5- Dynamic View */

Step:3:SQl
%SelectInit(COUNTER1)
SELECT COUNT(*)
FROM %Table(%bind(RECNAME))

Step:4:PeopleCode:

Code would useful to create a .txt file thru App Engine

Write the code in PeopleCode Action:
Local File &MYFILE;
&PS_SERVDIR = (GetEnv("PS_SERVDIR")) | "/";
&FPath = &PS_SERVDIR | "file.txt";
&MYFILE = GetFile(&FPath, "W", %FilePath_Absolute);
&MYFILE.WriteLine(&Input);

&MYFILE.Close();

Code useful to view a file

SQLExec(SQL.CSGC_DB_NAME, &NAME);
SQLExec("SELECT URL FROM %Table(:2) WHERE DISTNODENAME=:1", &NAME, Record.CDM_DIST_NODE, &URL);
&PRCSOUTPUTDIR = &URL | "/CSGC_CSHEET1.pdf";
ViewContentURL(&PRCSOUTPUTDIR);
ViewContentURL(“www.gmail.com”);

Code useful to open a file

Write the code in PeopleCode Action:
&FileName = ;
&ret = GetAttachment("RECORD://CSGC_CSHT_ATACH", &FileName, "/" | &FileName, "PS_SERVDIR", True);
&PS_SERVDIR = (GetEnv("PS_SERVDIR")) | "/";
&FilePath = &PS_SERVDIR | &FileName;

If &ret = %Attachment_Success And
FileExists(&FilePath, %FilePath_Absolute) Then

&TxtFile = (GetFile(&FilePath, "R", %FilePath_Absolute));

While &TxtFile.ReadLine(&Input)
&Input = LTrim(RTrim(&Input, " "), " ");
;
End-While;
End-If;

&TxtFile.Close();

Code to hide translate values dynamically

Write the code in RowInit:
Local Rowset &Xlat;

&FLD = GetRecord(Record.PY_IC_WRK1).GetField(Field.ACCOUNT_TYPE_DD);
&FLD.ClearDropDownList();

&Xlat = CreateRowset(Record.PSXLATITEM);
&Xlat.Fill("WHERE FILL.FIELDNAME = 'ACCOUNT_TYPE_DD' AND FILL.FIELDVALUE IN ('C','S')");

&Xlat_cnt = &Xlat.ActiveRowCount;
For &I = 1 To &Xlat_cnt
&CodeIn = &Xlat.GetRow(&I).GetRecord(1).FIELDVALUE.Value;
&DescIn = &Xlat.GetRow(&I).GetRecord(1).XLATLONGNAME.Value;

&FLD.AddDropDownItem(&CodeIn, &DescIn);
End-For;

Code to know whether the Scheduled App Engine ran to success or not

If &MYRQST.Status = 0 Then /* if Schedule status is success */

&LOOP = 0;
While &LOOP = 0
SQLExec("SELECT A.DISTSTATUS, A.RUNSTATUSDESCR FROM PS_PMN_PRCSLIST A WHERE A.PRCSNAME = :1 AND A.PRCSINSTANCE = (SELECT MAX(B.PRCSINSTANCE) FROM PS_PMN_PRCSLIST B WHERE B.PRCSNAME = A.PRCSNAME)", &MyAppName, &POSTED, &STATUS);

If &STATUS = "Success" And
&POSTED = 5 Then /* Posted */
&LOOP = 1
End-If;

If &STATUS = "Success" And /* Not Posted */
&POSTED = 4 Then

PeopleCode Check Number and Check Letter Functions

Couple PeopleCode functions I came across. One insures a string consists of numbers and one insures a string consists of letters.

Function Check_Number(&STR) Returns boolean;
   &LEN = Len(&STR);
   If &LEN = 0 Then
      Return False;
   End-If;
   For &I = 1 To &LEN;
      &CODE = Code(Substring(&STR, &I, 1));
      If (&CODE < 48 Or
            &CODE > 57) Then
         Return False;
      End-If;
   End-For;
   Return True;
End-Function;

Function Check_Letter(&STR) Returns boolean;
   &LEN = Len(&STR);
   If &LEN = 0 Then
      Return False;
   End-If;