smartform连续打印,并自动补充空行

xiaoxiao2021-02-27  269

该报表打印销售订单,可以在报表里选中多个销售单打印,对应的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 TYPE  VALUE  0 .        LOOP  AT  it_head  WHERE  che  EQ  'X' .          1 .        ENDLOOP .        IF  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
转载请注明原文地址: https://www.6miu.com/read-2919.html

最新回复(0)