Smart forms

目录

一、Smart forms 创建

1.概述

2.Smart forms

命名规则:

屏幕分为三个部分:

定义Smart Forms 的全局设置

设定全局设置—表格接口

设定全局设置—全局定义

设置页和窗体 

窗口节点

3、Smartform样式  

表头数据

段落样式

字符格式 

Smartform文本模块

Smartform页格式设置

二、Smart forms 程序调用

触发按键,调用函数

调用smart名字

打印控制

 调用SSF_OPEN函数设置打印机,打开输出请求,使用用户打印设置

 调用Smartforms 的Function  Module打印– smart表及变量传递

 关闭打印机设置

三、常用查表方法

查表方法1—F1

查表方法2—SE16N

查表方法3—CDHDR and CDPOS

查表方法4—ST05

四、Excel 导入程序介绍


一、Smart forms 创建

1.概述

       Smart forms 是在SAP Script form的基础上产生的新的表单制作工具,但是smart forms 使用更加方便,会直接生成功能块( function module),ABAP程序中调用更加方便。

     实例 ZSD_SF_007 

2.Smart forms

      首先去SE11创建结构

      事务代码:smartforms 进入创建界面               

命名规则:

      Z<XX>_SF_<SHORT TEXT>

      <XX>-业务模块,

      <SHORT TEXT>-简短描述,字母或数字

      【不同的项目会有一部分的调整】

屏幕分为三个部分:

      1树形导航工具:显示层次结构

      2、维护屏幕:节点相关属性的设计

      3、窗口绘制器:设计输出页面格式

定义Smart Forms 的全局设置

      1、表格属性:设置表格的样式,页面的格式,输出格式等。

      2、表格接口:用来描述接口属性,输入、输出、表参数,程序调用时传递接口参数。

      3、全局定义:主要用来定义一些全局数据,还有FIELD SYMBOLS,初始化等。                              

  

设定全局设置表格接口

      用于设置通过Call Function调用Smart Forms时的参数

      1、导入—对应Call Funtion Exporting参数,用户也可以增加参数。

      2、导出—对应Call Funtion Importing参数,用户也可以增加参数。

      3、表—对应Call Funtion  Table参数,用户也可以增加参数

      4、例外—对应Call Funtion Exceptions参数,即出错捕捉参数。

设定全局设置—全局定义

      全局数据:可以定义在Smartform内部使用的全局变量,参考打印内容可以时系统提供的IC等类型,也可以是已存在的数据库表、结构,还可以是Smartform中定义的类型。

  (注:此处类型分配的值必须选择Type 或者 Type ref to (对象分配),用LIKE 有时会报错。)

1、类型:定义内部使用的类型,此处均使用TYPES语句定义。

2 字段符号:定义Smartform内部使用的FIELD-SYMBOL变量。

                 此处定义的变量必须以”<”开始,以“>”结束,如:

                 FIELD-SYMBOL<dbtable> type any

3、初始化:定义初始化处理内容。

4、货币/数量字段:定义货币/数量类型的全局变量的参考字段               

             

设置页和窗体 

     什么是页?

     1Smartform的组成元素

     2Smartform由页组成的,包含至少一页或多页

     3、每一页包含多个节点,节点可以是窗体、地址、图形等。

     什么是窗口?

      1、页的组成元素

      2、窗口分为主窗口、次窗口、拷贝窗口、最终窗口。

      窗口类型—主窗口

      1、主窗口一般用于数据的列表显示,用于loop循环显示;当然也可以显示非列表内容。

      2、一个Form中只能包含一个主窗口

      3、主窗口可以分页输出,连续输出到几页

      4、主窗口的宽度必须一致,高度和位置可以任意指定。

      窗口类型—次窗口

      1、次窗口主要用于非列表显示内容的输出

      2、每一页中可以包含多个次窗口

      3、次窗口不可分页输出

                        

