abap源程序---会计凭证 **----------------------------------------------** *|REPORT RINT ACCOUNTING DOCUMENT |* *|Create :XIAODONGMING |* *|DATE :2002.10.21 |* *|CHANGE : |* **----------------------------------------------** REPORT yfi008 NO STANDARD PAGE HEADING LINE-SIZE 127 LINE-COUNT 27(2) MESSAGE-ID znl. TABLES:bkpf, "会计核算凭证标题 bseg, "会计核算凭证 skat, "总帐科目主记录(科目表:说明) kna1, "客户主文件的一般数据 lfa1, "供应商主数据 (一般地区) t003t, "凭证类型文本 vbsegs, "总帐凭证预制的凭证 vbsegd, "客户凭证预制的凭证 vbsegk. "供应商凭证预制的凭证 *********************定义选择书面*** SelectION-SCREEN BEGIN OF BLOCK x_ming WITH FRAME TITLE text-001. PARAMETERS: x_bukrs LIKE bkpf-bukrs DEFAULT 'CC01',"公司代码 x_gjahr LIKE bkpf-gjahr DEFAULT sy-datum."会计年度 Select-OPTIONS: x_belnr FOR bkpf-belnr," OBLIGATORY,"凭证编号 x_bldat FOR bkpf-bldat."记帐日期 PARAMETERS: x_fu TYPE i OBLIGATORY."附件数 SelectION-SCREEN END OF BLOCK x_ming. ************************************
DATA:BEGIN OF itab1 OCCURS 0, bukrs LIKE bseg-bukrs, " 公司代码 gjahr LIKE bseg-gjahr, " 会计年度 belnr LIKE bseg-belnr, " 凭证编号 hkont LIKE bseg-hkont, " 科目代码 txt50 LIKE skat-txt50, " 科目名称 prctr LIKE bseg-prctr, " 利润中心 kostl LIKE bseg-kostl, " 成本中心 wrbtr LIKE bseg-wrbtr, " 凭证货币金额 dmbtr LIKE bseg-dmbtr, " 本位币金额 x_dmbtr LIKE bseg-dmbtr, " 借方金额 y_dmbtr LIKE bseg-dmbtr, " 贷方金额 lifnr LIKE bseg-lifnr, " 客/供代码 kunnr LIKE bseg-kunnr, " 客/供代码 sortl LIKE lfa1-sortl, sortl1(14) TYPE c, shkzg LIKE bseg-shkzg, " 借/贷 xnegp LIKE bseg-xnegp, " 反记帐 zuonr LIKE bseg-zuonr, " 现金流量 koart LIKE bseg-koart, END OF itab1. DATA:BEGIN OF itab2 OCCURS 0, bukrs LIKE bkpf-bukrs, " 公司代码 gjahr LIKE bkpf-gjahr, " 会计年度 belnr LIKE bkpf-belnr, " 凭证编号 bldat LIKE bkpf-bldat, " 记帐日期 blart LIKE bkpf-blart, " 凭证类型 kursf LIKE bkpf-kursf, " 汇率 waers LIKE bkpf-waers, " 币别 usnam LIKE bkpf-usnam, " 用户名 bktxt LIKE bkpf-bktxt, " 业务摘要 stblg LIKE bkpf-stblg, " 冲消凭证 stgrd LIKE bkpf-stgrd, " 冲销原因 ltext LIKE t003t-ltext, " 凭证类型说明 lifnr LIKE lfa1-lifnr, name1 LIKE lfa1-name1, END OF itab2. ***************************** DATA:BEGIN OF l_itab OCCURS 0, lifnr LIKE lfa1-lifnr, sortl LIKE lfa1-sortl, END OF l_itab. DATA:BEGIN OF k_itab OCCURS 0, kunnr LIKE kna1-kunnr, name1 LIKE kna1-name1, END OF k_itab. *****************************
DATA: text(9) TYPE c. DATA: page TYPE i. DATA: page1 TYPE i. DATA: text2(10) TYPE c. DATA: max_pageno(2) TYPE c." sy-pagno. DATA: BEGIN OF itab_page OCCURS 0, m_page(2) TYPE c, END OF itab_page.
START-OF-SelectION.
PERFORM data. "选择数据——会计凭证 PERFORM data_out. "行项目数据输出
TOP-OF-PAGE. PERFORM top_page. "输出页头
END-OF-PAGE. PERFORM endpage. *&---------------------------------------------------------------------* *& Form data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM data. DATA: BEGIN OF t_itab OCCURS 0. INCLUDE STRUCTURE itab1. DATA: END OF t_itab. Select * FROM bkpf INTO CORRESPONDING FIELDS OF TABLE itab2 "会计凭证 Where bldat IN x_bldat AND belnr IN x_belnr AND bukrs = x_bukrs AND gjahr = x_gjahr ORDER BY belnr. LOOP AT itab2. Select * FROM bseg "会计凭证行项目 APPENDING CORRESPONDING FIELDS OF TABLE itab1 Where bukrs = itab2-bukrs AND belnr = itab2-belnr AND gjahr = itab2-gjahr.
Select * FROM vbsegs "总帐凭证预制 Where bukrs = itab2-bukrs AND belnr = itab2-belnr AND gjahr = itab2-gjahr. itab1-hkont = vbsegs-saknr. MOVE-CORRESPONDING vbsegs TO itab1. COLLECT itab1. CLEAR itab1. ENDSelect. Select * FROM vbsegk "供应商凭证预制 Where bukrs = itab2-bukrs AND belnr = itab2-belnr AND gjahr = itab2-gjahr. itab1-hkont = vbsegk-hkont. MOVE-CORRESPONDING vbsegk TO itab1. COLLECT itab1. CLEAR itab1. ENDSelect. Select * FROM vbsegd "客户凭证预制 Where bukrs = itab2-bukrs AND belnr = itab2-belnr AND gjahr = itab2-gjahr. itab1-hkont = vbsegd-hkont. MOVE-CORRESPONDING vbsegd TO itab1. COLLECT itab1. CLEAR itab1. ENDSelect. ENDLOOP. ********处理反记帐******************* t_itab[] = itab1[]. REFRESH itab1. * SORT t_itab BY koart. LOOP AT t_itab. itab1 = t_itab. IF itab1-xnegp = 'X'. itab1-xnegp = ''. itab1-wrbtr = -1 * itab1-wrbtr. itab1-dmbtr = -1 * itab1-dmbtr. IF itab1-shkzg = 'S'. itab1-shkzg = 'H'. ELSE. itab1-shkzg = 'S'. ENDIF. ENDIF. IF itab1-shkzg = 'S'. itab1-x_dmbtr = itab1-dmbtr. ELSE. itab1-y_dmbtr = itab1-dmbtr. ENDIF. COLLECT itab1. CLEAR itab1. ENDLOOP. ********************************** DATA: BEGIN OF s_itab OCCURS 0. INCLUDE STRUCTURE itab1. DATA: END OF s_itab.
Select lfa1~lifnr lfa1~sortl INTO CORRESPONDING FIELDS OF TABLE l_itab FROM lfa1. Select kna1~kunnr kna1~name1 INTO CORRESPONDING FIELDS OF TABLE k_itab FROM kna1. ************************************* DATA: c_no LIKE sy-tabix.
LOOP AT itab1. IF itab1-lifnr NE ''. c_no = sy-tabix.
READ TABLE l_itab WITH KEY lifnr = itab1-lifnr. itab1-sortl = l_itab-sortl. MODIFY itab1 INDEX c_no. ELSEIF itab1-kunnr NE ''. c_no = sy-tabix. READ TABLE k_itab WITH KEY kunnr = itab1-kunnr.
itab1-sortl1 = k_itab-name1(14). MODIFY itab1 INDEX c_no. ENDIF. ENDLOOP. ENDFORM. " data *&---------------------------------------------------------------------* *& Form data_out *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM data_out. DATA: x_lines TYPE i. DATA: s_no LIKE sy-pagno. DATA: lin_no LIKE sy-linno. DATA: z(1) TYPE c. SORT itab1 BY belnr." koart. " 排序 LOOP AT itab1. page = sy-pagno. page = 0. AT NEW belnr. * WRITE sy-pagno TO max_pageno LEFT-JUSTIFIED. * DO sy-pagno TIMES. * READ LINE 4 OF PAGE sy-index. * REPLACE '--' WITH max_pageno INTO sy-lisel. * MODIFY CURRENT LINE. * ENDDO. NEW-PAGE. page = page + 1.
sy-pagno = 1.
READ TABLE itab2 WITH KEY "读取表头 bukrs = itab1-bukrs gjahr = itab1-gjahr belnr = itab1-belnr.
ENDAT. |