作为ERP领域中的一个重要产品,SAP系统以严谨的管理、完善的功能在许多企业得到广泛的应用。但随着应用的深入,会遇到一些严重影响系统开发效率、运行方便性、用户扩展灵活性等方面的问题。比如在打印报表开发的过程中,要花费大量的时间处理打印报表格式问题以及数据汇总、小计等问题;在涉及条码票签需求时,要花费大量的时间处理票签格式问题,并且现有的处理方式不能给用户提供足够的灵活性,在票签样式调整时还需要调整相应的程序;在需要和通过RS232连接到计算机的设备打交道时比如控制外部设备或从外部设备读取数据等,需要复杂的控制机制。

SAP助手》软件给SAP系统开发人员和企业运维管理人员提供一个软件工具,以节约这些人员在打印报表开发、条码打印、RS232外部设备控制所要花费的大量时间。

在设计打印报表或单据时,设计人员只需把注意力集中在业务数据的查询等方面。使用SAP助手软件只需要通过简单的操作,就能把这些业务数据转变为一个有良好适应性的打印报表或单据,包括打印报表格式、列宽度、列顺序、报表数据汇总等。新的、临时性的汇总要求等也可以可视化操作实现。设计好的打印报表样式可以方便的部署到其它计算机上。而所有这些都不需要再调整SAP系统中的程序而实现。

在设计条码票签时,程序设计人员只需在SAP中按照要求把需要的数据准备好,然后使用SAP助手和票签打印软件就能打印出需要的条码票签。其中票签的格式通过票签设计打印软件完成,数据处理的工作由SAP助手完成。使用SAP助手可以随时按照用户的要求打印条码票签,即使票签内容是基础数据再加工获得的(如添加前缀、后缀、内容再组合、内容加密变换以便打印加密二维条码)。

目前SAP系统对于通过RS232端口连接到计算机的外部设备,没有较好的控制方法。ERP系统需要较为复杂的控制机制如开发专用的ActiveX控件、然后在SAP系统中调用这个对象控制外部设备。这种方法不利于系统的开发,比如需求变了,SAP系统程序和ActiveX控件要随之改变。SAP助手提供了一个通用的RS232接口读写控制方法,系统通过该方法直接填写控制命令即可获得结果。最简单的数据获取甚至不需要已有的SAP程序做任何调整就可以完成。SAP助手还可以在获取数据后再对原始数据按照配置的要求预处理(如指定小数位数、小数舍入规则等)再传递给SAP系统。

软件开发运行环境:

.NETFramework4.0

VSC#

需要安装SAPGUI7.3

条码打印还需要安装条码设计打印软件Bartender企业版。

SAP用户账户需求:不需要独立的SAP用户账户。

数据安全性控制:受SAP用户权限控制。

一、快速打印报表设计

SAP系统中打印报表设计一般采用以下的流程:设计SAP查询条件输入界面-----根据输入的查询条件使用ABAP查询数据-----查询结果展示界面(ALV等)-------设计SmartForm打印格式----关联这些界面形成一个查询程序。

在这个过程中,查询条件输入界面、查询结果展示界面、SmartForm打印格式等步骤设计模式是固定的,开发人员大部分的时间是花费在调整输出格式方面,特别是SmartForm打印格式的设置要测量----打印---调整多次循环尝试。

设计好的打印报表在提交用户使用后其格式就固化了,如果用户有调整列宽度或列顺序等要求时,相应的开发人员要调整对应的SmartForm打印格式程序。如果用户还要根据需要调整分类小计、汇总标准和规则等,SmartForm打印格式程序就要做大量的调整。所以开发人员大量的时间花费在格式调整、数据源调整等无谓的工作上。

SAP助手的快速打印报表设计功能在以下几个方面可以显著减少开发人员打印报表设计所需要时间:

l不再需要SmartForm打印格式设计这一费时的步骤,具体的打印报表设计工作在SAP助手中可视化设计完成。在SmartForm打印报表设计过程中,查询数据的小计、汇总的设置,需要做相应的设计工作。如果不想在格式上调整,还可以在数据源上按照需要汇总、插入数据以便打印这些数据。而这些过程需要大量的时间和尝试过程完成。SAP助手采用可视化的模式设计打印报表。

l打印报表列的顺序、宽度、排序模式、分组模式等可视化设置,不需要边尝试边打印。甚至在运行阶段也可以临时的修改这些格式。

l列可以小计、求平均值、求最大最小值、计数等。

下面几个图展示了一个报表格式的设计和使用过程:

1、按照正常的顺序设计SAP中数据查询、展示的界面和程序。

132033756.png

上例使用了SAP中测试数据库的数据。

2、运行时点击SAP界面中的“报表打印”按钮,激活SAP助手程序。

3、指定报表使用纸张格式。在运行时可以临时修改。

132316568.png

4、拖动一列到分组区就可以按照该列分组数据。可以多层分组,层数不限。上图报表按照“出发国家”分组。

