在sap中用承諾項目出現金流量表(報表開發(fā)源代碼)_第1頁
在sap中用承諾項目出現金流量表(報表開發(fā)源代碼)_第2頁
在sap中用承諾項目出現金流量表(報表開發(fā)源代碼)_第3頁
在sap中用承諾項目出現金流量表(報表開發(fā)源代碼)_第4頁
在sap中用承諾項目出現金流量表(報表開發(fā)源代碼)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.天馬行空官方博客: ;QQ:1318241189;QQ群:175569632在SAP中用承諾項目出現金流量表(報表開發(fā)源代碼)可能使用到的外部數據 或 SAP數據表數據的格式、字段等: fkrs    財務管理范圍主記錄表 fops    承諾項目主記錄表 fmmp    現金預算管理行項目表 lfa1    供應商主記錄表 kna1    客戶主記錄表 bsis    總帳未清項表 t001    公司代碼主記錄表 usr21   用戶主記錄

2、表 adrp    用戶地址表 bkpf    財務憑證抬頭表 bseg    財務憑證行項目表 glt0    總帳科目期間余額表    直接法通過分析憑證的承諾項目來取數,SAP為該項功能定義了一個邏輯數據庫C1F. 本程序 開始部分的邏輯數據庫取數部分是SAP的標準程序,其功能是將與現金流量相關的數據裝入內部表 G_T_FMMP, 這部分程序禁止修改。     直接法: 1、裝入金流量表定義參數(FORM fill_item_direct)   該子程序將的現

3、金流量表項和其對應的承諾項目裝入內部表INT_CASHFLOW. 2、裝入與現金流量相關的數據   這部分是邏輯數據庫裝入,屬于SAP標準程序,數據關系比較復雜,建議不要做任何改動。 3、計算現金流量   計算的基本思路是對表G_T_FMMP進行循環(huán),查找其中每條記錄的承諾項目屬于INT_CASHFLOW的 表項后,把其金額累計到相應表項。 REPORT zcmrp001  NO STANDARD PAGE HEADING LINE-SIZE 220. TABLES: fkrs, fpos, fmmp, lfa1, kna1 ,bsis,    

4、;    t001, usr21, adrp, bkpf, bseg, glt0. DATA: BEGIN OF g_t_fmmp OCCURS 300,         fikrs    LIKE fmmp-fikrs,         bukrs    LIKE fmmp-bukrs,         fipos    LIKE fmmp-fipos,      

5、   wrttp    LIKE fmmp-wrttp,         gjahr    LIKE fmmp-gjahr,         perio    LIKE fmmp-perio,         zhldt    LIKE fmmp-zhldt,         budat    LIKE fmmp-budat,

6、        gsber    LIKE fmmp-gsber,         vo_saknr LIKE fmmp-vo_saknr,         lifnr    LIKE fmmp-lifnr,         kunnr    LIKE fmmp-kunnr,         fwaer    LIKE

7、 fmmp-fwaer,         fkbtr    LIKE fmsu-btr001,         zbelnr   LIKE cooi-refbn,         zbuzei   LIKE cooi-rfpos,         vo_bukrs LIKE fmmp-vo_bukrs,         vo_gjahr LIKE fmmp-

8、vo_gjahr,         fitxt    LIKE fkrs-fitxt,         fname    LIKE ffnd-fname,         cname    LIKE fctr-cname,         pname    LIKE fpos-pname,         wtext

9、   LIKE fmmp-wtext,      END OF g_t_fmmp. DATA: BEGIN OF g_t_fkrs OCCURS 20,         fikrs LIKE fkrs-fikrs,         fitxt LIKE fkrs-fitxt,      END OF g_t_fkrs. DATA: BEGIN OF g_t_fpos OCCURS 200,       &#

