目录

一、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内部使用的全局变量,参考打印内容可以时系统提供的I、C等类型,也可以是已存在的数据库表、结构,还可以是Smartform中定义的类型。

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

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

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

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

FIELD-SYMBOL:<dbtable> type any 。

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

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

设置页和窗体

什么是页?

1、Smartform的组成元素

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

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'EXPORTINGformname           = lv_formnameIMPORTINGfm_name            = w_sfnameEXCEPTIONSno_form            = 1no_function_module = 2OTHERS             = 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'EXPORTINGoutput_options     = w_output_optionscontrol_parameters = w_controlIMPORTINGjob_output_options = w_job_output_optionsEXCEPTIONSformatting_error   = 1internal_error     = 2send_error         = 3user_canceled      = 4OTHERS             = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'I' "sy-msgtyNUMBER sy-msgnoWITH 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_sfnameEXPORTINGcontrol_parameters = w_controlgs_head            = ls_headIMPORTINGjob_output_options = w_job_output_optionsTABLESgt_item            = lt_item EXCEPTIONSformatting_error   = 1internal_error     = 2send_error         = 3user_canceled      = 4OTHERS             = 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'IMPORTINGjob_output_info  = job_output_optionsEXCEPTIONSformatting_error = 1internal_error   = 2send_error       = 3OTHERS           = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'I' "sy-msgtyNUMBER sy-msgnoWITH 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

Smart forms相关推荐

  1. ABAP--Smart Forms多语言翻译

    原文地址:ABAP--Smart Forms多语言翻译作者:xujun_yuan Language translation in smart forms:  Here are the steps... ...

  2. Smart FormsScriptFrom 详解 BY 江正军

    Smart Forms Smart Forms是在SAPScript的基础上产生的一种新的表单制作方式,它完全兼容SAPScript.但Smart Forms 更独立,且使用起来更加方便,可以创建FO ...

  3. SAP ABAP 点滴记录

    ***************************************************************************************** 系统字段篇--STR ...

  4. 【ABAP】Smartforms无法打印字符串中空格问题处理

    Smart Forms是在SAPScript的基础上产生的一种新的表单制作方式,它完全兼容SAPScript.但Smart Forms 更独立,且使用起来更加方便,可以创建FORM的同时,生成该表单对 ...

  5. 【ABAP】Smartforms无法打印特殊字符问题处理方案

    Smart Forms是在SAPScript的基础上产生的一种新的表单制作方式,它完全兼容SAPScript.但Smart Forms 更独立,且使用起来更加方便,可以创建FORM的同时,生成该表单对 ...

  6. 以无代码的方式将Form打印内容转成生成PDF文件

    企业在应用SAP ERP时,可能需要大量 打印 通信文档如催款单,对账单,付款通知等.通过生成PDF格式的通信文件然后用电子邮件的方式发给客户或供应商,不仅大在降低打印成本和邮递费用,加快了与业务合作 ...

  7. SAP BC470 课程中文自学笔记

    BC470: Form Printing With SAP Smart Forms 用 SAP Smart Forms 打印表单 http://files.cnblogs.com/qiangsheng ...

  8. javaserver_JavaServer页面简介

    关于本教程 本教程是关于什么的? 本教程介绍了JavaServer Pages(JSP)技术2.0的基础,并提供了由Noel J. Bergman撰写的讨论JSP 1.2的原始教程的更新. 本教程将使 ...

  9. smartforms

    table和template的区别: 1.table是动态表格,template是静态表格,template + loop 可以达到动态格式 2.template可控制行高,table不能直接控制行高 ...

最新文章

  1. 【嵌入式】Libmodbus下载和编译详解
  2. iPhone开发进阶(1) --- 深入理解iPhone OS/SDK与Objective-C 2.0
  3. SAP Spartacus 读取 Cart 的原理分析
  4. android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?
  5. 数据结构和算法———P1 绪论
  6. Elasticsearch合并高亮字段
  7. PS 基础教程,调整图像品质「1」如何调整亮度和对比度?
  8. 知产新观察 | 商家要敢于向知产流氓及恶意投诉说不!
  9. vue仿网易云音乐播放器
  10. 华为交换机端口基本配置指南
  11. 华为终端穿戴软件测试,【华为软件测试工程师面试】总共五轮面试外加一个上机的性格测试。-看准网...
  12. 火狐浏览器自动刷新网页插件
  13. AB32VG1开发板学习(2)GPIO,多线程点灯
  14. html qq在线状态,qq各种在线状态意思
  15. 《HelloGitHub》第 67 期
  16. 运维工程师面试题整理——》 IDC机房运维
  17. 计算机应用基础2004版,计算机应用基础2004年上半年全国试题
  18. 动画中的关键帧动画的原理
  19. 计算机网络思维导图(零基础--思维导图详细版本及知识点)
  20. html制作图片动画效果代码,HTML5 Canvas:制作动画特效

热门文章

  1. 副驾驶的意义_副驾驶在飞行中的作用与地位
  2. 计算机网络课程背景,课程发展的历史沿革
  3. CALIPSO数据产品总结
  4. 通俗解释下聚簇索引和非聚簇索引
  5. 51单片机指令快速记忆方法总结
  6. input在python的意思_python中input是什么意思
  7. 乐视网:截至2月已逾期金融机构借款类债务20.84亿元
  8. [chatGPT]六问ChatGPT:当AI“成精”
  9. 计算机网络课设--监控IP、解析IP数据包(MFC版,可直接运行)
  10. UE4安卓打包配置(大陆内网络整顿后,Android打包时AndroidWorks无法使用的解决方法)