该报表打印销售订单,可以在报表里选中多个销售单打印,对应的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. Python条件判断if、for、while if
  3. 网络安全技术——数字证书技术原理
  4. python(matplotlib8)——图中图(在figure中画多个坐标图),次坐标(两个y轴)
  5. 配置OpenCV的Qt开发环境
  6. 体育测试数据绘图软件,原创健身运动体育测试数据统计app界面
  7. 启科量子加速商业化:量子通信为「盾」,量子计算为「矛」
  8. 自建服务器同步软件,自建Syncthing中继服务器(私密传输或造福大众)
  9. android 动态更改包名,Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)...
  10. 【R语言实用技巧】类别变量的顺序自定义设置
  11. GPRS通信原理+中国移动micro sim 卡,实现经过tcp/ip 传输数据到服务器
  12. 错误C1083无法打开预编译头文件: “Debug\XXX.pch”: No such file or directory 的解决方法
  13. Arduino 串行通信之串口通信 UART 原理及释义
  14. 2022智源大会议程公开 | 人工智能新基建论坛
  15. linux误删 bin目录,记linux下rm误删bin文件的解决方式
  16. 智能车入门——‘教程引导’ <新手从零做车>
  17. python : Tkinter布局
  18. 磁共振检查头部能检测出什么_磁共振检查头部的注意事项
  19. mysql 热备份 数据一致性_MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]
  20. python爬取链家新房_Python爬虫项目--爬取链家热门城市新房

热门文章

  1. 一文弄懂用户画像以及如何召回用户
  2. 20个顶尖产品经理都在用的APP
  3. 手机游戏繁荣时代,团队的N条死路
  4. 咏南新CS三层开发框架
  5. 关于获取客户端Mac地址
  6. 查询磁盘的性能(iostat)
  7. PHP CRC16 校验码的算法怎么使用
  8. Mac下安装的MySQL root账号无法登陆用户解决
  9. 移动端 Web 开发踩坑之旅
  10. 线程池 ManualResetEvent