5、设置各列标题、显示或隐藏、排序、汇总、小计等格式。还可以使一个列中相同数据单元进行合并。

132345368.png

一个报表数据源提供的数据列类型和列数量是由SAP系统中动态提取的,不需要用户做预先的设置工作。

6、点击“打印”按钮即可看到设置的格式的效果。

132419384.png

7、报表可以导出为以下多种格式的文件并可以通过邮件发送给指定的用户。

132453804.png

特别要强调的是3~7步的几个步骤可以在任何时间执行,这样用户可以根据需要临时调整报表样式而不需要再调整SAP程序。同时SAP助手的日志记录会记录下每一个打印的报表,并且在需要的时候重现这些报表。

以下是SAP中部分程序片段:

START-OF-SELECTION.
SELECT*FROMSPFLIINTOTABLEITAB_SPFLI."填充数据

PERFORMGETFIELDNAMEUSINGITAB_SPFLI'D:\SAP\SAPAssist\Bin\''N001''航班信息表''查询条件''业务编码1''测试''库房''复核''审批'.

调用SAP助手在SAP系统中预建的函数,主要任务:

取得数据内表的结构信息;取得数据内表内容;取得报表其它内容。

使用行数'GUI_DOWNLOAD'导出。

CALLFUNCTION'GUI_EXEC'
EXPORTING
COMMAND
='D:\SAP\SAPAssist\Bin\SAPAgent.exe'
PARAMETER='R,N001,D:\SAP\SAPAssist\Bin\'

"报表编号、路径
IMPORTING
RETURNCODE
=RT.

调用SAP助手的函数,显示打印报表。

保存设计好的报表格式,在下次查询后打印就可以使用该报表样式。简单地把报表样式数据复制到别的计算机上就可以达到分发报表格式的目的。

二、条码打印功能

传统的SAP条码打印方式有三种:最直接的方法就是利用SAPScript。在SAPScript中定义条码库和标签版式,然后通过打印机驱动完成打印任务。第二种方法,是利用条码标签设计软件生成用打印机语言描述的标签版式,并将其放入SAPScript,由SAPScript控制数据流和打印任务。这两种方法均需要开发人员编程。第三种方法是利用现成的条码标签设计软件,如BarTender企业版,他们与SAP系统的接口已经开发完毕并经过认证。用户只需调用、建立关联便可使用,勿需编程。

将条码标签打印系统接入SAP系统有两种途径:由Bartender控制和由SAPScript控制,采用那种方法决定于您对SAP服务器负载的考虑。由Bartender控制,您可将Bartender和他的控制程序装在另一台机器上,减少了SAP服务器运行SAP脚本(Script)的负担。无论那种方法都能做到让使用者感觉不到Bartender的运行。就像SAP自动打印一样。

不管采用以上那种方法打印条码,都会存在以下问题:

l需要SAP编程。特别是使用SAPScript时,需要对脚本描述语言有一定的了解。在用户需求变更时,还需要对这些程序做相应调整。导致解决问题的时间较长。

l如果使用BarTender等第三方软件来打印条码,仍然需要编程按照接口的要求形成指定格式的数据文档。数据形式如果变化,这些程序要做相应的调整。

l以上几种方案都不能有效快捷的解决以下类型的需求:SAP提供的数据内容不变,但打印票签的内容需要做进一步的处理如:在某个内容前面添加前缀、后缀、统一处理数据类型数据的小数位数、用几部分的内容组成一个新的内容、对某个内容进行加密处理等。

其中第三个数据处理模式一般是在以下场景遇到:SAP系统开发完成后,需要再对票签形式进行调整。或者在开发条码打印系统时不希望在SAP中处理而把这部分工作放在SAP外部处理,以便给应用带来灵活性如相同的数据可以打印不同的票签。

SAP助手可以方便的处理以上的各种条码打印需求,它利用BarTender企业版的条码打印功能和自身的控制、数据处理功能,灵活、随需而变的打印需要的条码票签。

SAP助手处理条码票签打印有两种模式:

1、使用BarTender企业版的命令行模式打印:SAP程序准备好票签数据形成文件,然后使用命令行的方式调用BarTender程序(不允许进一步处理数据)。"票签打印

CALLFUNCTION'GUI_EXEC'
EXPORTING
COMMAND
='D:\SAP\SAPAssist\Bin\SAPAgent.exe'
PARAMETER='L1,Test1,D:\SAP\SAPAssist\Bin\data\BiaoQian.TXT'

IMPORTING
RETURNCODE
=RT.

2、使用BarTenderActiveX动态再处理数据:可以进一步处理SAP提供的票签数据,包括添加前缀、后缀、处理小数位数,允许使用SAP提供的数据形成新的数据,对某些数据进行加密处理以便形成加密二维条码数据。

CALLFUNCTION'GUI_EXEC'
EXPORTING
COMMAND
='D:\SAP\SAPAssist\Bin\SAPAgent.exe'
PARAMETER='L2,Test2,D:\SAP\SAPAssist\Bin\data\BiaoQian.TXT'

