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. ...
最新文章
- 《网站运维技术与实践》笔记
- php 图片不让下载,php让图片可以下载的方法
- 设计模式3—行为型模式
- hibernate SQLQuery实践指南
- java里面怎么添加表约束_alter table添加表约束
- .net+mysql关闭连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
- 网页设计中时尚​​的下拉菜单案例
- DE 32: Limit Cycles
- 重新复习数据结构-------ArrayList
- JS 在火狐浏览器下关闭弹窗
- java使用redis的demo,Javaredisdemo
- Java根据关键字在PDF/Word插入图片
- 论文阅读:Bridging Knowledge Graph to Generate Scene Graph(ECCV20)
- 新iPhoneSE定价较低,置国产旗舰手机于尴尬境地!
- jeecms oracle v5_jeecms二次开发总结
- c语言作业陌路寒暄,短学期算法与编程实习的C语言题目
- vue项目中如何简单的读取声音文件
- 解析DNA甲基化临床科研 | 无论什么科室,一定要有project的经典视角|易基因
- 第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-变种
- mysql数据库服务器的超级用户名是,MYSQL数据库的用户帐号管理基础知识 (2)
热门文章
- 如何改变“便宜没好货”的这类用户心理?
- 微课堂迎圣诞送福利 | 姬十三@你:我想和你相聚社区共度圣诞良宵,约么?
- 挖人技术哪家强!快看看2014年北京互联网人都去哪里了~
- powerdesigner导出到mysql数据库
- [Part 3]API对接,这些坑你一定掉过!
- 技术团队,你欠了一屁股债你造吗?
- Office365邮箱Imap迁移步骤
- Cookie, LocalStorage 与 SessionStorage异同
- 《xUnit Test Patterns》学习笔记6 - Test Double
- 几道MySQL索引相关的重点面试题