该报表打印销售订单,可以在报表里选中多个销售单打印,对应的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连续打印,并自动补充空行相关推荐

  1. SQL语句查询条数不足10行时如何自动补充空行

    在用ireport只做报表时,客户要求显示至少十行数据,不足十行时,显示空行. ireport的数据源是数据库sql,一般情况就是查出来,是多少就显示多少.现在这个报表,需要嵌入子表,如果头表只有一条 ...

  2. 《水晶报表自动补空行,补格线思路》 【转】

    写在文章之前 在2005年4月的 <水晶报表自动补空行,补格线思路>一文中的最后,我有这么一句话 本文写得比较仓促,心里感觉不塌实 可能有不少不足之处,欢迎大家进行讨论 时隔近3年后,这个 ...

  3. fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行

    设定后即可自动换行及行高自适应.版本号5.6.2 1.masterData:属性值:stretched 为True 2.Memo设定wordwrap为True ,stretchMode:smMaxHe ...

  4. mysql 字符串用省略号_CSS截取字符串自动补充省略号

    在页面中截取字符串并不一定非得用程序来实现截取,用CSS一样是可以实现字符串的截取的.并且用程序截取中英文混合的字符串时会发生截取的长度长短不一的情况,而用css截取就不会有这种问题.下面和大家分享一 ...

  5. IntelliJ IDEA自动添加空行问题

    在使用IntelliJ IDEA的过程中,经常会发现不管是对于代码文件或者纯文本文件,在保存时中会在文件末尾加上一个空行,提交GIT对比检查时,总是多出一行. 研究一番发现,该行为与配置有关.去掉勾选 ...

  6. 通过rng-tools自动补充熵池

    首先查看系统当前熵池的大小 如果发现熵池的size 不够,导致生成random的时候卡住,则可以通过安装rng-tools自动补充熵池 安装rng-tools 修改/etc/sysconfig/rng ...

  7. IDEA 自动补充 结尾分号或自动换行

    用IDEA时,写了一个Integer i = new 这个时候,我不想自己补充Integer();了 那么偷懒的方法是这样的, Integer i=new 可以直接用 ctrl + shift + s ...

  8. Solr的自动完成/自动补充实现介绍(3)

    原文URL: http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene 在之前的两个部分( part1 ...

  9. Solr的自动完成/自动补充实现介绍(第三部分)

    原文URL: http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene 在之前的两个部分( part1. ...

最新文章

  1. 《网站运维技术与实践》笔记
  2. php 图片不让下载,php让图片可以下载的方法
  3. 设计模式3—行为型模式
  4. hibernate SQLQuery实践指南
  5. java里面怎么添加表约束_alter table添加表约束
  6. .net+mysql关闭连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
  7. 网页设计中时尚​​的下拉菜单案例
  8. DE 32: Limit Cycles
  9. 重新复习数据结构-------ArrayList
  10. JS 在火狐浏览器下关闭弹窗
  11. java使用redis的demo,Javaredisdemo
  12. Java根据关键字在PDF/Word插入图片
  13. 论文阅读:Bridging Knowledge Graph to Generate Scene Graph(ECCV20)
  14. 新iPhoneSE定价较低,置国产旗舰手机于尴尬境地!
  15. jeecms oracle v5_jeecms二次开发总结
  16. c语言作业陌路寒暄,短学期算法与编程实习的C语言题目
  17. vue项目中如何简单的读取声音文件
  18. 解析DNA甲基化临床科研 | 无论什么科室,一定要有project的经典视角|易基因
  19. 第十二章:email-mailbox:管理email归档-imaplib:IMAP4客户库-变种
  20. mysql数据库服务器的超级用户名是,MYSQL数据库的用户帐号管理基础知识 (2)

热门文章

  1. 如何改变“便宜没好货”的这类用户心理?
  2. 微课堂迎圣诞送福利 | 姬十三@你:我想和你相聚社区共度圣诞良宵,约么?
  3. 挖人技术哪家强!快看看2014年北京互联网人都去哪里了~
  4. powerdesigner导出到mysql数据库
  5. [Part 3]API对接,这些坑你一定掉过!
  6. 技术团队,你欠了一屁股债你造吗?
  7. Office365邮箱Imap迁移步骤
  8. Cookie, LocalStorage 与 SessionStorage异同
  9. 《xUnit Test Patterns》学习笔记6 - Test Double
  10. 几道MySQL索引相关的重点面试题