利用PSXPFUNCLIB中的函数 生成XMLP report

本文介绍了一个使用 PeopleCode 和 XML 技术来生成报告的具体实例。该过程涉及从数据库中获取数据,并将其组织成 XML 格式,再通过特定函数生成和复制报告文件。文中展示了如何设置 SQL 查询、创建 XML 文档结构、读取记录以及填充 XML 节点等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import PSXP_RPTDEFNMANAGER:*;
Declare Function DeleteLocalFile PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
Declare Function GetDirSeparator PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
Declare Function GetFileNameFromPath PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
Declare Function GetDirectoryFromPath PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
Declare Function GetFileExtension PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
Declare Function ReportDefn PeopleCode TW_XML_FUNCTION.REPORT_YN FieldFormula;
Declare Function CopyReport PeopleCode TW_XML_FUNCTION.REPORT_YN FieldFormula;
Declare Function changedUpperDateWithPrefix PeopleCode TW_XML_FUNCTION.REPORT_YN FieldFormula;
Declare Function OutTypeFunction PeopleCode TW_XML_FUNCTION.REPORT_YN FieldFormula;
 
&in_PROCESS_INSTANCE = TW_RPT_039_AET.PROCESS_INSTANCE.Value;
&in_RUN_CNTL_ID = TW_RPT_039_AET.RUN_CNTL_ID.Value;
&in_OPRID = TW_RPT_039_AET.OPRID.Value;
&in_TW_BU = TW_RPT_039_AET.TW_BU.Value;
&in_TW_DEPT_SELECT = TW_RPT_039_AET.TW_DEPT_SELECT.Value;
&in_TW_WF_SELECTED = TW_RPT_039_AET.TW_WF_SELECTED.Value;
&in_TW_INS_SELECT = TW_RPT_039_AET.TW_INS_SELECT.Value;
&in_PRD_BGN_DT = TW_RPT_039_AET.PRD_BGN_DT.Value;
&in_PRD_END_DT = TW_RPT_039_AET.PRD_END_DT.Value;

&sqlString = "SELECT * FROM PS_JOB WHERE BUSINESS_UNIT = :1 AND EFFDT >= :2 AND EFFDT <= :3";
&xmldocRoot = CreateXmlDoc("<?xml version='1.0' encoding = 'UTF-8'?><roots></roots>");
&nodeDocRoot = &xmldocRoot.DocumentElement;
&nodeRoot = &nodeDocRoot.AddElement("Root");
&nodeCurrent = &nodeRoot.AddElement("BU");
&nodeCurrent.NodeValue = &in_TW_BU;
&nodeCurrent = &nodeRoot.AddElement("LAB_HEAL");
If &in_TW_INS_SELECT = "NHI" Then
   REM 健保;
   &nodeCurrent.NodeValue = "健保";
Else
   REM 勞保;
   &nodeCurrent.NodeValue = "勞保";
End-If;
 
&sql = CreateSQL(&sqlString, &in_TW_BU, &in_PRD_BGN_DT, &in_PRD_END_DT, �te);
&rec = CreateRecord(Record.TW_RPT_039_DEV);
While &sql.Fetch(&rec)
  
   &nodeCurrent = &nodeRoot.AddElement("COMPANY_DESCR");
   &nodeCurrent.NodeValue = &rec.COMPANY.Value;
   &nodeCurrent = &nodeRoot.AddElement("ACT_YM");
   &nodeCurrent.NodeValue = &ym;
   &nodeCurrent = &nodeRoot.AddElement("PRINT_DT");
   &nodeCurrent.NodeValue = DateTimeToLocalizedString(�te, "yyyy/MM/dd");
   &nodeCurrent = &nodeRoot.AddElement("PRINT_TIME");
   &nodeCurrent.NodeValue = DateTimeToLocalizedString(�tetime, "HH/mm/ss");
  
   &sql2String = "SELECT * FROM PS_JOBCODE_TBL WHERE ...";
   &sql2 = CreateSQL(&sql2String);
   &rec2 = CreateRecord(Record.TW_RPT_039_DEV);
   While &sql2.fetch(&rec2)
     
      &nodeBody = &nodeRoot.AddElement("BODY");
      &nodeCurrent = &nodeBody.AddElement("AMOUNT");
      &nodeCurrent.NodeValue = &rec2.TW_INS_AMOUNT.Value;
      REM ADD BY ZTF @ 11/08 ;
      &nodeCurrent = &nodeBody.AddElement("DEPT_CODE");
      &nodeCurrent.NodeValue = &rec2.TW_BU_DEPT_PRER_CD.Value;
      &nodeCurrent = &nodeBody.AddElement("DEPT_DESCR");
      &nodeCurrent.NodeValue = &rec2.DESCR4.Value;
      REM END MOD ;
      &nodeCurrent = &nodeBody.AddElement("EMPLID");
      &nodeCurrent.NodeValue = &rec.EMPLID.Value;
      &nodeCurrent = &nodeBody.AddElement("BU_PERS_NUM");
      &nodeCurrent.NodeValue = &rec2.TW_PRER_NUM_BU.Value;
     
      &nodeCurrent = &nodeBody.AddElement("NAME_NAME");
      SQLExec(" SELECT NAME_FORMAL FROM PS_PERSON_NAME WHERE EMPLID = :1 ", &rec2.EMPLID.Value, &name);
      &nodeCurrent.NodeValue = &name;
     
      &nodeCurrent = &nodeBody.AddElement("NATIONALID");
      SQLExec(" SELECT NATIONAL_ID FROM PS_PERS_NID WHERE EMPLID = :1 AND COUNTRY = 'TWN' ", &rec2.EMPLID.Value, &nationalID);
      &nodeCurrent.NodeValue = &nationalID;
     
      &nodeCurrent = &nodeBody.AddElement("DEP_NAT_ID");
      &nodeCurrent.NodeValue = &rec2.NATIONAL_ID.Value;
     
      REM ADD BY ZTF @ 11/08 ;
      &nodeCurrent = &nodeBody.AddElement("DEP_RELAT");
      &nodeCurrent.NodeValue = &rec2.TW_NHI_DEP_CD.ShortTranslateValue;
      REM END MOD ;
     
      &nodeCurrent = &nodeBody.AddElement("ACT_DT");
      &nodeCurrent.NodeValue = DateTimeToLocalizedString(&rec2.EFFDT.Value, "yyyy/MM/dd");
   End-While;
  
End-While;

&nodeCurrent = &nodeRoot.AddElement("TOTAL_COUNT");
&nodeCurrent.NodeValue = &pageRecCount;


&wkprocess = TW_RPT_039_AET.PROCESS_INSTANCE.Value;
&wkrpt = "TW_RPT_039";
&DATEPART = DateTimeToLocalizedString(�te, "yyyyMMdd");
&OutFormat = OutTypeFunction(&wkrpt, &wkprocess);
rem &filename = &wkrpt | "_" | &DATEPART | "_" | &wkprocess | "." | &OutFormat;
&filename = "xxxxx表_" | &wkprocess | "." | &OutFormat;

ReportDefn(&wkrpt, &wkprocess, &xmldocRoot, &OutFormat);

CopyReport(&wkrpt, &wkprocess, &filename, &OutFormat);


资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值