Tuesday 5 December 2023

Component Interface - Inserting a New Item into a Collection

 Assume you have a collection on the Component Interface and you want to insert a new row into the collection. 

This would be the equivalent of hitting the ‘+’ button on an online page (Scroll area).

To insert a new row to the collection one can use the InserItem method.  one need to specify the index (row number in rowset) while using the method.

&myItem = &Collection.InsertItem(1);


Below is the code for inserting rows in the Transcript Text component in PeopleSoft Campus Solution.


Global File &fileLog;


Global string &FileName;

Global string &PROCESS_INSTANCE;

Global string &RUN_CNTL_ID;


Local ApiObject &oSession, &oLTscrptTextCi;

Local ApiObject &oPersnlFerpaVwCollection, &oPersnlFerpaVw;

Local ApiObject &oSrvcIndSelVwCollection, &oSrvcIndSelVw;

Local ApiObject &oStdntCareerCollection, &oStdntCareer;

Local ApiObject &oTscrptTextLocCollection, &oTscrptTextLoc;

Local ApiObject &oTscrptTextCollection, &oTscrptText;


Function errorHandler()

   Local ApiObject &oPSMessageCollection, &oPSMessage;

   Local number &i;

   Local string &sErrMsgSetNum, &sErrMsgNum, &sErrMsgText, &sErrType;

   

   &oPSMessageCollection = &oSession.PSMessages;

   For &i = 1 To &oPSMessageCollection.Count

      &oPSMessage = &oPSMessageCollection.Item(&i);

      &sErrMsgSetNum = &oPSMessage.MessageSetNumber;

      &sErrMsgNum = &oPSMessage.MessageNumber;

      &sErrMsgText = &oPSMessage.Text;

      

   End-For;

   rem ** Delete the Messages from the collection **;

   &oPSMessageCollection.DeleteAll();

End-Function;


&FileName = "DOCKEY_GENERATION_PRCS_LOG" | ".TXT";

&fileLog = GetFile(&FileName, "W");


try

   rem ** Set the Log File **;

   &fileLog = GetFile("C:\Users\MUHAMM~1\AppData\Local\Temp\L_TSCRPT_TEXT_CI.log", "w", "a", %FilePath_Absolute);

   rem &fileLog.WriteLine("Begin");

   rem ** Get current PeopleSoft Session **;

   &oSession = %Session;

   

   rem ** Set the PeopleSoft Session Error Message Mode **;

   rem ** 0 - None **;

   rem ** 1 - PSMessage Collection only (default) **;

   rem ** 2 - Message Box only **;

   rem ** 3 - Both collection and message box **;

   &oSession.PSMessagesMode = 1;

   

   rem ** Get the Component Interface **;

   &oLTscrptTextCi = &oSession.GetCompIntfc(CompIntfc.L_TSCRPT_TEXT_CI);

   If &oLTscrptTextCi = Null Then

      errorHandler();

      throw CreateException(0, 0, "GetCompIntfc failed");

   End-If;

   

   rem ** Set the Component Interface Mode **;

   &oLTscrptTextCi.InteractiveMode = True;

   &oLTscrptTextCi.GetHistoryItems = True;

   &oLTscrptTextCi.EditHistoryItems = True;

   

   rem ** Set Component Interface Get/Create Keys **;

   &oLTscrptTextCi.EMPLID = "20260";

   &oLTscrptTextCi.ACAD_CAREER = "UGDS";

   &oLTscrptTextCi.STDNT_CAR_NBR = 0;

   

   rem ** Execute Get **;

   If Not &oLTscrptTextCi.Get() Then

      rem ** No rows exist for the specified keys.**;

      errorHandler();

      throw CreateException(0, 0, "Get failed");

   End-If;

   

   

   rem ** Begin: Get/Set Component Interface Properties **;

      rem ** Set/Get STDNT_CAREER Collection Field Properties -- Parent: PS_ROOT Collection **;

   &oStdntCareerCollection = &oLTscrptTextCi.STDNT_CAREER;

   Local integer &i126;

   rem For &i126 = 1 To &oStdntCareerCollection.Count;

   rem    &oStdntCareer = &oStdntCareerCollection.Item(&i126);

   &oStdntCareer = &oStdntCareerCollection.Item(1);

   

   rem ** Set TSCRPT_TEXT_LOC Collection Field Properties -- Parent: STDNT_CAREER Collection **;

   &oTscrptTextLocCollection = &oStdntCareer.TSCRPT_TEXT_LOC;

   rem    Local integer &i228;

   rem   For &i228 = 1 To &oTscrptTextLocCollection.Count;

   &oTscrptTextLoc = &oTscrptTextLocCollection.Item(1);

   &oTscrptTextLoc = &oTscrptTextLocCollection.InsertItem(1);

   

   rem &oTscrptTextLoc.PRINT_LOC_SEQ =  [*];

   &oTscrptTextLoc.RELATIVE_POSITION = "K";

   &oTscrptTextLoc.PRINT_LOC = "K";

   &oTscrptTextLoc.INSTITUTION = "LUMS";

   rem &oTscrptTextLoc.STRM = [*];

   rem &oTscrptTextLoc.STDNT_DEGR = [*];

   rem &oTscrptTextLoc.MILESTONE_NBR = [*];

   rem &oTscrptTextLoc.MODEL_NBR = [*];

   rem &oTscrptTextLoc.EXT_ORG_ID = [*];

   rem &oTscrptTextLoc.EXT_DEGREE_NBR = [*];

   

   rem ** Set TSCRPT_TEXT Collection Field Properties -- Parent: TSCRPT_TEXT_LOC Collection **;

   &oTscrptTextCollection = &oTscrptTextLoc.TSCRPT_TEXT;

   rem   Local integer &i339;

   rem    For &i339 = 1 To &oTscrptTextCollection.Count;

   &oTscrptText = &oTscrptTextCollection.Item(1);

   &oTscrptText = &oTscrptTextCollection.InsertItem(1);

   REM &oTscrptText.TEXT_SEQ_NBR =  [*];

   &oTscrptText.TRANSCRIPT_LEVEL = "00"; /* Never Print */

   rem &oTscrptText.TSCRPT_TYPE = [*];

   

   &oTscrptText.SSR_TRANSCRIPT_TXT = "My Transcript Text";

   rem &oTscrptText.TSCRPT_TYPE2 = "OUGDS";

   

   rem      End-For;

   rem   End-For;

   rem  End-For;

   rem ** End: Get/Set Component Interface Properties **;

   

   rem ** Execute Save **;

   

   If Not &oLTscrptTextCi.Save() Then;

      errorHandler();

      throw CreateException(0, 0, "Save failed");

   End-If;

   

   

   rem ** Execute Cancel **;

   rem If Not &oLTscrptTextCi.Cancel() Then;

   rem errorHandler();

   rem throw CreateException(0, 0, "Cancel failed");

   rem End-If;

   

catch Exception &ex


   rem Handle the exception;

   MessageBox(0, "", 0, 0, "" | &ex.ToString());end-try;

rem &fileLog.WriteLine("End");

&fileLog.Close();


No comments:

Post a Comment