zoukankan      html  css  js  c++  java
  • SAP Adobe Form 教程二 表

    本文将介绍一些进阶内容,前文:SAP Adobe Form 教程一 简单示例

    方法和对比

    使用表对象(Table Object)创建表

    优点:

    它简单易行。 当我们只有很少的字段单行时,我们可以使用它。
    designer知道你正在使用表格。 designer允许选择行或列,同时调整列的大小。
    有选项允许可以在每页上重复表格标题。

    缺点:

    如果我们停用context中的字段,则在form中任何地方需要时都将难以使用。 例如在脚本编辑器中(有一些条件打印等)。
    很难处理嵌套表。
    打印非标准表格时存在限制。

    使用SubForm Method创建表

    什么是SubForm?
    SubForm是form的一部分,用于组织不同的元素,如输入字段、表格、呈现正文页面文本,很少用于主页面。
    换句话说,Subform 只不过是一组元素。如果我们要在布局上组的某些元素,我们可以使用subform,并将元素们包装进去。

    优点:

    在布置表格时,subform为我们提供了更大的灵活性。
    打印多行表格时,subform更有用
    可以重新排列subform中的单元格(打印我们想要的任何地方)
    打印嵌套表时,它非常有用。

    没有什么缺点,实际上在内部,表对象被作为subform结构处理。 如果在Designer中查看模板的XML源代码,可以确认这一点。
    如果希望在分页的情况下重复标题,必须使用“Overflow Leaders”(Table Object是复选框)。 我们需要在对象面板的“分页”选项卡上设置它们。

    因此,根据我们想要实现的目标,我们可能必须使用subform而不是table object。但对于标准表,建议直接使用表table object。遵循KIS策略(Keep It Simple)。

    步骤

    共同步骤

    首先构建两种方法都需要的interface。

    事务:SFP。

    输入接口名称并创建(对于Adobe Form,interface是必需的)。

    让我们添加我们自己的自定义参数名称。 选择Form Interface下的Import选项(左侧),然后按Create按钮(右侧)添加一个Importing Parameter

    导入参数 IT_KNA1 的类型为CCRCTT_KNA1。CCRCTT_KNA1是KNA1的表类型。 在 Adobe Form的interface/function module中,需要使用表类型参数将表格数据从程序传递到form(Tables参数已过时)。

    保存、检查、激活interface。

    回到事务SFP,创建form。

    提供之前创建的描述和interface名称,保存。

    将 IT_KNA1从之前创建的Interface拖到 Context。

     

    1,用Table Object创建表

    反激活不需要打印的字段。选中它们,

    右键选择deactivate。

    结果如下,

    只有6个激活字段。

    前往layout标签,

    插入文本变量,作为标题。

     

    按需填入文本,

    按上图右下角修改字体。如果没看到字体栏的话,按下图添加,

    前往Palettes -> Font。

    接着前往Data view。

    选择 IT_KNA1,将其拖放到layout中。

    可以通过拖放选项调整列的高度或宽度。 如果你想非常精确,也可以在右边的属性中调整宽度和高度。

    保存,检查和激活form。

    请注意:如果 IT_KNA1 表中的数据超过1页大小,则不会流到下一页。 如果想查看所有数据,必须确保以下两项。

    subform必须是Flowed,

    选择 IT_KNA1 并选中“Allow Page Breaks within Content”复选框。

    执行驱动程序:YRAM_ADOBE_FORM_PROGRAM2。 。输出将显示包含客户主数据的表。

     1 *&---------------------------------------------------------------------*
     2 *======================================================================*
     3 * YRAM_ADOBE_FORM_PROGRAM2 *
     4 *======================================================================*
     5 * Project : SAP Adobe Forms Tutorial *
     6 * Author : Ramanjula Naidu DARURU (www.SAPYard.com) *
     7 * Description : Driver Program for Printing the Customer data *
     8 *======================================================================*
     9 REPORT yram_adobe_form_program2.
    10 
    11 **&&~~ Data Objects
    12 DATA: gv_fm_name TYPE rs38l_fnam, " FM Name
    13 gs_fp_docparams TYPE sfpdocparams,
    14 gs_fp_outputparams TYPE sfpoutputparams,
    15 gt_kna1 TYPE STANDARD TABLE OF kna1.
    16 
    17 CONSTANTS : gv_form_name TYPE fpname VALUE 'YRAM_ADOBE_FORM2'.
    18 
    19 *======================================================================*
    20 * START of TREATMENT *
    21 *======================================================================*
    22 START-OF-SELECTION.
    23 SELECT * FROM kna1 INTO TABLE gt_kna1 UP TO 50 ROWS.
    24 *&---------------------------------------------------------------------*
    25 **&&~~ Form Processing: Call Form - Open
    26 *
    27 CALL FUNCTION 'FP_JOB_OPEN'
    28 CHANGING
    29 ie_outputparams = gs_fp_outputparams
    30 EXCEPTIONS
    31 cancel = 1
    32 usage_error = 2
    33 system_error = 3
    34 internal_error = 4
    35 OTHERS = 5.
    36 IF sy-subrc <> 0.
    37 " Suitable Error Handling
    38 ENDIF.
    39 *&---------------------------------------------------------------------*
    40 **&&~~ Get the Function module name based on Form Name
    41 *
    42 CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
    43 EXPORTING
    44 i_name = gv_form_name
    45 IMPORTING
    46 e_funcname = gv_fm_name.
    47 IF sy-subrc <> 0.
    48 " Suitable Error Handling
    49 ENDIF.
    50 *&---------------------------------------------------------------------*
    51 **&&~~ Take the FM name by execuing the form - by using Pattern-
    52 **&&~~ call that FM and replace the FM Name by gv_fm_name
    53 *
    54 **&&~~ Call the Generated FM
    55 CALL FUNCTION gv_fm_name "'/1BCDWB/SM00000176'
    56 EXPORTING
    57 /1bcdwb/docparams = gs_fp_docparams
    58 it_kna1 = gt_kna1
    59 EXCEPTIONS
    60 usage_error = 1
    61 system_error = 2
    62 internal_error = 3
    63 OTHERS = 4.
    64 IF sy-subrc <> 0.
    65 * Implement suitable error handling here
    66 ENDIF.
    67 *&---------------------------------------------------------------------*
    68 **&&~~ Form Processing: Call Form - Open
    69 *
    70 CALL FUNCTION 'FP_JOB_CLOSE'.
    71 IF sy-subrc <> 0.
    72 * Implement suitable error handling here
    73 ENDIF.
    74 *&---------------------------------------------------------------------*
    75 *&---- Close the spool job
    76 CALL FUNCTION 'FP_JOB_CLOSE'
    77 EXCEPTIONS
    78 usage_error = 1
    79 system_error = 2
    80 internal_error = 3
    81 OTHERS = 4.
    82 IF sy-subrc <> 0.
    83 * <error handling>
    84 ENDIF.
    85 *&---------------------------------------------------------------------*
    YRAM_ADOBE_FORM_PROGRAM2

    2,用Sub Form创建表

    通过使用此方法,我们可以以任意顺序显示字段,并以多行显示字段。

    前往layout,

    默认情况下,每个form都有Master Page和Body Page(无标题Subform)(page1)。
    在简单场景中,可以使用Master Page来打印标题数据和用Body Page来打印行项目数据。 

    内容区域用于打印Body Page中的数据。 我们可以更改Master Page中内容区域的长度或宽度。
    我们将标题放在Master Page中。

    提示:在开发过程中,如果想查看form的基本输出,只需单击Preview PDF选项卡。

    前往design view。
    要打印表数据,Subform必须是FLOWED。

    这是非常重要的一步。 我们需要插入Subform。

    可以在layout选项卡中更改窗口的高度或宽度。 也可以拖动和调整。

    Subform可用作标题。 请注意Untitled SubForm已在左侧重命名为 Header。

    将表头内容更改为Flowed,将Flow directio 更改为Western text,这样字段将并排显示。

    选择标题subform,nsert -> 0 – Standard -> Text field。

    需要更改文本字段的属性以获得更好的显示和外观。

    选择 TextField1,将外观从Sunken box改为Solid box。

    将位置从改为left改为none,

     值类型从用户输入改为只读,

    边框纯色,

    复用TextField1。

    在标题sub from复制粘贴TextField1。(在本例中需要粘贴4次,因为我们要显示5个字段)

    修改字段名,

    传给它们固定值,

    全部字段都改一下,

    这样就完成了标题的创建。下面是item数据。


    再创建一个Subform并将其命名为 Items。

    将items subform内容更改为Flowed,并将Flow direction更改为Western text,以便并排显示字段。

    复制五个字段 Customer No、Country、Name、Street 和 Telephone 并粘贴到 items subform下。
    删除所有字段的默认值。

    将数据内表,即 IT_KNA1 绑定到 Items subform。

    (绑定是Adobe Form中非常重要的一部分,要确保数据绑定正确)

    绑定字段:
    CustomerNo to KUNNR,
    Country —— LAND1,
    Name —— NAME1,
    Street —— STRAS,
    Telephone —— TELF1.

    必须勾选Repeat Subform for each data item。

    运行驱动程序:YRAM_ADOBE_FORM_PROGRAM2.(程序见上文)

    输出应该方法1是一样的。

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/hhelibeb/p/15496564.html
Copyright © 2011-2022 走看看