SAP 脚本 - 打印程序


在 SAP 脚本中,打印程序用于打印实际表单并从数据库表中获取数据,选择表单并以定义的格式打印文本元素。它从数据库中检索数据并将其与用户输入相结合,格式化数据并打印它。

所有打印程序和表格都存储在表TNAPR中。

打印程序中使用了不同的功能模块。要启动打印程序,使用 OPEN_FORM 功能模块,并使用 CLOSE_FORM 功能模块来结束程序。

OPEN_FORM - 在打印程序中,应在进行任何打印之前首先调用此函数。您指定表单的名称和打印语言。

CALL FUNCTION 'OPEN_FORM' 

START_FORM - 调用此函数是为了在单个请求中使用具有相似特征的不同表单。

CALL FUNCTION ’START_FORM’

WRITE_FORM - 此函数用于使用文本元素在表单中写入文本。

CALL FUNCTION ‘WRITE_FORM’

CONTROL_FORM - 此函数用于在 ABAP 程序中插入 SAP 脚本控制命令。

CALL FUNCTION ‘CONTROL_FORM’

END_FORM - 该函数最终被调用,并且没有导出参数。

CALL FUNCTION ‘END_FORM’ 

CLOSE_FORM - 要查看标准表单和标准打印程序,请运行事务代码:NACE

输入应用程序类型并单击顶部的输出类型。

国家ACE

输出类型

在下面的屏幕截图中,您可以看到所选服务的应用程序名称。

合作伙伴职能

打印程序 - 示例

以下是一个示例打印程序,用于创建包含公司相关信息(例如客户数据、日期、航班预订等)的发票。

第 1 部分 - 获取客户数据

TABLES: zcustom, zbook, zpfli.  
DATA: bookings like zbook... 
select * from... 
/In this section, you are reading the data from tables in database./ 

第 2 部分 - 开放表格

CALL FUNCTION 'OPEN_FORM'  
EXPORTING  
DEVICE     = 'PRINTER'  
FORM       = 'EXAMPLE1'  
DIALOG     = 'X'  
OPTIONS    = 
EXCEPTIONS  
CANCELLED  = 1 
DEVICE     = 2 
FORM       = 3 
OTHERS     = 11 
/In this section, you are calling OPEN_FORM function module to initialize print output./

在上述功能模块中,参数 -

  • FORM显示表单的名称。

  • DEVICE可以是 PRINTER(使用假脱机打印)、TELEFAX(传真输出)或 SCREEN(输出到屏幕)

  • OPTIONS显示了 ITCPO 类型的结构来控制各种属性 - 打印预览、份数。

第 3 部分 - 打印表格标题

CALL FUNCTION 'WRITE_FORM' 
EXPORTING 
ELEMENT  = 'textelement’  
TYPE     = 'TOP' 
WINDOW   = 'MAIN' 
FUNCTION = 'SET' 
... 
/In this section, you use WRITE_FORM function to output general text elements and column 
heading/
  • ELEMENT功能模块显示要打印的“textelement”,“WINDOW”显示要打印的表单的哪个窗口。

  • TYPE显示窗口的输出区域,如 TOP、BOTTOM 或 BODY。

  • FUNCTION指示要替换、添加或附加的文本。

第 4 部分 - 打印客户预订

LOOP AT bookings WHERE  
CALL FUNCTION 'WRITE_FORM'  
EXPORTING  
ELEMENT  = 'BOOKING'  
TYPE     = 'BODY'  
WINDOW   = 'MAIN'  
...  
ENDLOOP  
/In this section, text element BOOKING is used to output the bookings of a customer from
the loop from BOOKING table in database./

第 5 节 - 关闭表格

CALL FUNCTION 'CLOSE_FORM'  
IMPORTING 
* RESULT    = 
EXCEPTIONS 
UNOPENED    = 1 
OTHERS      = 5 
/To end the Print Program/ 

你最后调用这个函数模块,它没有导出参数。