SAPForm是ABAP设计单据打印的工具,实现与SmartForms类似的功能,并且两种工具很多概念是相同的,Smart Forms可视化设计功能更强、更直观,但SAP中很多标准单据都是由Form设计的,每个项目都需要调整标准的单据格式,再介绍较复杂的Form制作。内容如下:
(1)一个简单的单据打印例子,包括Form制作,打印程序设计;
(2)复杂单据的制作,包括图片的上传、变量的传递、循环变量输出、表格制作;
(3)SAP Form编辑器操作,由于操作比较复杂,会多加说明;
(4)在Form中调用自定义程序。在调整系统的Form时,有时会发生需要的字段没有传递到Form的情况,那就可以使用自定义程序,定义子程序,通过输入输出变量传递到系统Form中;
(5)Form的导入与导出。

1、一个简单的单据打印例子

该例子完成有图标、表头,有文字说明的表身单据,如图

abap form tables通用_abap

1.1、Form的制作

一个Form可以有多个页面组成,一个页面含有一个或多个窗口,但一个页面只有一个主窗口。段落格式描述窗口的每一行的格式,一个Form可以有很多段落格式,在具体定义每一行内容时可以选择相关段落行。


输入TCODE:SE71,输入Form名称后,单击“创建”按钮,如图

abap form tables通用_abap_02

1.1.1、建立页面

输入描述后,单击工具条“页数”按钮,如图

abap form tables通用_abap_03

输入页名称后回车,输入描述,如图

abap form tables通用_abap form tables通用_04

1.1.2、建立段落格式

单击工具条的“段落格式”按钮,如图

abap form tables通用_工具条_05

单击“字体”按钮定义段落字体,如图

abap form tables通用_工具条_06

选择字体及字体大小,单击“记录”按钮,定义行输出字段的数量及位置,如图

abap form tables通用_abap_07

保存后,单击“窗口”,显示MAIN主窗口。再创建一个非主窗口,单击右键,选择“创建元素”菜单,如图

abap form tables通用_abap form tables通用_08

输入视窗和描述后继续,如图

abap form tables通用_abap_09

将窗口分配到页面中,单击“页窗口”,如图

abap form tables通用_form_10

右键选择“创建元素”菜单,如图

abap form tables通用_sap_11

选择已建立的主窗口,如图

abap form tables通用_sap_12

定义主窗口的位置和大小,如图

abap form tables通用_工具条_13

建立第二个窗口作为输出表头,如图

abap form tables通用_abap_14

再用格式绘制器调整两个窗口的位置和大小,单击菜单“设置”-->“格式绘制器”,选择“图形格式绘制器”,如图

abap form tables通用_abap form tables通用_15

进入格式绘制器后,将SUB1窗口往右移动,右键选择“Create Graphic”菜单,如图

abap form tables通用_sap_16

进入图像选择界面,选择“彩色”参数,选择相关图像,如图

abap form tables通用_form_17

图像对象建立,如图

abap form tables通用_sap_18

注意:关闭该设计器方法,需要单击主窗口中的菜单“设置”-->“格式绘制器”,如图

abap form tables通用_sap_19

取消“图形格式绘制器”选项,设计窗口自动关闭。

abap form tables通用_工具条_20

退回后,出现三个对象,其中一个就是刚建立的图像对象,选择“MAIN”主窗口,单击工具条的“文本元素”按钮,如图

abap form tables通用_sap_21

输入相关内容,如图

abap form tables通用_sap_22

左端格式行文字的意义如图所示

abap form tables通用_form_23

定义文本元素”/E“,名称”DATA“,采用段落格式”A1“(已定义的字段格式),输出四行。再定义表头,选择”SUB“子窗口1单击工具条的”文本元素“按钮,如图

abap form tables通用_sap_24

输入元素”MOOD“,选择A1段落格式,如图

abap form tables通用_abap_25

单击保存按钮,选择菜单”表格“-->”激活“,系统提示输入缺省段及第一页,如图

abap form tables通用_abap_26

打印程序设计:

REPORT  Z_FORMSTEST_20160715001.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
  FORM = 'ZTFORM20160715'.
  IF SY-SUBRC <> 0.
  ENDIF.

  CALL FUNCTION 'WRITE_FORM'
  EXPORTING
    ELEMENT = 'MOOD'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'SUB1'.

  IF SY-SUBRC <> 0.
  ENDIF.

  CALL FUNCTION 'WRITE_FORM'
  EXPORTING
    ELEMENT = 'DATA'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'.

  IF SY-SUBRC <> 0.
  ENDIF.

  CALL FUNCTION 'CLOSE_FORM'.

  IF SY-SUBRC <> 0.
  ENDIF.

运行后,输出结果如图

abap form tables通用_form_27