10、160; fipos LIKE fpos-fipos,         pname LIKE fpos-pname,      END OF g_t_fpos. DATA: BEGIN OF g_t_lfa1 OCCURS 200,         lifnr LIKE lfa1-lifnr,         sortl LIKE lfa1-sortl,      END OF g_t_lfa1. DATA: BEG

11、IN OF g_t_kna1 OCCURS 200,         kunnr LIKE kna1-kunnr,         sortl LIKE kna1-sortl,      END OF g_t_kna1. RANGES: r_kunnr FOR kna1-kunnr,        r_lifnr FOR lfa1-lifnr,        r_fipos FOR fmmp-fipos.

12、DATA: BEGIN OF int_cashflow OCCURS 100,         desc(66)     TYPE c,         r_fipos(66)  TYPE c,         com_fkbtr    LIKE fmmp-fkbtr,         fi_fkbtr     LIKE fmmp-fkbtr,   

13、0;     fi_fwaer     LIKE fmmp-fwaer,      END OF int_cashflow. DATA: BEGIN OF g_t_t001 OCCURS 300,         bukrs LIKE t001-bukrs,         butxt LIKE t001-butxt,      END OF g_t_t001. DATA:   pos   

14、60;      TYPE i VALUE 0,        num_of_bukrs TYPE i VALUE 0. DATA    cashflow_detail. DATA : min_budat      LIKE fmmp-budat,       max_budat      LIKE fmmp-budat,       z_min_budat    L

15、IKE sy-datum,       z_max_budat    LIKE sy-datum,       z_bukrs        LIKE fmmp-bukrs,       z_profit       LIKE bseg-dmbtr,     "凈利潤       z_bad_debit    LIKE bseg-dmbt

16、r,     "壞帳準備及計提的資產減值準備       z_asset_dep    LIKE bseg-dmbtr,     "固定資產折舊       z_intang_dep   LIKE bseg-dmbtr,     "無形資產攤銷       z_longpaid_dep LIKE bseg-dmbtr,     "長期待攤費用攤銷  

17、;     z_paid_dec     LIKE bseg-dmbtr,     "待攤費用減少       z_accrul_inc   LIKE bseg-dmbtr,     "預提費用增加       z_asset_pro    LIKE bseg-dmbtr,     "固定資產,長期資產處置損失       z_asset_scr

18、   LIKE bseg-dmbtr,     "固定資產報廢損失       z_fi_expen     LIKE bseg-dmbtr,     "財務費用       z_invest_loss  LIKE bseg-dmbtr,     "投資損失       z_defer_tax    LIKE bseg-dmbtr,  

19、  "遞延稅款貸項       z_stock        LIKE bseg-dmbtr,     "存貨減少       z_ar           LIKE bseg-dmbtr,     "經營性應收減少       z_ap           LIKE bseg-dmbtr

20、,     "經營性應付增加       z_other        LIKE bseg-dmbtr,     "其他       z_production   LIKE bseg-dmbtr,     "經營活動產生的現金凈額       z_loss         LIKE bseg-dmbtr,   

21、0; "總公司下?lián)軓浹a虧損       z_asset_debit  LIKE bseg-dmbtr,     "以固定資產償還債務       z_invest_debit LIKE bseg-dmbtr,     "以投資償還債務       z_asset_invest LIKE bseg-dmbtr,     "以固定資產投資       z_stock_de

22、bit  LIKE bseg-dmbtr,     "以存貨償還債務       z_asset_rented LIKE bseg-dmbtr,     "融資租賃固定資產       z_donation     LIKE bseg-dmbtr,     "接受捐贈非現金資產       z_debit_short  LIKE bseg-dmbtr,    

23、; "償還的經營性債務       z_debit_equit  LIKE bseg-dmbtr,     "債務轉為資本       z_bond_due     LIKE bseg-dmbtr,     "一年內到期的可轉換公司債券       z_money_init   LIKE bseg-dmbtr,     "貨幣資金期初余額    

