SVF开发备注

来源:互联网 发布:台湾短视频 软件 编辑:程序博客网 时间:2024/05/28 06:06

SVF开发备注

标签: SVF

SVF surport site

https://faq.wingarc-support.com/svf/faq/detail.asp?Option=0&NodeID=120&DispNodeID=120&CID=0&Text=%u30A8%u30E9%u30FC%u30B3%u30FC%u30C9%u4E00%u89A7&Field=0&KW=0&KWAnd=1&Attrs=&SearchID=&Bind=FALSE&FAQID=635&baID=11&strkind=9&Page=1&Rows=10&NB=1&AspPage=LST&RFaqIDs=


SVF user manual

http://sc-svfdv01/Manual/ForExcel/index.html

UcxSingle

UcxSingle.pdf

本文以XXARRB01-請求書出力程序为例进行说明,其他帐票程序大同小异,总体流程是一样的,可以理解为一个框架,只是其中选取的内容不同而已。

1. SVF帐票输出流程

简单而言流程分为以下两步:1.生成csv文件到指定路径(XXCM_SVFDATA)

2.调用SVF引擎生成帐票

2. 打印流程分布解析

1. 生成csv文件到指定路径(XXCM_SVFDATA)

根据取数游标得到需要输出的字段之后,将它们按顺序连接(字段为空用双引号替代),并用逗号分隔:

如上图,C_DOUBLE_QUATATION= '""',C_COMMA = ','

组成csv行的字段顺序需要和定义的csv title保持一致,否则会出现标题和内容不对应的情况。

CSV文件的开头几行为固定格式:

但这部分并不是必须要的,需要注意的是第三行指定文件名,这里的文件名在之后生成的rde文件中会有体现,但如果程序只需要打印pdf格式,则这部分不会体现在pdf的文件名中,只有在SVF的打印机服务器上才能看到,如下图:

最后一行g_csv_headers为取之前截图中值集的摘要值,可以理解为csv行的title。

这几行固定之后,后面在拼接行内容即可。

接下来调用共通函数通过job id获取csv的路径和文件名

上图的函数中,仅pi_svf_job_id为输入参数,其余参数均为输出值,根据取得的csv路径,文件名和之前组成的内容,生成csv文件,依然调用共通程序:

进行到此处,为SVF帐票提供数据源的csv文件已经生成。

2. 调用SVF引擎生成帐票


以上两个调用SVF引擎的区别在于输出的文件类型不同,前者输出类型为prt,会展示在svf的打印服务器上;后者生成pdf文件,直接显示在Oracle的服务器端。XXCMPZ12.func_submit_ucxsingle在后台提交了并发请求:“XXCMSZ13_SVF帳票生成”。这个请求的可执行方法为Host类型,对应于脚本执行。脚本中最关键的代码如下:

这部分组成命令发送给UCXSingle生成SVF报表。举例如下:

Command line=['/app/dv11/appl/share/apps/apps_st/appl/xxcm/12.0.0/bin/UCXSingle''--timeout' '3600' '-h' '172.18.5.108' '-p' '44080' '-l''/app/dv11/work/share/appldat/svfout/028_ERP_004_1300036.log' '-8' '-K' '-z''-u' '-g' '/app/dv11/work/share/appldat/svfout/028_ERP_004_1300036_2479.prt''028_ERP_004' '/app/dv11/work/share/appldat/svfdata/028_ERP_004_1300036.csv']

其中各命令含义如下:

-h

UCX服务器名称(或IP地址)

-p

Universal Connect/X服务器端口号标识

-l

处理运行时的日志输出

-8

数据文件类型(UTF-8)

-K

处理页面的数量

-z

压缩

-u

处理数据文件后处理

-g

输出文件名, 如果相同的文件名存在,将覆盖原文件

-t

指定超时时间(以秒为单位)

最后一个“-t”参数后来删除了,因为在UCXSingle服务器端设置了超时相应时间(原本默认为十分钟,但如果csv中数据超过6万条,会超时爆红,现在系统设置为一小时)。

3. JOB ID对应关系

根据条件找到对应的job id,

再通过job id得到对应的输出格式等信息。

3. SVF相关

之前主要讲述了在程序中csv文件的生成,而SVF模板需要指定开发工具创建。

   

   SVF模板文件为xml格式。

 

 

    上图展示了模板的基本信息,使用A4纸格式,用纸方向为纵向,像素为400ppi。

   

    以上图为例,字段名(“名前”)为“請求先名”,这个名称应该与csv文件中的某一列名保持一致,这就是模板和csv文件的对应关系。这个字段的长度为40,字体size为12,类型为文字型。X(dot)和Y(dot)显示了字段在画布上的位置,用点作为单位。其中字段长度的单位为字节,普通日文字和汉字的长度为2个字节,片假名数字英文的长度为1个字节。这样的设计要求事先调查好需要展示的字段,如果发生超长的情况,虽然不会报错,但报表会自动将超出部分截断不显示。

    SVF还提供了内置的函数,使一些操作变的简单,下面列举一些介绍:

1.   当前页和总页数

当前页:FORMAT(_PAGE_CNT,"ZZ9"),_PAGE_CNT为自带函数,记录当前的页码。

总页数:FORMAT(_TOTAL_PAGE_CNT,"ZZ9"),_TOTAL_PAGE_CNT为自带函数,记录总页数。

这个FORMAT也是内置函数,用来控制数字的输出格式。

2.   IF(条件式,真值,假值)

举例:

IF(請求合計行フラグ = 'Y',FORMAT(数量,"ZZZ,ZZZ,ZZZ"),FORMAT(数量,"ZZZ,ZZZ,ZZ9"))

当“請求合計行フラグ”字段为‘Y’时,取数量格式为FORMAT(数量,"ZZZ,ZZZ,ZZZ"),否则取数量格式为FORMAT(数量,"ZZZ,ZZZ,ZZ9")。前后两者的区别在于,前者为0不显示,后者为0时显示0。

3.   SUM汇总

举例:

将字段“金額”的汇总值赋给这个字段。

4.   明细行

作为报表很常见的明细行,SVF中是这样体现的:

首先明细行必须画在subForm上,无法单独存在于画布上,如下图所示:

绿色部分为明细重复行,可循环。而黄色部分为subForm,绿色部分无法超出黄色部分。

Record Type选择明细类型。

除了明细类型,还可以选择合计,总计等。

 
 
0 0
原创粉丝点击