AVL_全选_取消全选_打印_ZMM1035

来源:互联网 发布:渗透之c君事件 知乎 编辑:程序博客网 时间:2024/05/13 13:48
*&---------------------------------------------------------------------**& Report  ZMM1035*&*&---------------------------------------------------------------------**&  采购凭证打印 *&*&---------------------------------------------------------------------*REPORT  zmm1035.TYPE-POOLS: slis.TABLES: a003,konp,ztemp_vendor,ekko,lfm1,lfa1,t024,ekpa.DATA: zitcpo LIKE itcpo.DATA: z TYPE i,      wa_ekpo TYPE ekpo,      wa_eket TYPE eket,      wa_tkomv TYPE komv,      it_ekpo TYPE TABLE OF ekpo.DATA: zrsnum LIKE eket-rsnum.DATA: zwaers LIKE ekko-waers,      zekgrp LIKE ekko-ekgrp,      v_werks(10) TYPE c,      t_zg(15) TYPE c,      t_bz(10) TYPE c,      v_bukrs(40) TYPE c,      v_vtext LIKE t052u-text1.DATA: BEGIN OF i_data OCCURS 0,      ebeln LIKE ekko-ebeln,  "Document No. 采购凭证       ebelp LIKE ekpo-ebelp,  "Item 行项目号       matnr LIKE ekpo-matnr,  "Material       txz01 LIKE ekpo-txz01,  "Material description       wrkst LIKE mara-wrkst,  "基本物料  2009.06.08       menge LIKE ekpo-menge, "Quantity       netpr LIKE ekpo-netpr, "Price       mwskz LIKE ekpo-mwskz,       kbetr LIKE konp-kbetr,  " 2009.10.21 税率转换为数值       v_price TYPE p DECIMALS 6,       v_dj(14)   TYPE c,       peinh LIKE ekpo-peinh,  "Price unit       meins LIKE ekpo-meins,       werks LIKE ekpo-werks,       eindt LIKE eket-eindt,  "Delivery date       bedat LIKE eket-bedat,  "Purchase order date       amount(11) TYPE c,      "sub.total       flag(1) TYPE c,         "Item category       groes LIKE mara-groes, "大小量纲 2012.08.10       ztxz01(21) TYPE c,       ztxz02(21) TYPE c,       zlg1(17) TYPE c,       zlg2(17) TYPE c,       zkbetr LIKE konv-kbetr,  "金额       zwaers LIKE konv-waers,  "币别       zkpein LIKE konv-kpein,                              "单位 10000       y_price TYPE p DECIMALS 6,       zycjg(14) TYPE c,END OF i_data.DATA: BEGIN OF i_header OCCURS 0 ,ebeln LIKE ekpo-ebeln,werks LIKE ekpo-werks,bedat LIKE ekko-bedat,lifnr LIKE lfa1-lifnr,      name1 LIKE lfa1-name1,stcd1 LIKE lfa1-stcd1,addr  LIKE lfa1-stras,telf1 LIKE lfa1-telf1,telfx LIKE lfa1-telfx,adrnr LIKE lfa1-adrnr,email LIKE adr6-smtp_addr,zsabe LIKE lfb1-zsabe,verkf LIKE lfm1-verkf,bankn LIKE lfbk-bankn,eknam LIKE t024-eknam,v_vtext LIKE t052u-text1,mwskz LIKE eine-mwskz,stext LIKE t007s-text1,ekorg LIKE ekko-ekorg,     "eikto LIKE lfm1-eikto,     "打印采购订单限定格式ekgrp LIKE ekko-ekgrp,bsart LIKE ekko-bsart,     "订单类型 *采购组的联系方式v_telfx LIKE t024-telfx,               tel_number LIKE t024-tel_number,     zlifnr LIKE ekko-zlifnr,zname1 LIKE ekko-zname1,waers LIKE ekko-waers,zterm LIKE ekko-zterm,lifn2 LIKE ekpa-lifn2,knumv LIKE ekko-knumv, "条件记录号END OF i_header .DATA: BEGIN OF i_wrkst OCCURS 0,      matnr LIKE mara-matnr,      wrkst LIKE mara-wrkst,      END OF i_wrkst.DATA: v_total_c LIKE konv-kawrt,      v_total LIKE konv-kawrt.    "totalDATA: BEGIN OF it_konv OCCURS 0 ,  ebeln LIKE ekko-ebeln, "采购凭证  knumv LIKE konv-knumv, "条件记录号  kposn LIKE konv-kposn, "行项目号  kschl LIKE konv-kschl,   "条件类型  kbetr LIKE konv-kbetr,  "金额  waers LIKE konv-waers,  "币别  kpein LIKE konv-kpein,                                    "单位 10000END OF it_konv.*&-----------报表输出用itab ------2014.08.13DATA: BEGIN OF itab OCCURS 0 ,  cbox(1)  TYPE c,  "选择框  ebeln LIKE ekko-ebeln, "采购凭证  lifn2 LIKE ekpa-lifn2, "原厂供应商  name1 LIKE lfa1-name1, "供应商名称  ekgrp LIKE ekko-ekgrp, "采购组  bedat LIKE ekko-bedat,"凭证日期  dycs(5) TYPE c,END OF itab.DATA: itab2 LIKE TABLE OF itab WITH HEADER LINE.DATA:wa_sort     TYPE slis_t_sortinfo_alv,     wa_variant  TYPE disvariant,     v_repid    TYPE sy-repid VALUE sy-repid.DATA:i_fieldcat      TYPE lvc_t_fcat,     "输出的内表字段    zwa_fieldcat  TYPE lvc_s_fcat,     i_events        TYPE slis_t_event,   "事件存储内表     wa_events       TYPE slis_alv_event,     i_ddval         TYPE lvc_t_drop,     "存储下拉列表的数据     th_layout       TYPE lvc_s_layo,     wa_ddval        TYPE lvc_s_drop.*CONSTANTS:c_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.CONSTANTS cns_pf_status TYPE slis_formname VALUE 'ALV_PF_STATUS'.*CONSTANTS cns_user_command TYPE slis_formname VALUE 'ALV_USER_COMMAND'.*************************************************************************SELECT-SRECCN************************************************************************SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1."选择屏幕块SELECT-OPTIONS: zebeln FOR ekko-ebeln."采购凭证SELECT-OPTIONS: zlifn2 FOR ekpa-lifn2."供应商SELECT-OPTIONS: zekorg FOR ekko-ekorg."采购组织SELECT-OPTIONS: zekgrp1 FOR ekko-ekgrp."采购组SELECT-OPTIONS: zbedat FOR ekko-bedat."凭证日期SELECTION-SCREEN END OF BLOCK bl1.START-OF-SELECTION.  PERFORM sub_get_opt_date. "获取报表输出的数据  PERFORM f_create_fieldcat.  PERFORM f_display_alv.*  PERFORM sub_get_data.  "获取打印输出的数据*  PERFORM sub_process_data .  "处理打印输出的数据*  PERFORM sub_print_data .   "打印*&---------------------------------------------------------------------**&      Form  sub_get_opt_date*&---------------------------------------------------------------------**       text  获取报表输出的数据*----------------------------------------------------------------------*FORM sub_get_opt_date.  SELECT    ekko~ebeln    ekpa~lifn2    ekko~ekgrp    ekko~bedat  INTO CORRESPONDING FIELDS OF TABLE itab  FROM ekko INNER JOIN ekpa ON ekko~ebeln = ekpa~ebeln   WHERE ekko~ebeln IN zebeln     AND ekpa~lifn2 IN zlifn2     AND ekko~ekorg IN zekorg     AND ekko~ekgrp IN zekgrp1     AND ekko~bedat IN zbedat     AND ekpa~parvw = 'WL'.  IF sy-subrc = 0.    LOOP AT itab.      SELECT SINGLE name1 INTO itab-name1 FROM lfa1 WHERE lifnr = i_header-lifn2 .      MODIFY itab.      CLEAR itab.    ENDLOOP.  ENDIF.ENDFORM.                    "sub_get_opt_date*@---------------------------------------------------------------------**@      Form  f_display_alv*@---------------------------------------------------------------------**       调用 FUNCTION 输出ALV报表*----------------------------------------------------------------------*FORM f_display_alv .  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'    EXPORTING      i_callback_program       = v_repid      it_fieldcat_lvc          = i_fieldcat      it_events                = i_events[]      i_default                = 'X'      i_save                   = 'A'      i_callback_user_command  = 'USER_COMMAND'      i_callback_pf_status_set = 'SET_PF_STATUS' "指定自建的状态栏      is_layout_lvc            = th_layout    TABLES      t_outtab                 = itab.      "i_alv.ENDFORM.                    " f_display_alv*&      Form  set_pf_status*&--------------------------------------------------------------------**       自建状态栏的名称,自定义的GUI状态*---------------------------------------------------------------------*FORM set_pf_status USING rt_extab TYPE slis_t_extab.  SET PF-STATUS 'ZMM1035_STATUS'."自建状态栏的名称ENDFORM.                    "set_pf_status*&--------------------------------------------------------------------**&      Form  USER_COMMAND*&--------------------------------------------------------------------**       text*---------------------------------------------------------------------**      -->UCOMM      text*     -->SELFIELD   text*---------------------------------------------------------------------*FORM user_command USING ucomm LIKE sy-ucomm               "接收用户的命令  selfield TYPE slis_selfield.  READ TABLE itab INDEX selfield-tabindex.  CHECK sy-subrc = 0.  DATA:  wl_answer  TYPE c.  DATA: zbz TYPE c.*******************************************自动刷新alv数据到内表中,省去点击保存之后才刷新数据***注意 selfield-refresh = 'X'.只做这个是不够的  DATA lr_grid TYPE REF TO cl_gui_alv_grid.  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'    IMPORTING      e_grid = lr_grid.  CALL METHOD lr_grid->check_changed_data.  selfield-refresh = 'X'.  selfield-row_stable = 'X'.  selfield-col_stable = 'X'.*****************************************  IF ucomm = '&JS' OR  ucomm = '&WC'.**      ucomm = '&DATA_SAVE'.*    CALL FUNCTION 'POPUP_TO_CONFIRM'*      EXPORTING*        text_question         = '您确定要执行该操作吗?'"TEXT-S07 "确定要删除吗?*        icon_button_1         = '是' "TEXT-S08 "是*        icon_button_2         = '否' "TEXT-S09 "否*        default_button        = '2'*        display_cancel_button = 'X'*        start_column          = 25*        start_row             = 6*      IMPORTING*        answer                = wl_answer*      EXCEPTIONS*        text_not_found        = 1*        OTHERS                = 2.  IF ucomm = '&PRINT'. "打印选中***********判断是否有勾选记录    LOOP AT itab WHERE cbox = 'X'.      zbz = 'X'.    ENDLOOP.    IF zbz = 'X'.      PERFORM print_data.*          selfield-refresh = 'X'.    ELSE.      MESSAGE '请勾选要打印的行项目!' TYPE 'I'.    ENDIF.  ELSEIF ucomm = 'ALL'.    PERFORM select_all.    PERFORM alv_refresh CHANGING selfield-col_stable                                 selfield-row_stable                                 selfield-refresh.  ELSEIF ucomm = 'DALL'.    PERFORM cancle_all.    PERFORM alv_refresh CHANGING  selfield-col_stable                                  selfield-row_stable                                  selfield-refresh.  ENDIF.*  IF wl_answer = '1'.*    CASE ucomm.*      WHEN '&WC'.*      WHEN '&JS'.***********判断是否有勾选记录*        LOOP AT i_list WHERE cbox = 'X'.*          zbz = 'X'.*        ENDLOOP.*        IF zbz = 'X'.*          PERFORM ggzt_form.      "*          selfield-refresh = 'X'.                             "设置刷新标记  必须*          LOOP AT i_mes.*            MESSAGE  i_mes  TYPE 'I'.*          ENDLOOP.**        ELSE.*          MESSAGE '请勾选更改状态的行项目!' TYPE 'I'.*        ENDIF.*        CLEAR zbz.*    ENDCASE.*  ENDIF.ENDFORM.                    "USER_COMMAND*&---------------------------------------------------------------------**&      Form  cancle_all*&---------------------------------------------------------------------**&      打印数据*&---------------------------------------------------------------------*FORM print_data.  PERFORM sub_get_data.  "获取打印输出的数据  PERFORM sub_process_data .  "处理打印输出的数据  PERFORM sub_print_data .   "打印ENDFORM.                    "cancle_all********一下三个子函数为全选和取消全选使用*&---------------------------------------------------------------------**&      Form  alv_refresh*&---------------------------------------------------------------------**       更改选择的值*----------------------------------------------------------------------*FORM alv_refresh  CHANGING po_col_stable  po_row_stable  po_refresh.  po_col_stable = 'X'.  po_row_stable = 'X'.  po_refresh = 'X'.ENDFORM.                    " alv_refresh*&---------------------------------------------------------------------**&      Form  cancle_all*&---------------------------------------------------------------------**&      取消全选*&---------------------------------------------------------------------*FORM cancle_all.  LOOP AT itab.    itab-cbox = ''.    MODIFY itab.  ENDLOOP.ENDFORM.                    "cancle_all*&---------------------------------------------------------------------**&   Form  select_all*&  全选*&---------------------------------------------------------------------*FORM select_all.  LOOP AT itab.    itab-cbox = 'X'.    MODIFY itab.  ENDLOOP.ENDFORM.                    "select_all*&---------------------------------------------------------------------**&      Form  init_alv_summary*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->V_I_FIELDCAT  text*----------------------------------------------------------------------*FORM f_create_fieldcat .  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  = 'CBOX'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '选择' .  IF  zwa_fieldcat-fieldname  = 'CBOX'.    zwa_fieldcat-key       =  'X'.    zwa_fieldcat-edit       =  'X'.    zwa_fieldcat-checkbox   =  'X'.  ENDIF.  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'EBELN'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '采购凭证' .  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'LIFN2'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '原厂供应商' .  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'NAME1'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '原厂供应商名称' .  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'EKGRP'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '采购组' .  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'BEDAT'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '凭证日期' .  APPEND zwa_fieldcat TO i_fieldcat.  CLEAR  zwa_fieldcat.  zwa_fieldcat-fieldname  =  'DYCS'.  zwa_fieldcat-tabname =  'ITAB' .  zwa_fieldcat-scrtext_m  =  '打印次数' .  APPEND zwa_fieldcat TO i_fieldcat.ENDFORM.                    " init_alv_summary*&---------------------------------------------------------------------**&      Form  sub_get_data*&---------------------------------------------------------------------**       text 获取打印输出的数据*----------------------------------------------------------------------*FORM sub_get_data.  MOVE itab[] TO itab2[].  DELETE itab2 WHERE cbox = ''.  "删除未选中的  SELECT *   FROM ekko   INTO CORRESPONDING FIELDS OF TABLE i_header   FOR ALL ENTRIES IN itab2   WHERE ebeln  = itab2-ebeln.*  SELECT * INTO CORRESPONDING FIELDS OF TABLE i_header FROM ekko*                            WHERE ebeln IN zebeln**                            "AND lifnr IN zlifnr*                            AND ekorg IN zekorg*                            AND ekgrp IN zekgrp1*                            AND bedat IN zbedat.**                            AND frgke = '02'.   "审批通过  IF i_header IS NOT INITIAL.    SELECT *    FROM ekpo    INTO CORRESPONDING FIELDS OF TABLE it_ekpo    FOR ALL ENTRIES IN i_header    WHERE ebeln  = i_header-ebeln AND         loekz <> 'X' ."没有删除标记的*&----------------------从konv里面获取条件价格 原厂价格    SELECT        knumv "条件记录号        kposn "行项目号        kschl  "条件类型        kbetr  "金额        waers  "币别        kpein                                               "单位10000    FROM konv    INTO CORRESPONDING FIELDS OF TABLE it_konv    FOR ALL ENTRIES IN i_header    WHERE knumv  = i_header-knumv "条件记录号       AND kschl = 'PB77'. "条件类型    LOOP AT it_konv.      READ TABLE i_header WITH KEY knumv = it_konv-knumv.      it_konv-ebeln = i_header-ebeln.      MODIFY it_konv.      CLEAR it_konv.    ENDLOOP.*  SELECT * INTO CORRESPONDING FIELDS OF TABLE it_ekpo FROM ekpo WHERE ebeln in zebeln and LOEKZ = ''.    LOOP AT  it_ekpo INTO wa_ekpo.      READ TABLE it_konv WITH KEY ebeln = wa_ekpo-ebeln  kposn = wa_ekpo-ebelp.      i_data-zkbetr = it_konv-kbetr.   "原厂价格      i_data-zwaers = it_konv-waers.    "原厂币别      i_data-zkpein = it_konv-kpein.    "原厂单位      i_data-y_price = it_konv-kbetr / it_konv-kpein.  "原厂单价      i_data-zycjg = i_data-y_price .      i_data-ebeln =  wa_ekpo-ebeln.            "Document No. 采购凭证      i_data-ebelp =  wa_ekpo-ebelp.            "Item 行项目号      i_data-matnr =  wa_ekpo-matnr.            "Material No.      i_data-txz01 =  wa_ekpo-txz01.            "Material Description      i_data-menge =  wa_ekpo-menge.            "Quantity      i_data-mwskz =  wa_ekpo-mwskz.      i_data-meins =  wa_ekpo-meins.     "单位      i_data-amount = wa_ekpo-netwr.     "s     ub.total      i_data-netpr =  wa_ekpo-netpr.     "价格      i_data-peinh =  wa_ekpo-peinh.     "价格单位      i_data-v_price = wa_ekpo-netpr / wa_ekpo-peinh.   "dj      i_data-v_dj  = i_data-v_price.      i_data-flag  =  wa_ekpo-pstyp.            "Item category      APPEND i_data.      CLEAR: wa_ekpo, wa_eket,wa_tkomv.    ENDLOOP.    SELECT matnr wrkst FROM mara INTO TABLE i_wrkst FOR ALL ENTRIES IN i_data       " 2009.06.08    WHERE matnr = i_data-matnr.  ENDIF.ENDFORM.                    "sub_get_data*&---------------------------------------------------------------------**&      Form  sub_process_data*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM sub_process_data.  SORT i_data BY ebeln.  LOOP AT i_data.************************取物料的大小量纲by augus 2012.08.10    DATA: string1(21) TYPE c,          string2(21) TYPE c,          len TYPE i.    SELECT SINGLE groes INTO i_data-groes FROM mara WHERE matnr = i_data-matnr.    len  = STRLEN( i_data-groes ).    IF len > 17.      CALL FUNCTION 'STRING_SPLIT_AT_POSITION' "大小量纲拆分    EXPORTING      string  = i_data-groes      pos     = 17      langu   = '1'    IMPORTING      string1 = string1      string2 = string2.      i_data-zlg1 = string1.      i_data-zlg2 = string2.    ELSE.      i_data-zlg1 = i_data-groes.    ENDIF.    CLEAR: string1, string2, len.    len = STRLEN( i_data-txz01 ).    IF len > 27.      CALL FUNCTION 'STRING_SPLIT_AT_POSITION' "物料描述拆分        EXPORTING          string  = i_data-txz01          pos     = 21          langu   = '1'        IMPORTING          string1 = string1          string2 = string2.      i_data-ztxz01 = string1.      i_data-ztxz02 = string2.    ELSE.      i_data-ztxz01 = i_data-txz01 .    ENDIF.    CLEAR: string1, string2, len.**************************************************    SELECT SINGLE eindt  FROM eket INTO i_data-eindt WHERE ebeln = i_data-ebeln AND ebelp = i_data-ebelp.*    IF i_data-ebeln = zebeln.*      v_total = v_total + i_data-amount.   "Total amount*      v_total_c = v_total.*    ENDIF.*    zebeln = i_data-ebeln.    SELECT SINGLE * FROM a003      WHERE aland = 'CN' AND mwskz = i_data-mwskz.    IF sy-subrc = 0.      SELECT SINGLE * FROM konp        WHERE knumh = a003-knumh.      IF sy-subrc = 0.        i_data-kbetr = konp-kbetr / 1000.      ELSE.        i_data-kbetr = 0.      ENDIF.    ENDIF.    MODIFY i_data.  ENDLOOP.  LOOP AT i_header.    SELECT SINGLE lifn2 INTO i_header-lifn2 FROM ekpa WHERE ebeln = i_header-ebeln AND  parvw = 'WL'.    IF sy-subrc = 0.      SELECT SINGLE eikto FROM lfm1 INTO i_header-eikto WHERE lifnr = i_header-lifn2   " i_header-lifnr     " 2014.08.11  改为临时供应商                                                          AND ekorg = i_header-ekorg.      SELECT SINGLE * FROM lfm1 WHERE lifnr = i_header-lifn2.  "i_header-lifnr  2014.08.11  改为临时供应商*      IF lfm1-expvz = '2' .*        i_header-lifnr = i_header-zlifnr.*        SELECT SINGLE * FROM ztemp_vendor WHERE lifnr = i_header-zlifnr.*        i_header-name1 = ztemp_vendor-name1. *        i_header-verkf = ztemp_vendor-verkf.*        i_header-telf1 = ztemp_vendor-telf1.*        i_header-addr = ztemp_vendor-ort01.*        i_header-telfx = ztemp_vendor-telfx.*        i_header-telf1 = ztemp_vendor-telf1.*      ELSE.      SELECT SINGLE name1 stcd1 stras telf1 telfx adrnr FROM lfa1           INTO (i_header-name1, i_header-stcd1, i_header-addr,                 i_header-telf1, i_header-telfx,lfa1-adrnr)                                     WHERE lifnr = i_header-lifn2 .  "i_header-lifnr.  2014.08.11  改为临时供应商      SELECT SINGLE smtp_addr                "get E_mail        FROM adr6 INTO i_header-email       WHERE addrnumber = lfa1-adrnr.      SELECT SINGLE verkf                    "get contact person     FROM lfm1 INTO i_header-verkf     WHERE lifnr = i_header-lifn2 . "i_header-lifnr. 2014.08.11  改为临时供应商*      ENDIF.    ENDIF.*********************税率************************    SELECT SINGLE text1 FROM t007s INTO i_header-stext    WHERE mwskz = i_header-mwskz AND spras = '1' AND kalsm = 'TAXCN'.********************************************************************************************************************************    SELECT SINGLE werks  FROM ekpo INTO i_header-werks WHERE ebeln = i_header-ebeln.    SELECT SINGLE ekgrp  FROM ekko INTO i_header-ekgrp WHERE ebeln = i_header-ebeln.    SELECT SINGLE bsart  FROM ekko INTO i_header-bsart WHERE ebeln = i_header-ebeln.   " 2009.06.22***********************    SELECT SINGLE *                         "header data      FROM ekko     WHERE ebeln = i_header-ebeln.    SELECT SINGLE *                         "Contract Person of Customer      FROM t024     WHERE ekgrp = i_header-ekgrp.**************** 2009.10.20采购组的联系方式    IF sy-subrc = 0.      i_header-eknam = t024-eknam.      i_header-v_telfx = t024-telfx.      i_header-tel_number = t024-tel_number.    ENDIF.    MODIFY i_header.    CLEAR i_header.  ENDLOOP.ENDFORM.                    "sub_process_data*&---------------------------------------------------------------------**&      Form  sub_print_data*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM sub_print_data .  DATA: index TYPE i,        zindex TYPE i.  DESCRIBE TABLE i_header LINES index.  CALL FUNCTION 'OPEN_FORM'    EXPORTING      form                        = 'ZMMPRO03'      language                    = sy-langu      device                      = 'PRINTER'      dialog                      = 'X'      OPTIONS                     = zitcpo    EXCEPTIONS      canceled                    = 1      device                      = 2      form                        = 3      OPTIONS                     = 4      unclosed                    = 5      mail_options                = 6      archive_error               = 7      invalid_fax_number          = 8      more_params_needed_in_batch = 9      spool_error                 = 10      OTHERS                      = 11.  IF sy-subrc <> 0.    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  ENDIF.  LOOP AT i_header.    zindex = sy-tabix.    PERFORM read_data USING i_header.    CALL FUNCTION 'WRITE_FORM'      EXPORTING        element = 'HEADER'        window  = 'HEADER'.    CALL FUNCTION 'WRITE_FORM'      EXPORTING        element = 'COMPANY'        window  = 'COMPANY'.    CALL FUNCTION 'WRITE_FORM'      EXPORTING        element = 'HEADER'        window  = 'MAIN'.    CALL FUNCTION 'WRITE_FORM'      EXPORTING        element = 'ITEM1'        window  = 'MAIN'.*  ***************************************************    LOOP AT i_data WHERE ebeln = i_header-ebeln.      CALL FUNCTION 'WRITE_FORM'        EXPORTING          element = 'ITEM2'          window  = 'MAIN'.*******************物料描述的拆分modify by 2012.08.10*      IF i_data-ztxz02 IS NOT INITIAL OR i_data-zlg2 IS NOT INITIAL.*        CALL FUNCTION 'WRITE_FORM'*          EXPORTING*            element = 'ITEM4'*            window  = 'MAIN'.*      ENDIF.      READ TABLE i_wrkst WITH KEY matnr = i_data-matnr.              IF i_wrkst-wrkst <> ''.        CALL FUNCTION 'WRITE_FORM'          EXPORTING            element = 'ITEM3'            window  = 'MAIN'.      ENDIF.    ENDLOOP.    CALL FUNCTION 'WRITE_FORM'      EXPORTING        element = 'FOOTER'        window  = 'MAIN'.    IF zindex < index."不是最好一页 sapscript的换页NEW-PAGE      CALL FUNCTION 'WRITE_FORM'        EXPORTING          element = 'NEWPAGE'          window  = 'MAIN'.    ENDIF.    CLEAR v_total.  ENDLOOP.  CALL FUNCTION 'CLOSE_FORM'.ENDFORM.                    " sub_print_data*&---------------------------------------------------------------------**&      Form  read_data*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM read_data USING i_header LIKE i_header.  CLEAR: zwaers,zekgrp,v_bukrs,v_werks,t_zg,t_bz,v_vtext.  SELECT SINGLE *  FROM ekko WHERE  ebeln = i_header-ebeln.  zwaers = i_header-waers.  zekgrp  = i_header-ekgrp.  CASE i_header-werks.    WHEN '1000'.      v_bukrs = '1000工厂'.      v_werks = '制造一部'.      t_zg = '小凡、小诺'.      t_bz = '小米'.    WHEN OTHERS.      v_werks = ''.      t_zg = ''.      t_bz = ''.  ENDCASE.  LOOP AT i_data WHERE ebeln = i_header-ebeln.    v_total = v_total + i_data-amount.   "Total amount    v_total_c = v_total.  ENDLOOP.  SELECT text1  FROM t052u INTO  v_vtext  WHERE zterm = i_header-zterm. "付款方式  ENDSELECT .ENDFORM.                    "read_data

0 0