窗口节点

      (1)文本节点

              建立文本节点输出文本内容,是最后一级节点

              可以使用文本编辑器,编辑文本内容,也可以直接输入文本,也可以动态输出文本。

      (2)

             列表内容显示,可按一定条件循环显示 Internal Table中内容

             可自定义表的显示格式、列宽、列数量

             可以进行汇总统计

             表包含表头、主要区域、脚标三部分

                    表头:显示列标题

                    主要区域:LOOP循环显示区

                    脚标:页脚区

                              

             表的属性设置

表选项:可以设置表的宽度,列数,每列列宽。
数据选项:设置数据来源, Smartform 内部定义的 Internal Table ,以及循环的条件
计算选项:用于做汇总统计
输出选项:选择输出的样式
条件选项:设置表的执行条件
                        

            点击细节按钮,设置行类型、每列宽度等内容

                           

      (3)模板

            模板用于按一定格式输出一组文本

            可自定义模板的显示格式、列宽、列数量

            模板通常在次窗口中输出文本

            可设置模板的执行条件

            可根据模板的列数,增加相同数量的文本节点

                       

      (4)流逻辑

            可选节点、循环节点、程序行、命令行

            窗口节点—流逻辑循环节点

                 此节点用于输出Internal Table内容,

                 循环节点的下级节点一般设置为模板节点

                 循环节点定义要输出Internal Table的内容,下级的模板节点则定义循环输出的每行格式

      循环节点的属性设置

数据选项:设置数据来源, Smartform 内部定义的 Internal Table ,以及循环的条件
计算选项:用于做汇总统计
事件选项:可设置释放输出表头或脚标
输出选项:选择输出的样式
条件选项:设置表的执行条件
     窗口节点 流逻辑 程序行
           可在程序行中增加逻辑程序处理
程序行相当于程序中子程序,需要设置输入和输出参数。

                            

3、Smartform样式  

T-CODE: SMARTFORMS后,点击样式创建。

表头数据

        表头数据定义该样式的默认设置

        表头数据中的标准段落必须指定

段落样式

        创建段落格式

        定义不同段落的格式

                缩进和空格:设置对齐方式、行间距、段落缩进

                字体:设置字体格式

                 标签:用于设置一个段落中多个标签的位置

                 编号与框架:按提纲方式设置段落

                

字符格式 

        可设置文本二维码形式显示

        条形码名称创建T-CODE:SE73

                

                

Smartform文本模块

        文本模块用于定义文本模板,以便在Smartform报表中使用

        文本模块中只需定义文本内容即可使用 

        在文本节点中使用文本模块时,文本节点一般属性要选择【文本模块,此时在名称处选项定义的文本模块即可。

Smartform页格式设置

        1、在SPAD里找到设备类型,在页格式的地方,点击显示;创建页格式

        2、把页格式分配给格式类型,在SPAD里找到设备类型,在格式类型的地方,点击显示

        3、格式类型设备类型,在SPAD里找到设备类型,在设备类型的地方,点击显示;找到CNSAPWIN后, 双击,然后点格式。

           

二、Smart forms 程序调用

触发按键,调用函数

  CASE u_ucomm.
    WHEN 'PRINT'.
      READ TABLE gt_out INTO gs_out WITH KEY sel = 'X'.
      IF sy-subrc NE 0.
        MESSAGE e208(00) WITH '请选择需要打印的数据!'."报错
      ENDIF.
      PERFORM frm_print_value.
  ENDCASE.

调用smart名字

  DATA: lv_formname   TYPE tdsfname.
  DATA: w_sfname TYPE rs38l_fnam.

  lv_formname = 'ZMMSF013'.        "改成自己的SMART名字
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = lv_formname
    IMPORTING
      fm_name            = w_sfname
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

打印控制

设置ssfcompop ssfctrlop  类型参数,配置打印控制

直接打印不显示Dialog;显示Dialog –手工打印

  DATA: w_control        TYPE ssfctrlop,
        w_output_options TYPE ssfcompop.

  DATA: w_job_output_options TYPE SSFCRESOP.

  w_output_options-tdimmed = 'X'.
  w_output_options-tddelete = 'X'.
  w_output_options-tddest = 'LP01'.
  w_control-no_open  = 'X'.      "没有新的假脱机请求
  w_control-no_close = 'X'.        "不关闭假脱机请求

 调用SSF_OPEN函数设置打印机,打开输出请求,使用用户打印设置

      必须调用SSF_OPEN.

