现在的位置: 首页 > 综合 > 正文

SAP print Document

2013年07月22日 ⁄ 综合 ⁄ 共 20368字 ⁄ 字号 评论关闭

*&---------------------------------------------------------------------*
*& Report  Z_FI_PZ
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*

REPORT  Z_FI_PZ MESSAGE-ID zmsg LINE-SIZE 136 LINE-COUNT 33
NO STANDARD PAGE HEADING.

TABLES:bseg,bkpf,skat,t001 ,adrc, vbrk,vbpa,usrefus.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE tit.
PARAMETER:      ccno LIKE bkpf-bukrs DEFAULT '1100' OBLIGATORY,
                gjah LIKE bkpf-gjahr DEFAULT sy-datum(4) OBLIGATORY.
SELECT-OPTIONS: period for bkpf-MONAT ,  "会计期间
                date FOR bkpf-budat  DEFAULT sy-datum NO-EXTENSION,   "记帐日期
                type FOR bkpf-blart,  "凭证类型
                dono FOR bkpf-belnr NO-EXTENSION.   "凭证号
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b8 WITH FRAME TITLE tit2.
PARAMETERS:zdydate LIKE bkpf-budat DEFAULT sy-datum.
  PARAMETERS: finame(8TYPE c" DEFAULT '', " 财务主管
              cnname(8TYPE c.  "Default '',  " 出纳
SELECTION-SCREEN END OF BLOCK b8.

SELECTION-SCREEN BEGIN OF BLOCK c2 WITH FRAME TITLE text-002.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK c2.

INITIALIZATION.
  tit = '请输入查询条件'.
  tit2 = '设置打印相关'.

START-OF-SELECTION.

  DATA:  dingdan(11TYPE c.             "订单号
  DATA:  LSKEY LIKE BKPF-AWKEY.          "凭证关键字参考 中间引用
  DATA:  BEGIN OF docudex OCCURS 0,      "凭证索引 凭证头字段
         SFAKN LIKE VBRK-SFAKN,          "已取消发票号
         bukrs LIKE bkpf-bukrs,          "公司代码
         belnr LIKE bkpf-belnr,          "凭证号
         bstat LIKE bkpf-bstat,          "凭证状态,V为经过预制,
         BlDAT LIKE BKPF-BlDAT,          "凭证日期,如发票本身日期
         budat LIKE bkpf-budat,          "过帐日期
         blart LIKE bkpf-blart,          "凭证类型
         xblnr LIKE bkpf-xblnr,          "参考凭证
         bktxt LIKE bkpf-bktxt,          "抬头文本  可写/附件张数
         waers LIKE bkpf-waers,          "币种
         KURSF LIKE BKPF-KURSF,          "汇率
         STBLG LIKE BKPF-STBLG,           "冲销凭证
         STGRD LIKE BKPF-STGRD,           "冲销原因
         XREVERSAL LIKE BKPF-XREVERSAL,   "冲销标识
         TCODE LIKE BKPF-TCODE,           "事务代码
         AWKEY LIKE BKPF-AWKEY,           "凭证抬头关键字参考
         gjahr LIKE BKPF-gjahr,           "会计年度
         ttsum LIKE bseg-dmbtr,          "借方金额总计
         tpage LIKE bseg-buzei VALUE 0,  "总页数, 用凭证总行数除每页行数得到,BUZEI为行号
         QZDOCS(33TYPE C,             "清账凭证号 因可能不止一个,所以用STRING
         END OF docudex,

         BEGIN OF docu OCCURS 0,
         ebeln LIKE bseg-ebeln,          "采购订单号
         EBELP LIKE BSEG-EBELP,          "采购订单项号
         dingdanmemo(15TYPE c,
         dingdan(11TYPE c,
         mandt LIKE bkpf-mandt,          "集团
         bukrs LIKE bkpf-bukrs,          "公司代码
         belnr LIKE bkpf-belnr,          "凭证号
         blart LIKE bkpf-blart,          "凭证类型
         bldat LIKE bkpf-bldat,          "凭证日期
         xblnr LIKE bkpf-xblnr,          "参考凭证
         budat LIKE bkpf-budat,          "记帐日期
         waers LIKE bkpf-waers,          "币种
         bktxt LIKE bkpf-bktxt,          "抬头说明
         awkey LIKE bkpf-awkey,          "抬头关键字
         usnam LIKE bkpf-usnam,          "过帐人
         ppnam LIKE bkpf-ppnam,          "预制人
         buzei LIKE bseg-buzei,          "行项目号
         AUGDT LIKE BSEG-AUGDT,          "清账日期
         AUGBL LIKE BSEG-AUGBL,          "清账凭证 清账是按行项目的,所以不能放在抬头里

         hkont LIKE bseg-hkont,          "总帐科目
         hkont2 TYPE string,             "科目文本
         shkzg LIKE bseg-shkzg,          "借贷
         koart LIKE bseg-koart,          "科目类型
         kunnr LIKE bseg-kunnr,          "客户
         lifnr LIKE bseg-lifnr,          "供应商
         anln1 LIKE bseg-anln1,          "资产编号
         matnr LIKE bseg-matnr,          "物料号
         wrbtr LIKE bseg-wrbtr,          "原币金额
         dmbtr LIKE bseg-dmbtr,          "本位币金额
         menge LIKE bseg-menge,          "数量
         sgtxt LIKE bseg-sgtxt,          "科目文本
         sgtxt2 LIKE bseg-sgtxt,         "科目文本(第二行摘要编号)
         sgtxt3 LIKE bseg-sgtxt,         "科目文本(第二行摘要文本)
         kostl LIKE bseg-kostl,          "成本中心
         aufnr LIKE bseg-aufnr,          "生产订单号
         VBEL2 LIKE BSEG-VBEL2,          "销售订单号
         POSN2 LIKE BSEG-POSN2,          "销售订单项号
         ccaor LIKE csks-kostl,          "成本中心内部订单号码
         akont LIKE lfb1-akont,          "统驭科目
         txt20 LIKE skat-txt20,          "科目名称
         ttsum LIKE bseg-dmbtr,          "借方金额总计
         tpage TYPE i VALUE 0,           "总页数
         usalias LIKE usrefus-useralias,  "过帐用户别名
         ppalias LIKE usrefus-useralias,  "预制用户别名
         pralias LIKE usrefus-useralias,  "打印用户别名
         END OF docu.

  DATA:  header(6TYPE c,
         docuno LIKE bkpf-belnr,
         lineno TYPE i VALUE 0,
         itemno TYPE i VALUE 10,
         ttline TYPE i VALUE 0,
         tline TYPE i VALUE 0,
         vusname(15),
         object LIKE cdpos-objectid,
         tpage LIKE bseg-buzei VALUE 0,
         pageno TYPE i VALUE 0.
  DATA:  butxt TYPE string.          "公司名称
  DATA:  ltext LIKE t003t-ltext.     "凭证类型名称
  DATA:  dybsum LIKE bseg-wrbtr.       "借方原币金额累计
  DATA:  cybsum LIKE bseg-wrbtr.       "贷方原币金额累计
  DATA:  bwbsum LIKE bseg-dmbtr.       "本位币金额累计 最后应为0,即为平衡
  DATA:  bwbtr like bseg-dmbtr.      "带符号的本位币金额
  DATA:  posi TYPE p.
  DATA:  makeman(10),checkman(10).
  DATA:  sgtxtflg TYPE i.
  DATA:  sgtxtpos TYPE i VALUE 21.
  DATA: leixing LIKE bkpf-bstat,
        pztype LIKE bkpf-blart,
        QZDAT  LIKE BSEG-AUGDT,   "清账日期,当有几个清账凭证时,取最后一个
        QZDOCS  TYPE STRING,      "一张凭证的清账凭证可能不止一个,所以用字串,长度不定
        lxwenben  TYPE string,
        lxname LIKE t003t-ltext.
  DATA: danjia TYPE p DECIMALS 4.
  DATA:bbff LIKE vbpa-adrnr.

********************************************************************************************************
*
*    把符合搜索条件的凭证号都找出来放在DOCUDEX表中,并按凭证号排序
*
********************************************************************************************************

  SELECT bukrs belnr bstat budat blart waers kursf xblnr bktxt BLDAT STBLG STGRD XREVERSAL TCODE AWKEY gjahr
         FROM bkpf
         INTO CORRESPONDING FIELDS OF TABLE docudex
         WHERE  bukrs = ccno AND gjahr = gjah AND MONAT IN PERIOD
                AND belnr IN dono AND budat IN date
                AND blart IN type  " AND ppnam IN ppname
*               AND usnam IN usname
                ORDER  BY belnr.

********************************************************************************************************
*
*    按凭证号顺序进行数据处理
*
********************************************************************************************************

  LOOP AT docudex.

    SELECT SINGLE belnr bldat bktxt usnam ppnam waers blart bukrs awkey
    mandt budat xblnr FROM bkpf
             INTO (docu-belnr,docu-bldat,docu-bktxt,docu-usnam,docu-ppnam,docu-waers,docu-blart,docu-bukrs,docu-awkey,
              docu-mandt,docu-budat,docu-xblnr)
             WHERE bukrs = docudex-bukrs AND belnr = docudex-belnr
                   AND gjahr = gjah.

    SELECT shkzg hkont anln1 matnr  kostl menge dmbtr ebeln EBELP
          kunnr lifnr kostl wrbtr sgtxt koart aufnr AUGDT AUGBL VBEL2 POSN2
           FROM bseg
           INTO (docu-shkzg,docu-hkont,docu-anln1,docu-matnr, docu-kostl,docu-menge,docu-dmbtr,docu-ebeln,DOCU-EBELP,
           docu-kunnr,docu-lifnr,docu-kostl,docu-wrbtr,docu-sgtxt,docu-koart,docu-aufnr,DOCU-AUGDT,DOCU-AUGBL,DOCU-VBEL2,DOCU-POSN2)
           WHERE bukrs = docudex-bukrs AND belnr = docudex-belnr
                 AND gjahr = gjah.
      CONCATENATE docu-mandt(3) docu-awkey+10(4)
             docu-belnr(10) docu-bldat(4INTO object.

      IF docu-ppnam IS INITIAL.
        docu-ppnam = ''.
      ENDIF.
      IF docu-usnam IS INITIAL.
        docu-usnam = ''.
      ENDIF.
      IF NOT docu-AUGBL IS INITIAL.
        SEARCH QZDOCS FOR DOCU-AUGBL.
         IF SY-SUBRC <> 0.
           CONCATENATE QZDOCS DOCU-AUGBL INTO QZDOCS SEPARATED BY ' '.
         ENDIF.
      ENDIF.

*      IF docu-ebeln = ''.
*        docu-dingdan = ''.
*        docu-dingdanmemo = docu-ebeln.
*      ELSE.
*        docu-dingdan = '采购订单:'.
*        docu-dingdanmemo = docu-ebeln.
*      ENDIF.
      docu-sgtxt2 = docu-sgtxt.
      SELECT SINGLE useralias FROM usrefus INTO docu-usalias
         WHERE bname = docu-usnam.

      SELECT SINGLE useralias FROM usrefus INTO docu-ppalias
         WHERE bname = docu-ppnam.

      SELECT SINGLE useralias FROM usrefus INTO docu-pralias
         WHERE bname = sy-uname.

      CASE docu-koart.
        WHEN 'A'.
          docu-hkont2 = docu-anln1+2(10).
          SELECT SINGLE txt50 FROM anla INTO docu-sgtxt3 WHERE anln1 = docu-anln1 and bukrs = docu-bukrs.    "资产编号跟公司代码
        WHEN 'D'.
          docu-hkont2 = docu-kunnr.
          SELECT SINGLE name1 FROM kna1 INTO docu-sgtxt3 WHERE kunnr = docu-kunnr.
        WHEN 'K'.
          docu-hkont2 = docu-lifnr.
          SELECT SINGLE name1 FROM lfa1 INTO docu-sgtxt3 WHERE lifnr = docu-lifnr.
        WHEN 'M'.
          docu-hkont2 = docu-matnr+8(10).
          SELECT SINGLE maktx FROM makt INTO docu-sgtxt3 WHERE matnr = docu-matnr.
        WHEN 'S'.

          IF NOT docu-kostl IS INITIAL.
             docu-hkont2 = docu-kostl.
             SELECT SINGLE KTEXT FROM CSKT INTO docu-sgtxt3 WHERE KOSTL = docu-KOSTL AND DATBI ='99991231'.
            ELSEIF NOT DOCU-AUFNR IS INITIAL.
              DOCU-HKONT2 = '订单(P/S/I):'.
              CONCATENATE DOCU-AUFNR DOCU-VBEL2 DOCU-POSN2 INTO DOCU-SGTXT3 SEPARATED BY '/'.
            ELSEIF NOT DOCU-EBELN IS INITIAL.
              DOCU-HKONT2 = 'PO/I/MAT:'.
              CONCATENATE DOCU-EBELN DOCU-EBELP DOCU-MATNR+8(10INTO DOCU-SGTXT3 SEPARATED BY '/'.
            ELSE.
              CLEAR: DOCU-SGTXT3,DOCU-HKONT2.
          ENDIF.
*            docu-ccaor = docu-kostl+4(6).docu-ccaor+7(1) = 'C'.
*          ELSEIF docu-aufnr <> ''.
*            docu-ccaor = docu-aufnr+6(6).docu-ccaor+7(1) = 'I'.
*          ENDIF.
      ENDCASE.

      COLLECT docu.      "非数字字段内容相同时,合并为一行打印,数字字段则累加
*      IF SY-TABIX > TTLINE.
*      ttline = ttline + 1.  "本凭证总行数
*      ENDIF.
*      docu-buzei = ttline.  "行号
    ENDSELECT.
  loop at docu where belnr = docudex-belnr.
    ttline = ttline + 1.
    docu-buzei = ttline.
    modify docu.
  endloop.
      docudex-tpage = ttline DIV itemno + 1."每页10行,算出总页数
      lineno = ttline MOD itemno.
      IF  lineno = 0 AND ttline >= itemno.
        docudex-tpage = docudex-tpage - 1.
      ENDIF.
*      IF docu-shkzg = 'S'.
*        docudex-ttsum = docudex-ttsum + docu-wrbtr. "金额总计
*      ENDIF.
      DOCUDEX-QZDOCS = QZDOCS.    "更新清账凭证号清单
      MODIFY docudex.

    ttline = 0.
    CLEAR: docu, QZDOCS.
  ENDLOOP.

*  LOOP AT docudex.
*    docu-ttsum = docudex-ttsum.
*    docu-tpage = docudex-tpage.
*    MODIFY docu TRANSPORTING ttsum tpage WHERE belnr = docudex-belnr.
*  ENDLOOP.

  lineno = 0.

  LOOP AT docudex.

    NEW-PAGE.
    CLEAR pageno.
    dybsum = 0.
    cybsum = 0.
    bwbsum = 0.
    DATA: ttbelnr(15).
    ttbelnr = docudex-belnr.
    PERFORM top-of-pagess.
    CASE docudex-blart+0(1).
      WHEN 'W'.
        LOOP AT docu WHERE belnr = docudex-belnr.
          SELECT SINGLE txt20 INTO docu-sgtxt2
               FROM skat WHERE saknr = docu-hkont2 AND ktopl = 'ZSUN'.

          SELECT SINGLE txt20 INTO docu-sgtxt
                 FROM skat WHERE saknr = docu-hkont AND ktopl = 'ZSUN'.
          WRITE:/  '|' ,2  docu-buzei+1(2).
          WRITE:4  '|'.
          CASE docu-blart.
            WHEN 'RV'.
              CLEAR bbff.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'销售产品'.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.
              SELECT SINGLE adrnr INTO bbff FROM vbpa
                  WHERE vbeln = docudex-belnr.
              SELECT SINGLE name1 INTO docu-sgtxt2 FROM adrc
                  WHERE addrnumber = bbff.
            WHEN 'KR'.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'购入材料'.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.

            WHEN OTHERS.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'  '.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.

          ENDCASE.

*          WRITE:12  '|'.

          WRITE:10 docu-hkont NO-GAP,docu-sgtxt,54 '|'.
          "数量和单价
          danjia = docu-wrbtr / docu-menge.
          WRITE55(15) docu-menge RIGHT-JUSTIFIED NO-GAP,70 '|',71(15) danjia RIGHT-JUSTIFIED NO-GAP,86'|'.
          IF docu-shkzg = 'S'.                             "借方
            bwbtr = docu-dmbtr.
            WRITE:87(14) docu-wrbtr,102 '|',118 '|',119(15) bwbtr,136 '|'.
            dybsum  = dybsum + docu-wrbtr.
            bwbsum  = bwbsum + bwbtr.
          ELSEIF docu-shkzg = 'H'.           "贷方
            bwbtr = - docu-dmbtr.
            WRITE:102 '|'103(14) docu-wrbtr,118 '|',119(15) bwbtr,136 '|'.
            cybsum = cybsum + docu-wrbtr.
            bwbsum  = bwbsum + bwbtr.
          ENDIF.

*            IF docu-koart = 'D' OR docu-koart = 'A' OR docu-koart = 'K' OR
*      docu-koart = 'M' .
              WRITE:/ '|',4 '|',8 docu-hkont2 NO-ZERO,docu-sgtxt3 NO-ZERO,54 '|',70 '|',
              86 '|',102 '|', 118'|',136 '|'.
*            ELSE.
*             WRITE:/ '|',4 '|',54 '|',70 '|',86 '|',102 '|',118'|',136 '|'.
*            ENDIF.

          lineno = lineno + 1.               "
          IF lineno = itemno AND pageno NE docudex-tpage.         "超过一页时,换页
            PERFORM end-of-page.
            lineno = 0.
            NEW-PAGE.
            PERFORM top-of-pagess.
          ENDIF.

        ENDLOOP.

      WHEN OTHERS.
        LOOP AT docu WHERE belnr = docudex-belnr.
          SELECT SINGLE txt20 INTO docu-sgtxt2
               FROM skat WHERE saknr = docu-hkont2 AND ktopl = 'ZSUN'.

          SELECT SINGLE txt20 INTO docu-sgtxt
                 FROM skat WHERE saknr = docu-hkont AND ktopl = 'ZSUN'.
          WRITE:/  '|',2  docu-buzei+1(2).
          WRITE:4  '|'.
          CASE docu-blart.
            WHEN 'RV'.
              CLEAR bbff.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'销售产品'.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.
              SELECT SINGLE adrnr INTO bbff FROM vbpa
                  WHERE vbeln = docudex-belnr.
              SELECT SINGLE name1 INTO docu-sgtxt2 FROM adrc
                  WHERE addrnumber = bbff.
            WHEN 'KR'.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'购入材料'.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.

            WHEN OTHERS.
              IF docu-sgtxt2 = ''.
                IF docu-bktxt = ''.
                  WRITE:'  '.
                ELSE.
                  WRITE:docu-bktxt.
                ENDIF.
              ELSE.
                WRITE:docu-sgtxt2.
              ENDIF.

          ENDCASE.

          WRITE:38  '|  '.

          WRITE: docu-hkont NO-GAP,docu-sgtxt,86 '|'.

          IF docu-shkzg = 'S'.    "借方
            bwbtr = docu-dmbtr.
            WRITE:87(14) docu-wrbtr ,102 '|',118 '|',119(15) bwbtr, 136 '|'.
            dybsum  = dybsum + docu-wrbtr.
            bwbsum  = bwbsum + bwbtr.
          ELSEIF docu-shkzg = 'H'.           "贷方
            bwbtr = - docu-dmbtr.
            WRITE:102 '|'103(14) docu-wrbtr ,118 '|',119(15) bwbtr,136 '|'.
            cybsum = cybsum + docu-wrbtr.
            bwbsum  = bwbsum + bwbtr.
          ENDIF.

*            IF docu-koart = 'D' OR docu-koart = 'A' OR docu-koart = 'K' OR
*      docu-koart = 'M' .
              WRITE:/ '|',4 '|',38 '|',docu-hkont2 NO-ZERO,docu-sgtxt3 NO-ZERO,
              86 '|',102 '|', 118'|',136 '|'.
*            ELSE.
*              WRITE:/ '|',4 '|',38 '|',86 '|',102 '|',118'|',136 '|'.
*            ENDIF.

          lineno = lineno + 1.               "本页行号
          IF lineno = itemno AND pageno NE docudex-tpage."超过一页,换页
            PERFORM end-of-page.
            lineno = 0.
            NEW-PAGE.
            PERFORM top-of-pagess.
          ENDIF.

        ENDLOOP.
    ENDCASE.
    lineno = ( itemno - lineno ) * 2  .
    WHILE lineno > 0.
      CASE docudex-blart+0(1).
        WHEN 'W'.
          WRITE:/ '|',4 '|',54 '|',70 '|',86 '|',102 '|',118'|',136 '|'.
          lineno = lineno - 1.
        WHEN OTHERS.
          WRITE:/ '|',4 '|',38 '|',86 '|',102 '|',118'|',136 '|'.
          lineno = lineno - 1.
      ENDCASE.
    ENDWHILE.
    lineno = 0.
    PERFORM end-of-page.
    CLEAR: docu,lxname.
  ENDLOOP.

*&--------------------------------------------------------------------*
*&      Form  top-of-pagess
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM top-of-pagess.
  pageno = pageno + 1.
  SELECT SINGLE butxt INTO butxt FROM t001 WHERE bukrs = docudex-bukrs.
*  SELECT SINGLE bstat blart INTO (leixing,pztype) FROM bkpf
*  WHERE belnr = docudex-belnr AND bukrs = docudex-bukrs.

*  CASE leixing.   "凭证状态
*    WHEN 'A'.
*      lxwenben = '清帐凭证_'.
*    WHEN 'B'.
*      lxwenben = '重新设置清帐凭证_'.
*    WHEN 'D'.
*      lxwenben = '周期性分录凭证_'.
*    WHEN 'L'.
*      lxwenben = '不在主要分类帐中过帐_'.
*    WHEN 'M'.
*      lxwenben = '样本凭证_'.
*    WHEN 'S'.
*      lxwenben = '注释项目_'.
*    WHEN 'V'.
*      lxwenben = '预制凭证_'.
*    WHEN 'W'.
*      lxwenben = '具有凭证ID更改的暂存凭证_'.
*    WHEN 'Z'.
*      lxwenben = '暂存凭证被删除_'.
*    WHEN OTHERS.
*      lxwenben = '正式凭证_'.
*  ENDCASE.

  SELECT SINGLE ltext INTO lxname FROM t003t WHERE blart = docudex-blart.
  IF DOCUDEX-BLART = 'RV'.
    SELECT SINGLE SFAKN INTO DOCUDEX-SFAKN FROM VBRK WHERE VBELN = DOCUDEX-BELNR.
    IF SY-SUBRC = 0.
    SELECT SINGLE VBELN INTO DOCUDEX-SFAKN FROM VBRK WHERE SFAKN = DOCUDEX-BELNR.
    ENDIF.
    DOCUDEX-STBLG = DOCUDEX-SFAKN.
   ELSEIF DOCUDEX-BLART = 'RE'.
    SELECT SINGLE STBLG INTO DOCUDEX-SFAKN FROM RBKP WHERE BELNR = DOCUDEX-AWKEY+0(10).
    CONCATENATE DOCUDEX-SFAKN DOCUDEX-gjahr INTO LSKEY.
    SELECT SINGLE BELNR INTO DOCUDEX-STBLG FROM BKPF WHERE AWKEY = LSKEY.
  ENDIF.

  WRITE:/56 butxt.
  WRITE:/60 '记  帐  凭  证' ,/.

  WRITE:/2 '打印日期:',zdydate.
  WRITE:26 '凭证日期: ',DOCUDEX-BLDAT,50 '过帐日期: ',docudex-budat,75 '事务码: ',DOCUDEX-TCODE,91 '冲销凭证: ',DOCUDEX-STBLG .
  WRITE:116 '凭证号: ',docudex-belnr.
  WRITE:/2 '参考凭证: ',docudex-xblnr,91  '清账凭证: ',DOCUDEX-QZDOCS.
IF DOCUDEX-BLART = 'RV' OR DOCUDEX-BLART = 'RE'.
  WRITE:32 '发票凭证: ',DOCUDEX-AWKEY+0(10).
  WRITE:56 '取消发票: ',DOCUDEX-SFAKN.
 ELSEIF DOCUDEX-BLART+0(1) = 'W'.
  WRITE:36 '物料凭证: ',DOCUDEX-AWKEY+0(10).
ENDIF.

  WRITE:/2 '凭证类型: ',DOCUDEX-BLART,lxname ,''.
  WRITE60 '凭证货币: ',docudex-waers.
  WRITE75 ' 汇率: ',docudex-KURSF .
  WRITE95 '抬头文本: ',docudex-bktxt. ", '张'. " INPUT ON ,115 '张'.

  "凭证类型是w开头的格式
  CASE DOCUDEX-BLART+0(1).
    WHEN 'W'.
      ULINE /1(136).
      WRITE:/ '|',2 'I',4 '|'19 '科目代码及名称  ',54 '|',60 '数量  ',70 '|',77 '单价  ',86'|'.
      WRITE:87(14)'借方金额' CENTERED,102 '|',103(14'贷方金额' CENTERED,118 '|',119(16'折本币金额' CENTERED,136 '|'.
      ULINE /1(136).
    WHEN OTHERS.
      ULINE /1(136).
      WRITE:/ '|',2 'I',4 '|',19 '摘  要 ',38 '|',50 '科目代码及名称 ',86 '|'.
      WRITE:87(14)'借方金额' CENTERED,102 '|',103(14'贷方金额' CENTERED,118 '|',119(16'折本币金额' CENTERED,136 '|'.
      ULINE /1(136).

  ENDCASE.
ENDFORM.                    "top-of-pagess
*&--------------------------------------------------------------------*
*&      Form  END-OF-PAGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM end-of-page.
  ULINE /1(136).
  WRITE:/ '|'.  " 4 '|'.
if pageno NE docudex-tpage .
  WRITE35 '小          计   ',86 '|'.
 else.
  WRITE35 '合          计   ',86 '|'.
endif.
  WRITE87  dybsum , 102 '|',103 cybsum ,118 '|',119 bwbsum , 136 '|'"123 cybsum NO-ZERO.
  ULINE /1(136).
  WRITE:/2 '主管签章:',finame.
*  WRITE:18 '审核:',shname.
  WRITE:20 '审核过帐:',docu-usalias.
  WRITE:40 '预制凭证: ',docu-ppalias.
  WRITE:60 '出纳签章:',cnname.
  WRITE:86 '凭证打印:',docu-pralias. "docu-pralias.

* WRITE:52 '打印:',docu-pralias.
* WRITE:70 '打印日期:',zdydate.

*  IF docudex-tpage = 0.
*    docudex-tpage = 1.
*  ENDIF.
  WRITE:120 '第' NO-GAP,(2) pageno NO-GAP,'页 共 ' ,(3) docudex-tpage NO-zero,'页'.
ENDFORM.                    "END-OF-PAGE

抱歉!评论已关闭.