24、  z_money_end    LIKE bseg-dmbtr,     "貨幣資金期末余額       z_cashs_init   LIKE bseg-dmbtr,     "現金等價物期初余額       z_cashs_end    LIKE bseg-dmbtr,     "現金等價物期末余額       z_all_money   &

25、#160;LIKE bseg-dmbtr.     "貨幣資金及現金等價物凈變動 DATA: BEGIN OF itb0 OCCURS 0,          txt(70) TYPE c,          num     LIKE bseg-dmbtr,      END OF itb0,      mtxt(70) TYPE c. *INITIALIZATION. PERFORM

26、fill_item_direct. *START-OF-SELECTION. GET fkrs.  g_t_fkrs-fikrs = fkrs-fikrs.  g_t_fkrs-fitxt = fkrs-fitxt.  APPEND g_t_fkrs. GET fpos.  g_t_fpos-fipos = fpos-fipos.  g_t_fpos-pname = fpos-pname.  COLLECT g_t_fpos. GET fmmp.  MOVE-CORRESPONDING fmmp TO g_t_fmmp. &

27、#160;CASE fmmp-wrttp.    WHEN '50' OR '51'.               " purchase order      g_t_fmmp-zbelnr = fmmp-ebeln.      g_t_fmmp-zbuzei = fmmp-ebelp.    WHEN '64'.        

28、               " payment transfer      g_t_fmmp-zbelnr = fmmp-kblnr.      g_t_fmmp-zbuzei = fmmp-kblpos.    WHEN '65'.                       " funds com

29、mitments      g_t_fmmp-zbelnr = fmmp-kblnr.      g_t_fmmp-zbuzei = fmmp-kblpos.    WHEN OTHERS.                     " Fi documents      g_t_fmmp-zbelnr = fmmp-vo_belnr.      g

30、_t_fmmp-zbuzei = fmmp-vo_buzei.  ENDCASE.  APPEND g_t_fmmp.  IF NOT fmmp-kunnr IS INITIAL.    r_kunnr-sign   = 'I'.    r_kunnr-option = 'EQ'.    r_kunnr-low    = fmmp-kunnr.    COLLECT r_kunnr.  ENDIF.  I

31、F NOT fmmp-lifnr IS INITIAL.    r_lifnr-sign   = 'I'.    r_lifnr-option = 'EQ'.    r_lifnr-low = fmmp-lifnr.    COLLECT r_lifnr.  ENDIF. END-OF-SELECTION.  SORT g_t_fmmp BY fikrs  bukrs  fipos   wrttp  gjahr &

32、#160;                 perio  zhldt  zbelnr                   zbuzei bukrs  vo_saknr.  RANGES: lr_lifnr FOR lfa1-lifnr,          lr_kunnr FOR kna1-kunnr.  DATA: l_cnt

33、_from  LIKE sy-tabix VALUE 1,        l_cnt_to    LIKE sy-tabix VALUE 50,        l_cnt_lines LIKE sy-tabix. * "/ Lesen Kreditoren-Texte aus Stammdaten-Tabelle  IF NOT r_lifnr IS INITIAL.    LOOP AT r_lifnr WHERE low = '*&#

34、39;.      DELETE r_lifnr.    ENDLOOP.    DESCRIBE TABLE r_lifnr LINES l_cnt_lines.               "<- insert    IF l_cnt_lines <= 50.                      

35、             "<- insert *     "/ Lieferanten-Kurztexte auf einmal einlesen         "<- insert      SELECT lifnr sortl FROM lfa1              INTO CORRESPONDING FIELDS OF

36、 TABLE g_t_lfa1             WHERE lifnr IN r_lifnr.    ELSE.                                                   "<- insert * 

37、60;   "/ Lieferanten-Kurztexte in Bloecken einlesen        "<- insert      DO.                                                

38、 "<- insert *        "/ Bloecke zu je 50 Leferanten bilden             "<- insert        REFRESH lr_lifnr.                            