CALL FUNCTION 'SSF_OPEN'
    EXPORTING
      output_options     = w_output_options
      control_parameters = w_control
    IMPORTING
      job_output_options = w_job_output_options
    EXCEPTIONS
      formatting_error   = 1
      internal_error     = 2
      send_error         = 3
      user_canceled      = 4
      OTHERS             = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'I' "sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    RETURN.
  ENDIF.

 调用Smartforms Function  Module打印– smart表及变量传递

DATA: ls_head TYPE zssd_vbak,
        ls_item TYPE zssd_vbap,
        lt_item TYPE STANDARD TABLE OF zssd_vbap.

zssd_vbak和zssd_vbap都是之前smart forms建立的类型

CALL FUNCTION w_sfname
        EXPORTING
          control_parameters = w_control
          gs_head            = ls_head
        IMPORTING
          job_output_options = w_job_output_options
        TABLES
          gt_item            = lt_item 
        EXCEPTIONS
          formatting_error   = 1
          internal_error     = 2
          send_error         = 3
          user_canceled      = 4
          OTHERS             = 5.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno DISPLAY LIKE 'E'
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        LEAVE LIST-PROCESSING.
      ENDIF.

  SORT gt_out BY vbeln posnr.
  CLEAR: ls_item.     

  LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_item>) WHERE sel EQ  'X'."当用AT NEW语法时,要采用指针的方式
*    MOVE-CORRESPONDING gs_out TO ls_item."将gs_out的数据循环匹配给ls_item
    ls_item-posnr  = <fs_item>-posnr .
    ls_item-matnr  = <fs_item>-matnr .
    ls_item-maktx  = <fs_item>-maktx .
    ls_item-menge  = <fs_item>-kwmeng .
    ls_item-meins  = <fs_item>-meins .
    ls_item-remark = '测试SMARTFORMS' .

    APPEND ls_item TO lt_item.

    AT NEW vbeln.
      ls_head-kunnr = <fs_item>-kunnr.
      ls_head-name1 = <fs_item>-name1.
      ls_head-vbeln = <fs_item>-vbeln.
      ls_head-werks = <fs_item>-werks.

      "调用Smartforms 的Function  Module打印–smart表及变量传递
      CALL FUNCTION w_sfname
        EXPORTING
          control_parameters = w_control
          is_head            = ls_head
        IMPORTING
          job_output_options = w_job_output_options
        TABLES
          it_item            = lt_item
        EXCEPTIONS
          formatting_error   = 1
          internal_error     = 2
          send_error         = 3
          user_canceled      = 4
          OTHERS             = 5.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno DISPLAY LIKE 'E'
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        LEAVE LIST-PROCESSING.
      ENDIF.
      CLEAR:lt_item[],ls_item,ls_head.
    ENDAT.
  ENDLOOP. 

 关闭打印机设置

DATA: job_output_options TYPE SSFCRESCL. 

CALL FUNCTION 'SSF_CLOSE'
    IMPORTING
      job_output_info  = job_output_options
    EXCEPTIONS
      formatting_error = 1
      internal_error   = 2
      send_error       = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'I' "sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    RETURN.
  ENDIF.  

实例  ZTEST_3_29

三、常用查表方法

查表方法1—F1

        F1:最常用的查询方法,比较快捷实用,按F1,然后去看Technical Information(技术信息)

        

        

查表方法2—SE16N

        SE16N:进入T-CODE,查询具体数据点击联机,查表点击扩展的搜索。

         

        

查表方法3—CDHDR and CDPOS

        CDHDR and CDPOS :比较实用,这两个表记录了SAP内所有的修改记录,一个是header信息,一个是item信息。

         

查表方法4—ST05

        ST05: SQL Trace记录了在系统里所作的所有操作访问了数据库的那些表。访问的表很多,需要花时间去分析,新手不太实用

      

四、Excel 导入程序介绍

        系统实例讲解,程序:ZSDR_EXCEL

        上传批导模板,T-CODE:SMW0

        

        

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值