smartform连续打印,并自动补充空行
该报表打印销售订单,可以在报表里选中多个销售单打印,对应的smartform实现了分页,自动补充空行及显示当前页和总页数等功能,smartform在资源里可以找到。
*&---------------------------------------------------------------------*
*& Report ZSDR003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zsdr003 .
TYPE-POOLS : slis .
TABLES : vbak , vbap , lips , makt , likp .
DATA : it_head TYPE TABLE OF zsdr003_head WITH HEADER LINE .
DATA : it_head1 TYPE TABLE OF zsdr003_head WITH HEADER LINE .
DATA : gt_sfhead TYPE TABLE OF zsdr003_head WITH HEADER LINE .
DATA : it_item TYPE TABLE OF zsdr003_item WITH HEADER LINE .
DATA : c_form_name TYPE tdsfname ,
c_form_title TYPE string .
DATA : gv_title TYPE lvc_title .
DATA : gs_layout TYPE slis_layout_alv ,
gt_fields TYPE slis_t_fieldcat_alv ,
gs_fields TYPE LINE OF slis_t_fieldcat_alv .
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text - 001 .
SELECT-OPTIONS : s_vkorg FOR vbak - vkorg . "销售组织
SELECT-OPTIONS : s_vtweg FOR vbak - vtweg . "分销渠道
SELECT-OPTIONS : s_kunnr FOR vbak - kunnr . "客户编号
SELECT-OPTIONS : s_vbeln FOR vbak - vbeln . "销售订单号
SELECTION-SCREEN END OF BLOCK block1 .
START-OF-SELECTION .
PERFORM getdata .
PERFORM alvdata .
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM getdata .
SELECT
vbeln
vkorg
vtweg
spart
auart
audat
erdat
kunnr
bstnk
vsnmr_v
INTO CORRESPONDING FIELDS OF TABLE it_head FROM vbak WHERE vkorg IN s_vkorg AND vtweg IN s_vtweg AND kunnr IN s_kunnr AND vbeln IN s_vbeln .
ENDFORM . "getdata
*&---------------------------------------------------------------------*
*& Form getdetaildata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM getheaddata .
IF NOT it_head[] IS INITIAL .
LOOP AT it_head WHERE che EQ 'X' .
it_head1 = it_head .
APPEND it_head1 .
ENDLOOP .
ENDIF .
ENDFORM . "getdetaildata
*&---------------------------------------------------------------------*
*& Form alvdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alvdata .
gs_layout - colwidth_optimize = 'X' .
gs_layout - box_fieldname = 'CHE' .
gs_layout - zebra = 'X' .
REFRESH gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'VKORG' .
gs_fields - seltext_l = '销售组织' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'VTWEG' .
gs_fields - seltext_l = '分销渠道' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'SPART' .
gs_fields - seltext_l = '产品组' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'KUNNR' .
gs_fields - seltext_l = '客户编号' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'VBELN' .
gs_fields - seltext_l = '销售订单号' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
gs_fields - fieldname = 'AUDAT' .
gs_fields - seltext_l = '凭证日期' .
APPEND gs_fields TO gt_fields .
CLEAR gs_fields .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy - repid
i_callback_pf_status_set = 'SET_PF'
i_callback_user_command = 'USER_COM'
i_grid_title = gv_title
is_layout = gs_layout
it_fieldcat = gt_fields
i_save = 'X'
TABLES
t_outtab = it_head
EXCEPTIONS
program_error = 1
OTHERS = 2 .
ENDFORM . "alvdata
*&---------------------------------------------------------------------*
*& Form set_pf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM set_pf USING extab TYPE slis_t_extab .
SET PF-STATUS 'ZSDR003' .
ENDFORM . "set_pf
*&---------------------------------------------------------------------*
*& Form user_com
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_com USING r_ucomm LIKE sy - ucomm
rs_selfield TYPE slis_selfield .
DATA : lr_grid TYPE REF TO cl_gui_alv_grid ,
myindex TYPE sy - tabix .
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid .
CALL METHOD lr_grid -> check_changed_data .
rs_selfield - refresh = 'X' .
CASE r_ucomm .
WHEN '&PRSO' .
DATA : i TYPE i VALUE 0 .
LOOP AT it_head WHERE che EQ 'X' .
i = i + 1 .
ENDLOOP .
IF i = 0 .
MESSAGE : '请选择需要打印的列' TYPE 'E' .
ENDIF .
PERFORM getheaddata.
PERFORM printdata .
ENDCASE .
CLEAR r_ucomm .
ENDFORM . "user_com
*&---------------------------------------------------------------------*
*& Form printdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM printdata .
DATA : f_index LIKE sy - tabix .
DATA : lines_len TYPE i .
DATA : ls_control_parameters TYPE ssfctrlop .
DATA : ls_output_options TYPE ssfcompop .
DATA : l_smf_name TYPE rs38l_fnam .
c_form_name = 'ZSDSF003' . "对应的smartform的名称
ls_output_options - tdimmed = 'X' .
ls_output_options - tdcopies = '1' .
ls_output_options - tdnoprint = '' .
ls_output_options - tddelete = 'X' .
ls_control_parameters - no_dialog = '' .
ls_control_parameters - preview = 'X' .
ls_control_parameters - langu = '1' .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = c_form_name
IMPORTING
fm_name = l_smf_name .
SORT it_head1 BY vbeln .
LOOP AT it_head1 .
ls_control_parameters - no_close = 'X' .
AT LAST .
ls_control_parameters - no_close = space .
ENDAT .
gt_sfhead = it_head1 .
APPEND gt_sfhead .
SELECT
vbeln
posnr
matnr
kwmeng
meins
INTO CORRESPONDING FIELDS OF TABLE it_item FROM vbap FOR ALL ENTRIES IN gt_sfhead WHERE vbeln = gt_sfhead - vbeln .
LOOP AT it_item .
SELECT SINGLE maktx INTO it_item - maktx FROM makt WHERE matnr = it_item - matnr .
SELECT SUM ( lfimg ) INTO it_item - lfimg FROM lips WHERE vgbel = it_item - vbeln AND vgpos = it_item - posnr .
it_item - remainqty = it_item - kwmeng - it_item - lfimg .
MODIFY it_item .
ENDLOOP .
SORT it_item BY vbeln posnr .
CALL FUNCTION l_smf_name
EXPORTING
control_parameters = ls_control_parameters
output_options = ls_output_options
user_settings = 'X'
TABLES
gt_head = gt_sfhead[]
gt_item = it_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 sy - msgty NUMBER sy - msgno
WITH sy - msgv1 sy - msgv2 sy - msgv3 sy - msgv4 .
ENDIF .
CLEAR gt_sfhead .
REFRESH gt_sfhead[] .
CLEAR it_item .
REFRESH it_item[] .
ls_control_parameters - no_open = 'X' .
AT LAST .
ls_control_parameters - no_open = space .
ENDAT .
ENDLOOP .
CLEAR it_head1 .
REFRESH it_head1[] .
ENDFORM . "printdata
smartform连续打印,并自动补充空行相关推荐
- SQL语句查询条数不足10行时如何自动补充空行
在用ireport只做报表时,客户要求显示至少十行数据,不足十行时,显示空行. ireport的数据源是数据库sql,一般情况就是查出来,是多少就显示多少.现在这个报表,需要嵌入子表,如果头表只有一条 ...
- 《水晶报表自动补空行,补格线思路》 【转】
写在文章之前 在2005年4月的 <水晶报表自动补空行,补格线思路>一文中的最后,我有这么一句话 本文写得比较仓促,心里感觉不塌实 可能有不少不足之处,欢迎大家进行讨论 时隔近3年后,这个 ...
- fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行
设定后即可自动换行及行高自适应.版本号5.6.2 1.masterData:属性值:stretched 为True 2.Memo设定wordwrap为True ,stretchMode:smMaxHe ...
- mysql 字符串用省略号_CSS截取字符串自动补充省略号
在页面中截取字符串并不一定非得用程序来实现截取,用CSS一样是可以实现字符串的截取的.并且用程序截取中英文混合的字符串时会发生截取的长度长短不一的情况,而用css截取就不会有这种问题.下面和大家分享一 ...
- IntelliJ IDEA自动添加空行问题
在使用IntelliJ IDEA的过程中,经常会发现不管是对于代码文件或者纯文本文件,在保存时中会在文件末尾加上一个空行,提交GIT对比检查时,总是多出一行. 研究一番发现,该行为与配置有关.去掉勾选 ...
- 通过rng-tools自动补充熵池
首先查看系统当前熵池的大小 如果发现熵池的size 不够,导致生成random的时候卡住,则可以通过安装rng-tools自动补充熵池 安装rng-tools 修改/etc/sysconfig/rng ...
- IDEA 自动补充 结尾分号或自动换行
用IDEA时,写了一个Integer i = new 这个时候,我不想自己补充Integer();了 那么偷懒的方法是这样的, Integer i=new 可以直接用 ctrl + shift + s ...
- Solr的自动完成/自动补充实现介绍(3)
原文URL: http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene 在之前的两个部分( part1 ...
- Solr的自动完成/自动补充实现介绍(第三部分)
原文URL: http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene 在之前的两个部分( part1. ...
最新文章
- 实现后台检控并关闭进程的批处理
- Python条件判断if、for、while if
- 网络安全技术——数字证书技术原理
- python(matplotlib8)——图中图(在figure中画多个坐标图),次坐标(两个y轴)
- 配置OpenCV的Qt开发环境
- 体育测试数据绘图软件,原创健身运动体育测试数据统计app界面
- 启科量子加速商业化:量子通信为「盾」,量子计算为「矛」
- 自建服务器同步软件,自建Syncthing中继服务器(私密传输或造福大众)
- android 动态更改包名,Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)...
- 【R语言实用技巧】类别变量的顺序自定义设置
- GPRS通信原理+中国移动micro sim 卡,实现经过tcp/ip 传输数据到服务器
- 错误C1083无法打开预编译头文件: “Debug\XXX.pch”: No such file or directory 的解决方法
- Arduino 串行通信之串口通信 UART 原理及释义
- 2022智源大会议程公开 | 人工智能新基建论坛
- linux误删 bin目录,记linux下rm误删bin文件的解决方式
- 智能车入门——‘教程引导’ <新手从零做车>
- python : Tkinter布局
- 磁共振检查头部能检测出什么_磁共振检查头部的注意事项
- mysql 热备份 数据一致性_MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]
- python爬取链家新房_Python爬虫项目--爬取链家热门城市新房