Академический Документы
Профессиональный Документы
Культура Документы
o
o
o Write the following PeopleCode in the FieldChange Event of the Print Button. Please note in our
page design we have one record in scroll level 0 and 2 scrolls in level 1. Also note the
winmessage marked in bold and highlighted in yellow can be used to generate the Sample data
file.
o The code consists of 2 part.
o Part 1 creates the XMLDoc
o Part 2 runs the XMLP Report using the class in PeopleSoft delivered Application Package
PSXP_RPTDEFNMANAGER
/************************************************************************/
import PSXP_RPTDEFNMANAGER:*;
/* Header Elements */
&nodeCurrent = &nodeRoot.AddElement("soa_reimb_id");
&nodeCurrent.NodeValue = &recHeader.soa_REIMB_ID.Value;
&nodeCurrent = &nodeRoot.AddElement("rpt_date");
&nodeCurrent.NodeValue = String(%Date);
&nodeCurrent = &nodeRoot.AddElement("rpt_time");
&nodeCurrent = &nodeRoot.AddElement("soa_travel_type");
&nodeCurrent = &nodeRoot.AddElement("name");
&nodeCurrent.NodeValue = &recHeader.GetField(Field.NAME).Value;
&nodeCurrent = &nodeRoot.AddElement("emplid");
&nodeCurrent.NodeValue = &recHeader.EMPLID.Value;
&nodeCurrent = &nodeRoot.AddElement("soa_reimb_status");
&nodeCurrent.NodeValue = &ReimbStatus;
&nodeCurrent = &nodeRoot.AddElement("soa_busn_purpose");
&nodeCurrent.NodeValue = &BusnPurpose;
&nodeCurrent = &nodeRoot.AddElement("grade");
&nodeCurrent.NodeValue = &recHeader.GRADE.Value;
&nodeCurrent = &nodeRoot.AddElement("deptid");
&nodeCurrent.NodeValue = &recHeader.DEPTID.Value;
&nodeCurrent = &nodeRoot.AddElement("business_unit");
&nodeCurrent.NodeValue = &recHeader.BUSINESS_UNIT.Value;
&nodeCurrent = &nodeRoot.AddElement("phone");
&nodeCurrent.NodeValue = &recHeader.PHONE.Value;
&nodeCurrent = &nodeRoot.AddElement("end_dt");
&nodeCurrent.NodeValue = &recHeader.END_DT.Value;
&nodeCurrent = &nodeRoot.AddElement("start_dt");
&nodeCurrent.NodeValue = &recHeader.START_DT.Value;
/**************************************************/
/* Details */
/* Only include real detail items as sometimes there's a dummy tools row which we */
/* don't want. We check if this is a real row by seeing if the value is populated. */
If All(&recDtlItem.soa_EXPENSE_TYPE.Value) Then
&nodeDetail = &nodeRoot.AddElement("detail");
&nodeCurrent = &nodeDetail.AddElement("soa_expense_type");
&nodeCurrent.NodeValue = &recDtlItem.soa_EXPENSE_TYPE.Value;
&nodeCurrent = &nodeDetail.AddElement("soa_bkng_dt");
&nodeCurrent.NodeValue = &recDtlItem.soa_BKNG_DT.Value;
&nodeCurrent = &nodeDetail.AddElement("soa_orig_loc");
&nodeCurrent.NodeValue = &recDtlItem.soa_ORIG_LOC.Value;
&nodeCurrent = &nodeDetail.AddElement("soa_dest_loc");
&nodeCurrent.NodeValue = &recDtlItem.soa_DEST_LOC.Value;
&nodeCurrent = &nodeDetail.AddElement("soa_prfrd_mrchnt");
&nodeCurrent.NodeValue = &recDtlItem.soa_PRFRD_MRCHNT.Value;
&nodeCurrent = &nodeDetail.AddElement("descr");
&nodeCurrent.NodeValue = &recDtlItem.DESCR.Value;
End-If
End-For;
/* Audit */
/* Only include real detail items as sometimes there's a dummy tools row which we */
/* don't want. We check if this is a real row by seeing if the value is popuated. */
If All(&recAuditItem.DATETIME_UPDATED.Value) Then
&nodeDetail = &nodeRoot.AddElement("audit");
&nodeCurrent = &nodeDetail.AddElement("datetime_updated");
&nodeCurrent = &nodeDetail.AddElement("oprid");
&nodeCurrent.NodeValue = &recAuditItem.OPRID.Value;
&nodeCurrent = &nodeDetail.AddElement("soa_reimb_status");
SQLExec("select xlatlongname from psxlatitem a where fieldname=:1 and fieldvalue=:2 and
a.effdt = (select max(b.effdt) from psxlatitem b where a.fieldname=b.fieldname and
a.fieldvalue=b.fieldvalue and b.effdt <=%DateIn(:3)) ", "soa_REIMB_STATUS",
&recAuditItem.soa_REIMB_STATUS.Value, %Date, &AuditReimbStatus);
&nodeCurrent.NodeValue = &AuditReimbStatus;
&nodeCurrent = &nodeDetail.AddElement("comments_254");
&nodeCurrent.NodeValue = &recAuditItem.COMMENTS_254.Value;
End-If
End-For;
/********************************************************/
rem WinMessage(&xmldocRoot.GenXmlString());
try
&sDirSep = GetDirSeparator();
CreateDirectory("XMLP", %FilePath_Relative);
/* start logging */
/* output directory */
CreateDirectory(&sOutputDir, %FilePath_Absolute);
CreateDirectory(&sDataDir, %FilePath_Absolute);
&oRptDefn.OutDestination = &RptOutputDir;
&oRptDefn.SetRuntimeDataXMLDoc(&xmldocRoot);
&sFileExt = GetFileExtension(&sOutputFormat);
CommitWork();
&oRptDefn.DisplayOutput();
/* cleanup */
DeleteLocalFile(&sOutputFile, %FilePath_Absolute);
Evaluate &Err.SubstitutionCount
When > 4
&sSub5 = &Err.GetSubstitution(5);
When > 3
&sSub4 = &Err.GetSubstitution(4);
When > 2
&sSub3 = &Err.GetSubstitution(3);
When > 1
&sSub2 = &Err.GetSubstitution(2);
When > 0
&sSub1 = &Err.GetSubstitution(1);
End-Evaluate;
end-try;
End-If;
/*************************************************************************/