设为首页 收藏本站
查看: 1350|回复: 0

[经验分享] SAP SMARTFORMS 技术之我见--总结

[复制链接]

尚未签到

发表于 2015-9-17 11:59:06 | 显示全部楼层 |阅读模式
    SAP smartforms的使用前面的也写了一些。但是都是比较笼统的理解,讲解的也不够详细深入。这里再做一些补充,说一下详细制作form的方法。
    1.首先,对于要创建smartform实现数据打印的程序来说,第一就是对打印格式的梳理。需要用到哪些段落格式,左对齐、右对齐还是居中,还需要用到哪些字体。这是准备工作。
        输入事务码smartforms,进行打印格式的创建界面。首先完成格式的创建。选择第二项,样式,输入要创建的样式的名字,点击创建。此处以样式ztest举例。如图所示:
DSC0000.jpg
图1.

    为格式输入描述。点击段落格式,创建段落格式A1,A2,A3,格式A1为“定中心”,即“居中”,字体为“粗体”,打印中标题使用;段落格式A2为“左对齐”;段落格式A3为“右对齐”。
  段落格式创建完成后创建字符格式。点击字符格式,创建字符格式B1,B2,B3,字体族全部设置为CNKAI,字体大小分别为20pt,15pt,11pt.字体颜色为黑色。B1为标题字体大小,B2为表头,B3为表体字体大小如图2.最好在边距上定为1MM,否则可能字与表格贴在一起。

  
DSC0001.jpg   
图2.

  至此,创建form所用到的段落格式和字体格式已经创建完了。整体结构如下图所示。

  
DSC0002.jpg   
图3

  下面开始创建表格。
  2.接下来我们在创建好样式的基础上创建表格。
       同样是事务码smartforms,选择第一项,输入要创建的表格的名字点创建进行表格创建界面。这里是关键。需要对打印表格的整体结构进行设计。
     1).点击表格绘制器。 DSC0003.jpg 右边出现表格设计窗口。这里是进行表格整体结构的设计。比较设计标题,表头,表尾等工作都是在这里完成。我们可以只使用一个MAIN窗口,也可以对表头、表尾用单独的窗口。这取决于打印需求。如果需要打印的表格要求标题和表尾在每一页都要打印,就可以创建两个窗口作为表头了表尾窗口;如果需要打印的表格要求标题只在第一页,表尾只在最后一页打印,那么只需要一个MAIN窗口就可以了。我们这里只用MAIN窗口,将标题、页头和表头都放在MAIN窗口中,另外再建立一个窗口作为打印页码的显示窗口。如图所示:

  
DSC0004.jpg   
图4.


     2).整体表结构设计完成后我们开始设计表的其它部分。页头设计,包括标题,说明等等。在MAIN窗口上点击右键->创建->模板,  创建页头模板PAGE_HEAD。
DSC0005.jpg
  
  双击模板,点击右边的“细节”按钮。为模板设计行列数及行高列宽。我们这里将页头分为四行,第一行为标题行内容为“测试表格”,第二行为客户内容为“测试客户”,第三行为备注内容为测试表格,第四行为期间内容为2010年2月1日 到2010年2月28日。表宽度设置为17CM。将模板的输出选项卡中的样式填为步骤1创建的样式ZTEST。将模板的条件选项卡中的以及附加事件“仅在第一页显示”前面的复选框选中,如图所示:

  
DSC0006.jpg   

  
DSC0007.jpg   
图5.

       接下来在模板上创建四个文本,点击右键->创建->文本。文本分别为上面要求的文本。为文本选择段落格式和字符格式。标题为段落格式A1,居中,字符格式为B1;输出选项卡中的格式仍然选择ZTEST。依次为每个文本选择格式。页头创建完毕。然后在每个文本对应的“输出选项”选项卡中最下方的输出结构中填入要将文本显示在模板的哪一行哪一列。这里页头每行只有一列,所以每个文本的这里应该填1 1,2 1 ,3 1 ,4 1.
       接着要创建打印表的表头。同样是创建一个模板,名称为table_head,同时创建5个文本为每列显示的内容的中文说明,第一列为序号,第二列为交货单号等等。然后在每个文本对应的“输出选项”选项卡中最下方的输出结构中填入要将文本显示在模板的哪一行哪一列。这里页头每行只有一列,所以每个文本的这里应该填1 1,1 2 ,1 3 ,1 4,1 5,1 6.这个模板要在每一个新页开始的时候打开出来。
    3)创建loop 循环。在MAIN窗口上点击右键,选择创建->流逻辑->循环。然后再在loop循环上面点击右键,创建要打印的数据明细模板。类型与表头模板相同。在LOOP循环的数据选项卡中填入要打印的内表如图所示:

  
DSC0008.jpg   

  
DSC0009.jpg   
    4)控制打印换页。在每一页都输出表头。在LOOP循环上创建可选项,在可选项的TRUE项下创建命令,选中转到新页,NEWPAGE。在控制打印换页之前需要先判断已经输出了多少行,这是在LOOP循环下创建程序行进行行数统计的变量完成的工作,假如每页要输出40行,那么只要变量与40求余为0,就说明需要换页了。我们在命令的条件中输入条件,即变量 = 0,刚执行换页操作。
     5)下面的表尾,页尾和页码窗口就不再一一讲述了,方法与上面的大致相同,只要摸索着做就可以了。另外对于要打印的数据表否需要建立数据库表或者是把表EXPORT到ABAP内在中,然后在SMARTFORM中IMPORT,前面介绍的比较清楚,这里就不做介绍了。我觉得把取到的数据表export到内在中比建立数据库表要省时省力,推荐用这种方法。各人根据各人的爱好不同选择不同的方法。下面是表格的整体结构。
DSC00010.jpg DSC00011.jpg
  3.在程序中调用FORM
    DATA fm_name TYPE tdsfname. 定义函数名称
  *调用函数生成函数名称
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        formname           = 'ZTFORM' "这里为已创建的FOMR名
        variant            = ' '
        direct_call        = ' '
      IMPORTING
        fm_name            = fm_name
      EXCEPTIONS
        no_form            = 1
        no_function_module = 2
        OTHERS             = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  *调用FORM函数
    CALL FUNCTION fm_name
      EXPORTING
        im_zfidz         = text-mid
        user_id          = p_kunnr
        user_name        = name1
        date             = date
        date_begin       = budat-low
        date_end         = budat-high
        dmbtr_f          = dmbtr_f
      EXCEPTIONS
        formatting_error = 1
        internal_error   = 2
        send_error       = 3
        user_canceled    = 4
        OTHERS           = 5.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-114923-1-1.html 上篇帖子: ERP 和 SAP 是什么(生动讲解) 下篇帖子: SAP IMG 解释
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表