39、     "<- insert        LOOP AT r_lifnr FROM l_cnt_from TO l_cnt_to.      "<- insert          lr_lifnr = r_lifnr.                            &quo

40、t;<- insert          APPEND lr_lifnr.                               "<- insert        ENDLOOP.                     

41、0;                    "<- insert        IF sy-subrc NE 0.                                 "<- insert          

42、;EXIT.                                          "<- insert        ENDIF.                           

43、60;                "<- insert        l_cnt_from = l_cnt_to   + 1.                      "<- insert        l_cnt_to   = l_cnt_from + 50. 

44、0;                   "<- insert *        "/ Lieferanten-Kurztexte lesen                    "<- insert        SELECT lifnr sortl FROM lfa1  

45、                    "<- insert           APPENDING CORRESPONDING FIELDS                 "<- insert                    

46、OF TABLE g_t_lfa1                    "<- insert               WHERE lifnr IN lr_lifnr.                   "<- insert      ENDDO.   

47、0;                                           "<- insert    ENDIF.                                

48、                  "<- insert  ENDIF. * "/ Lesen Debitoren-Texte aus Stammdaten-Tabelle  IF NOT r_kunnr IS INITIAL.    LOOP AT r_kunnr WHERE low = '*'.      DELETE r_kunnr.    ENDLOOP.  

49、;  DESCRIBE TABLE r_kunnr LINES l_cnt_lines.               "<- insert    IF l_cnt_lines <= 50.                                   "<- insert * 

50、0;   "/ Kunden-Kurztexte auf einmal einlesen              "<- insert      SELECT kunnr sortl FROM kna1              INTO CORRESPONDING FIELDS OF TABLE g_t_kna1           &#

51、160; WHERE kunnr IN r_kunnr.    ELSE.                                                   "<- insert *     "/ Kunden-Kurztexte in Bloecken einle

52、sen             "<- insert      DO.                                                  "<- insert *     &#

53、160;  "/ Bloecke zu je 50 Kunden bilden                 "<- insert        REFRESH lr_kunnr.                                 "<- insert

54、        LOOP AT r_kunnr FROM l_cnt_from TO l_cnt_to.      "<- insert          lr_kunnr = r_kunnr.                            "<- insert     

55、0;    APPEND lr_kunnr.                               "<- insert        ENDLOOP.                               &#

56、160;          "<- insert        IF sy-subrc NE 0.                                 "<- insert          EXIT.        

57、;                                  "<- insert        ENDIF.                                     &

58、#160;      "<- insert        l_cnt_from = l_cnt_to   + 1.                      "<- insert        l_cnt_to   = l_cnt_from + 50.           &#

59、160;         "<- insert *        "/ Kunden-Kurztexte lesen                         "<- insert        SELECT kunnr sortl FROM kna1         &

60、#160;            "<- insert           APPENDING CORRESPONDING FIELDS                 "<- insert                     OF TABLE g_t_kna1  

61、;                  "<- insert               WHERE kunnr IN lr_kunnr.                   "<- insert      ENDDO.          

62、                                     "<- insert    ENDIF.                                       &

63、#160;          "<- insert  ENDIF.  SELECT bukrs butxt FROM t001         INTO CORRESPONDING FIELDS OF TABLE g_t_t001.  DATA: l_sav_wrttp_text(30),        l_sav_fwaer LIKE fmmp-fwaer,        l_s

64、av_butxt LIKE t001-butxt,        l_sav_hide_row_type(4).  num_of_bukrs = 0.  max_budat = 0.  min_budat = '99991231' .  LOOP AT g_t_fmmp.    IF min_budat > g_t_fmmp-budat .      min_budat = g_t_fmmp-budat .    ENDIF

65、.    IF max_budat < g_t_fmmp-budat .      max_budat = g_t_fmmp-budat .    ENDIF.    l_sav_fwaer = g_t_fmmp-fwaer.    AT NEW fikrs.      LOOP AT int_cashflow.        CLEAR int_cashflow-fi_fkbtr.    