IMPORTING
RETURNCODE
=RT.

使用SAP助手处理条码打印需求的方法如下:

1、设置系统可以打印票签。

2、如果要使用命令行模式的条码打印方式,还需要设置BarTender程序的安装的位置、票签模板位置、命令行的前后缀内容。

132526752.png

3、如果要使用再处理数据的模式,还要设置数据处理模式:

132602391.png

输入前缀、后缀、小数位数、是否加密,如果要使用现有内容加工为新的内容,点击“构成方式”按钮,可以在下面的窗口中指定加工方式:

132628308.png

这些内容设置好后,就可以在SAP中点击“打印票签”按钮直接打印条码票签,用户感觉不到条码打印软件的存在。如果仅要调整票签打印形式,只需调整打印模板即可。数据再处理的方式可以随时调整,立即生效。不需要再调整SAP程序。

下面是一些打印样张:

未加密条码132651764.png

加密条码:132710626.png

注意加密后的内容已经发生变化。如果在票签模板中把其打印类型指定为二维条码,下次打印系统就把这些内容打印为指定编码模式的二维条码。加密的内容就打印为加密条码。

132734357.png

当然,这些加密条码需要在读取后解密才能解析出正确的内容。SAP助手中也有相应的函数可以调用,完成相应的解密与解析工作。

日志系统会记录票签打印历史,并且在需要的时候不需要SAP也可重复打印这些打印过的票签。

三、外部串口设备控制

SAP中控制通过RS232接口连接到计算机上的设备一直是一个比较麻烦的问题。首先SAP没有直接控制端口的函数或接口。另外各种设备控制有自己独立的协议。针对不同的设备,要么使用通用的第三方接口对象、然后传输设备专用的指令。要么专门针对一种设备开发专用的控制接口程序。不管那种方法,都有一些复杂的配置和使用过程。

SAP助手对RS232接口提供一个通用的控制方法,其连接与控制是高度可配置的。另外还提供一些方便用户使用的功能:可以设置控制指令;如果要从这些设备读数,可以设置正数/负数读取选择;读取数据的小数位数及舍入控制(任意指定舍入规则);

SAP助手还提供在应用程序中点击热键读取数据然后写入目标程序的功能,这样已经编写好的应用程序包括SAP程序就不用做任何修改即可直接读取外部设备的输入结果。

下面的例子就是针对通过RS232接口连接到计算机上的梅特勒-托利多(METTLERTOLEDO)电子天平,在SAP系统中读数的场景介绍对外部设备的控制:

1、设置窗口:

132801961.png

每个计算机连接接口可能有差异,各人操作读数的模式也有差异。所以可以根据各人的习惯和设备的连接方式设置。上面的设置是通过com1口连接设备、负数读取、小数位设置为1位、舍入规则是67入。读取热键设置为F4

2、使用剪贴板传输数据模式:

CALLFUNCTION'GUI_EXEC'
EXPORTING
COMMAND
='D:\SAP\SAPAssist\Bin\SAPAgent.exe'

PARAMETER='W,D:\SAP\SAPAssist\Bin\Wei.txt'"称重
IMPORTING
RETURNCODE
=RT.
"读取剪切板中的数据
CALLMETHODCL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT
IMPORTING
DATA=GT_TEXT
LENGTH
=L_LENGTH
EXCEPTIONS
CNTL_ERROR
=1
ERROR_NO_GUI
=2
NOT_SUPPORTED_BY_GUI
=3
OTHERS=4.

LOOPATGT_TEXTINTOWA_TEXT."如何使用索引查内表?
S
=WA_TEXT-TEXT.
EXIT.
ENDLOOP.

3、使用中间文件传输数据:

CALLFUNCTION'GUI_EXEC'
EXPORTING
COMMAND
='D:\SAP\SAPAssist\Bin\SAPAgent.exe'

PARAMETER='W,D:\SAP\SAPAssist\Bin\Wei.txt'"称重
IMPORTING
RETURNCODE
=RT.
"读取剪切板中的数据
然后使用'GUI_UPLOAD'上传数据文件并且处理。

4、使用热键直接写SAP

SAP系统中不用做任何编程工作,只需在需要输入重量数据的位置点击F4即可。

132823238.png

四、和SAP协同作业

SAP助手是一个隐藏在后台运行的独立程序,其功能可以方便的集成到SAP系统中,实际的终端用户觉察不到该程序的运行。它协助SAP系统完成一些独特的工作需求。

顺便强调一下,SAP助手是一个独立的程序,提供了通用接口。如果在其它程序中如用友ERP系统、企业已经在用的系统或新开发的系统等,如果能够提供对该接口的调用并且提供必需的数据,那么这些程序也可以使用前面描述的功能。从这个角度看,SAP助手更像是一个通用信息系统助手。

QQ2473543261