PDF Form (2) --- 创建显示任意多行数据的动态Table

来源:互联网 发布:淘宝的视频怎么保存 编辑:程序博客网 时间:2024/05/29 16:33

创建一个可以显示任意多行数据的table

第一步:定义structure ZTABEETEST_STRUCT

1-1.png

第二步:定义table type :ZTESTF01_TABLE

它所对应的Line type为第一步创建的structure ZTABEETEST_STRUCT

1-1.png

第三步:定义structure : ZTESTF01_DATA

它含有两个component,第一个为comp1,第二个为第二步创建的table type ZTESTF01_TABLE

1-1.png

第四步:t-code:SFP 中创建一个interface ZTESTIF01,并激活

如下图所示,指定它的输入参数名称为:IM_DATA,类型为第三步创建的structure ZTESTF01_DATA

1-1.png

第五步:t-code:SFP 中创建一个Form: ZTESTIF01_FORM

(1)指定它的interface为第四步创建的interface ZTESTIF01

1-1.png

(2)在context标签页中,拖拽左侧的interface中的import:IM_DATA,到右侧的context中

1-1.png

1-1.png

第六步:创建动态的table

(1)如下图所示:在Layout标签页,左侧找到Data View,这个地方显示了Form中Context指定的参数的结构。找到要绑定到动态table中的内表,TABEE。

1-1.png

(2)右键TABEE->Options->勾选Allow Tables to Be Generated

如果要创建的动态Table是带有header的,可以勾选Create A Header Row for Any Table。

1-1.png

然后拖拽TABEE到Design View标签页效果如下图所示:

 

1-1.png

第七步:激活并测试我们创建的Form.

效果如下图所示:

1-1.png

第八步:在abap程序中调用该Form

  REPORT  ZTEST06.


*定义Form的名字

data: lv_form_name type fpwbformname.
data: form_data type ZTESTF01_DATA  .
data: form_data_table_struc type ZTABEETEST_STRUCT.
form_data-COMP1 = 'comp1'.
data : name1 type string.
data: idx type string.
do 200 times.
  idx = sy-index.
  concatenate  'partno-' idxintoname1.
   form_data_table_struc-PARTNO = name1.
append form_data_table_struc  to form_data-TABEE.
enddo.

*定义得到的函数名字,这个函数就是form的接口

data: lv_fm_name type rs38l_fnam.

*定义打印参数

data: lwa_fp_params type SFPOUTPUTPARAMS.

*定义处理结果

data: lv_result type sfpjoboutput.



START-OF-SELECTION.

*取得函数的名字:根据Form的名称lv_form_name ,调用函数FP_FUNCTION_MODULE_NAME得到的

lv_form_name = 'ZTESTIF01_FORM'.

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'

EXPORTING

      I_NAME = lv_form_name

IMPORTING

      E_FUNCNAME = lv_fm_name.

* 这个是RFC的名字

lwa_fp_params-connection = 'ADS'.

* 打开一个打印job

CALL FUNCTION 'FP_JOB_OPEN'

CHANGING

     IE_OUTPUTPARAMS = lwa_fp_params

EXCEPTIONS

     CANCEL = 1

     USAGE_ERROR = 2

     SYSTEM_ERROR = 3

     INTERNAL_ERROR = 4

     OTHERS = 5.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGIDTYPESY-MSGTYNUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.



*调用真正的form接口函数

  CALL FUNCTION lv_fm_name

  EXPORTING

       im_data form_data.



*   关闭打印job

  CALL FUNCTION 'FP_JOB_CLOSE'

  IMPORTING

       E_RESULT = lv_result

  EXCEPTIONS

       USAGE_ERROR = 1

       SYSTEM_ERROR = 2

       INTERNAL_ERROR = 3

       OTHERS = 4.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGIDTYPESY-MSGTYNUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

运行该程序得到的效果如下图所示,也就是说,可以将table中的数据显示出来了。1-1.png

注意:

(1)要显示的动态table,必须是放在Design View中的,不可以放在Master Page 中

(2)Master Page中至少要有一个Context Area

(3)要显示的动态table,不仅要放在Design View中,还要放在其中的Context Area中

(4)table相关的属性如下图所示:

Allow Page Breaks within Context --- 这个必须打勾,否则将不能分页显示所有的数据

1-1.png

原创粉丝点击