66、    MODIFY TABLE int_cashflow.        CLEAR int_cashflow.      ENDLOOP.    ENDAT.    AT NEW bukrs.      PERFORM read_bukrs_text USING g_t_fmmp-bukrs                     &

67、#160;     CHANGING g_t_t001-butxt.      l_sav_butxt = g_t_t001-butxt.      LOOP AT int_cashflow.        CLEAR int_cashflow-com_fkbtr.        MODIFY TABLE int_cashflow.        CLEAR int_cashflow.  

68、;    ENDLOOP.    ENDAT.    LOOP AT int_cashflow.      PERFORM input_range USING int_cashflow-r_fipos.      LOOP AT r_fipos.        IF r_fipos-option = 'EQ'.          IF r_fipos-low = g_t_

69、fmmp-fipos.            int_cashflow-fi_fkbtr  = int_cashflow-fi_fkbtr                                      + g_t_fmmp-fkbtr.            int_

70、cashflow-com_fkbtr = int_cashflow-com_fkbtr                                      + g_t_fmmp-fkbtr.          ENDIF.        ENDIF.        IF r

71、_fipos-option = 'BT'.          IF g_t_fmmp-fipos >= r_fipos-low AND                    g_t_fmmp-fipos <= r_fipos-high.            int_cashflow-fi_fkbtr  = int_cashflow-fi_fkbtr

72、                                      + g_t_fmmp-fkbtr.            int_cashflow-com_fkbtr = int_cashflow-com_fkbtr                 

73、0;                    + g_t_fmmp-fkbtr.          ENDIF.        ENDIF.      ENDLOOP.      MODIFY TABLE int_cashflow.      CLEAR int_cashflow.      

74、;CLEAR r_fipos.      REFRESH r_fipos.    ENDLOOP .    AT END OF bukrs.      PERFORM cal_indirect USING g_t_fmmp-bukrs.      PERFORM output_info USING 'COM'.      num_of_bukrs = num_of_bukrs + 1.    ENDA

75、T.    AT END OF fikrs.      IF num_of_bukrs NE 1.        CLEAR l_sav_butxt.        PERFORM output_info USING 'FI'.      ENDIF.      WRITE : / text-103.    ENDAT.  ENDLOOP.TOP-OF-PAGE

76、.  IF NOT ( s_budat-low IS INITIAL ).    min_budat = s_budat-low.  ENDIF.  IF NOT ( s_budat-high IS INITIAL ).    max_budat = s_budat-high.  ENDIF.  SKIP 2.  WRITE: /100 '現  金  流  量  表'.  WRITE: /.  WRITE: /210 &

77、#39;會年企03表'. *  IF min_budat(6) = max_budat(6). *    WRITE: /104 min_budat(4), '年', min_budat+4(2), '月', *            202 '報表編號: 會商03表'. *  ELSE. *    WRITE: /097 '日期:', *         

78、0;  103 min_budat, 113 '-' , 115 max_budat, *            202 '報表編號: 會商03表'. *  ENDIF. *  WRITE: /012 '編制單位: ', l_sav_butxt,          100  max_budat(4), '年', max_budat+4(2), '月',  

79、            max_budat+6(2), '日',          212 '單位: 元'.  WRITE:  /011 sy-uline.  WRITE : /011 sy-vline,      040 '   項    目',           085 sy-vline, &#

80、160;    087 '行次',        093 sy-vline,           095 '      金   額  ',           116 sy-vline,      148 '補充資料',           190 sy-vli

81、ne,      192 '行次',        198 sy-vline,           '      金   額',   220 sy-vline.  WRITE: /011 sy-uline. * * AT LINE-SELECTION.  CHECK l_sav_hide_row_type = 'EPOS'.  CALL FUNCTI

