SAP ABAP smartforms 创建并实现调用源码(下)

本文详细介绍了如何在SAP ABAP中创建和调用Smartforms,包括报表程序调用Smartforms的示例代码,以及进阶功能如初始化变量、处理动态表格、显示页码和条件文本的实现方法。
摘要由CSDN通过智能技术生成

SAP ABAP smartforms 创建并实现调用源码(上)
smartforms 入门详见上一篇博文。

一:报表程序调用 smartforms

示例:报表选中一行,将这行机相关数据通过表单打印出来。实际例子:采购订单表,销售订单。

调用核心代码:

  • 根据SmartForm 名称获得Form的 Function Names
    call function ‘SSF_FUNCTION_MODULE_NAME’
    exporting
    formname = uv_name
    importing
    fm_name = gv_fm_name
    exceptions
    no_form = 1
    no_function_module = 2
    others = 3.

  • 传入参数
    call function gv_fm_name
    exporting
    control_parameters = ls_ssfctrlop
    ls_student = gs_student
    tables
    it_student = it_student
    exceptions
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    others = 5.

二:进阶功能
1.初始化变量
当变量是调用 smartforms 后需要计算或转换的,可以先在全局数据定义一个变量,在初始化页写代码赋值。例:打印的列表计算总和。
在这里插入图片描述
2.在se11中参考过了货币和数字单位字段,也需要在smartforms中的全局定义中做参考。否则报错消息编号601:参考字段&1在表格中未知 的错误。数量选择数据类型 ‘QUAN’ 货币选择数据类型 ‘CURR’。
在这里插入图片描述
3.动态表格行数超过一页打印纸,需要转到下一页打印并且其他部分布局和内容不变的情况,在表格下方右键新建命令。
在这里插入图片描述
PS:一定要设置条件页(仅在页为第一页)和常规属性(转到新页第二页)。

在这里插入图片描述
除了命令所在页,后续还有几页就创建几个命令。设置的所在页和转到下一页依次累加。
在这里插入图片描述
4.当前页码/总页码
在这里插入图片描述
&SFSY-PAGE&/&SFSY-JOBPAGES&
5.根据判断条件决定文本显示。在条件栏输入对应关系,下图的例子表示当这个字段是’张三’的时候就显示,否则不显示。文本的话要用引号。
在这里插入图片描述

三:全部代码

*&---------------------------------------------------------------------*
*& Report ZTEST_EXPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_EXPORT.


*----------------------------------------------------------------------*
* Type-pools/定义类型池
*----------------------------------------------------------------------*
TYPE-POOLS: slis.

*----------------------------------------------------------------------*
* Tables/声明数据库表
*----------------------------------------------------------------------*
TABLES:ZMMTEST.

*----------------------------------------------------------------------*
* Type/自定义类型
*----------------------------------------------------------------------*
TYPES:BEGIN OF ty_alv,
        sel type char1,  "是否被选择
        id   type zmmtest-id,
        name type zmmtest-name,
        age  type zmmtest-age,
        sex  type zmmtest-sex,
        hobby type zmmtest-hobby,
        "include TYPE zmmtest,
        times     type numc4,    "打印次数
  END OF ty_alv.

DATA:gt_alv      TYPE STANDARD TABLE OF ty_alv,
     gs_alv      TYPE ty_alv,
     gt_print    type standard table of ty_alv,
     gs_student  type zmmtest,
     it_student  type TABLE OF zmmtest.
DATA:gv_fm_name TYPE rs38l_fnam.

*-------------------------------------*
* Define the Macros/定义
*----------------------------------------------------------------------*
DEFINE set_fieldcat.
  CLEAR gs_fcat_lvc .
  gs_fcat_lvc-fieldname = &1."内表的字段
  gs_fcat_lvc-outputlen = &2."输出长度
  gs_fcat_lvc-scrtext_l = &3."在ALV里面显示的名字
  gs_fcat_lvc-just      = &4."水平对齐方式,L左对齐,R右对齐。
  gs_fcat_lvc-no_zero   = &5."去除前导零
  APPEND gs_fcat_lvc TO gt_fcat_lvc .
END-OF-DEFINITION.
*----------------------------------------------------------------------*
* 声明ALV对象
*----------------------------------------------------------------------*
DATA:gs_layout_lvc TYPE lvc_s_layo,
     gt_fcat_lvc   TYPE lvc_t_fcat,
     gs_fcat_lvc   TYPE lvc_s_fcat.
*------------------------------------------------------------
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值