82、ON 'FM_DOCUMENT_DISPLAY'       EXPORTING            i_wrttp = g_t_fmmp-wrttp            i_belnr = g_t_fmmp-zbelnr            i_blpos = g_t_fmmp-zbuzei           &

83、#160;i_bukrs = g_t_fmmp-vo_bukrs            i_gjahr = g_t_fmmp-vo_gjahr. * * AT USER-COMMAND.  CASE sy-ucomm.    WHEN 'SELE'.      SET PF-STATUS 'SELE'.      CALL FUNCTION 'FM_SELECTION_CRITERIA_PRINT'

84、           EXPORTING                i_report_name = 'RFFMIEP5'           EXCEPTIONS                OTHERS        = 1.  ENDCASE. *&- *

85、 *&      Form  READ_FIKRS_TEXT *&- * FORM read_fikrs_text USING u_fikrs                  CHANGING c_fitxt.  g_t_fkrs = space.  g_t_fkrs-fikrs = u_fikrs.  READ TABLE g_t_fkrs.  IF sy-subrc = 0.    c

86、_fitxt = g_t_fkrs-fitxt.  ENDIF. ENDFORM.                    " READ_FIKRS_TEXT *&- * *&      Form  READ_FIPOS_TEXT *&- * FORM read_fipos_text USING u_fipos               

87、60;  CHANGING c_pname.  g_t_fpos = space.  g_t_fpos-fipos = u_fipos.  READ TABLE g_t_fpos.  IF sy-subrc = 0.    c_pname = g_t_fpos-pname.  ENDIF. ENDFORM.                    " READ_FIPOS_TEXT *&- * *&a

88、mp;      Form  READ_BUKRS_TEXT *&- * FORM read_bukrs_text USING u_bukrs                  CHANGING c_butxt.  g_t_t001 = space.  g_t_t001-bukrs = u_bukrs.  READ TABLE g_t_t001.  IF sy-subrc = 0.    c_but

89、xt = g_t_t001-butxt.  ENDIF. ENDFORM.                    " READ_FIPOS_TEXT *&- * *&      Form  GET_KUNNR_LIFNR_TEXT *&- * FORM get_kunnr_lifnr_text USING value(u_kunnr)           

90、0;                    value(u_lifnr)                       CHANGING c_text.  CLEAR c_text.  IF NOT u_kunnr IS INITIAL.    IF u_kunnr = '*'.      c_text

91、= '*'.    ELSE. *        "/ Lesen Debitor-Text aus interner Tabelle      g_t_kna1 = space.      g_t_kna1-kunnr = u_kunnr.      READ TABLE g_t_kna1.      IF sy-subrc = 0.        

92、c_text = g_t_kna1-sortl.      ENDIF.    ENDIF.  ENDIF.  IF NOT u_lifnr IS INITIAL.    IF u_lifnr = '*'.      c_text = '*'.    ELSE. *        "/ Lesen Kreditor-Text aus interner Tabelle 

93、0;    g_t_lfa1 = space.      g_t_lfa1-lifnr = u_lifnr.      READ TABLE g_t_lfa1.      IF sy-subrc = 0.        c_text = g_t_lfa1-sortl.      ENDIF.    ENDIF.  ENDIF. ENDFORM.      

94、             " GET_KUNNR_LIFNR_TEXT * FORM input_range USING value(rfipos).  DATA: off TYPE i, offset TYPE i, doing TYPE i.  DATA: item(20), str(10).  off = 0. offset = 0.  doing = 1.  WHILE doing <> 0.    SHIFT rfipos

95、BY offset PLACES.    SEARCH rfipos FOR ','.    IF sy-subrc = 0.      offset = sy-fdpos.      MOVE rfipos(offset) TO item.      offset = offset + 1.    ELSE.      MOVE rfipos TO item.      doing = 0.    ENDIF.    SEARCH item FOR '-'.    IF sy-subrc = 0.      off = sy-fdpos.      MOVE item(off) TO str.      off = off + 1.      r_fipos-sign   = 'I'.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論