清帳函數的使用


最近需要做一個清帳程序,SAP沒有清帳的BAPI,但是提供了清帳的一組函數:

POSTING_INTERFACE_START;

POSTING_INTERFACE_CLEARING;

POSTING_INTERFACE_END ;

這邊着重說明一下函數POSTING_INTERFACE_CLEARING的傳值

栗子:

發票校驗產生的應收憑證需要轉成預收,然后清掉應付。

A憑證   借:費用      

     貸:應付暫估

B憑證   借:應付暫估

     借:應繳增值稅   

     貸:應付  

C憑證   借: 預收    

             貸:費用   

A和B 可以清掉應付暫估

C憑證的產生可以直接同時把應付清掉

這邊主要說明C憑證的產生。

 

FB05是清帳事物代碼:

T_FTPOST的值是產生清帳 並生成預收憑證C的  抬頭字段和項目字段值:

輸入的值如同

FB05的

T_FTCLEAR的值是需要清的憑證,展開如下,是要清掉會計憑證9511007857,如果需要清多個憑證需要填多個

相當於FB05的

 

 

 

 點擊FB05模擬

 

SE37里面執行 POSTING_INTERFACE_CLEARING 可以debug看到FB05的界面

注意:給T_FTPOST傳值的時候金額需要去前面的空格,千萬不要對每一個字段都去空格,不然會帶不到FB05的行項目上,這幾天由於對每個字段都去空格,測了老半天的錯誤才查出來,折騰死。

 

 如果生成的清帳憑證是一個沒有行項目的憑證:

參數:T_FTCLEAR: 傳入的是所要清帳的內容比如清供應商的應付行項目

 

 參數:T_FTPOST 是要生成的SH清帳憑證的抬頭

 

 參數:I_AUGLV :  UMBUCHNG

           I_TCODE:  FB05

           I_SGFUNCT:C    這邊不知道除了傳C還可以傳什么

 這邊貼一段代碼:清帳產生沒有行項目的憑證:

  1 FORM frm_create_sh  USING    p_haeder  TYPE zfis011
  2                              pt_list   TYPE zfit009
  3                     CHANGING pt_return TYPE zfit010.
  4 
  5   DATA: lt_list   TYPE  zfit009,
  6         ls_list   TYPE  zfis009,
  7         wa_list   TYPE  zfis009,
  8         lt_return TYPE  zfit010,
  9         ls_return TYPE  zfis010,
 10         lv_itemno TYPE posnr_acc.
 11 
 12   DATA  lv_message TYPE bapiret2-message.
 13   DATA: lv_msgid  LIKE sy-msgid,
 14         lv_msgno  LIKE sy-msgno,
 15         lv_msgty  LIKE sy-msgty,
 16         lv_msgv1  LIKE sy-msgv1,
 17         lv_msgv2  LIKE sy-msgv2,
 18         lv_msgv3  LIKE sy-msgv3,
 19         lv_msgv4  LIKE sy-msgv4,
 20         lv_subrc  LIKE sy-subrc.
 21 
 22 DATA: lt_blntab  LIKE TABLE OF blntab  WITH HEADER LINE,
 23       lt_ftclear LIKE TABLE OF ftclear WITH HEADER LINE,
 24       lt_ftpost  LIKE TABLE OF ftpost  WITH HEADER LINE,
 25       lt_fttax   LIKE TABLE OF fttax   WITH HEADER LINE.
 26 
 27 
 28   lt_list   = pt_list.
 29   lt_return = pt_return.
 30   SORT lt_return BY group blart.
 31   DELETE lt_list WHERE flag = ' '.
 32   REFRESH:lt_ftclear,lt_ftpost.
 33   LOOP AT lt_list INTO ls_list.
 34 
 35 *--需要清帳的憑證和供應商
 36     READ TABLE lt_return INTO ls_return WITH KEY group = ls_list-group
 37                                                  blart = 'KR' BINARY SEARCH.
 38     IF sy-subrc = 0.
 39       CLEAR lt_ftclear.
 40       lt_ftclear-agkoa = 'K'.
 41       lt_ftclear-agkon = ls_list-kunnr.
 42       lt_ftclear-agbuk = p_haeder-bukrs.
 43       lt_ftclear-xnops = 'X'.
 44       lt_ftclear-selfd = 'BELNR'.
 45       lt_ftclear-selvon = ls_return-belnr.
 46       APPEND lt_ftclear.
 47     ENDIF.
 48 
 49     READ TABLE lt_return INTO ls_return WITH KEY group = ls_list-group
 50                                                  blart = 'DY' BINARY SEARCH.
 51     IF sy-subrc = 0.
 52       CLEAR lt_ftclear.
 53       lt_ftclear-agkoa = 'K'.
 54       lt_ftclear-agkon = ls_list-kunnr.
 55       lt_ftclear-agbuk = p_haeder-bukrs.
 56       lt_ftclear-xnops = 'X'.
 57       lt_ftclear-selfd = 'BELNR'.
 58       lt_ftclear-selvon = ls_return-belnr.
 59       APPEND lt_ftclear.
 60     ENDIF.
 61 
 62 *--清帳憑證抬頭
 63     CLEAR lt_ftpost.
 64     lt_ftpost-stype = 'K'.
 65     lt_ftpost-fnam  = 'BKPF-BLDAT'.
 66     lt_ftpost-fval  = sy-datum.
 67     APPEND  lt_ftpost.
 68 
 69     CLEAR lt_ftpost.
 70     lt_ftpost-stype = 'K'.
 71     lt_ftpost-fnam  = 'BKPF-BLART'.
 72     lt_ftpost-fval  = 'SH'.
 73     APPEND  lt_ftpost.
 74 
 75     CLEAR lt_ftpost.
 76     lt_ftpost-stype = 'K'.
 77     lt_ftpost-fnam  = 'BKPF-BUKRS'.
 78     lt_ftpost-fval  = p_haeder-bukrs.
 79     APPEND  lt_ftpost.
 80 
 81     CLEAR lt_ftpost.
 82     lt_ftpost-stype = 'K'.
 83     lt_ftpost-fnam  = 'BKPF-BUDAT'.
 84     lt_ftpost-fval  = sy-datum.
 85     APPEND  lt_ftpost.
 86 
 87     CLEAR lt_ftpost.
 88     lt_ftpost-stype = 'K'.
 89     lt_ftpost-fnam  = 'BKPF-WAERS'.
 90     lt_ftpost-fval  = 'RMB'.
 91     APPEND  lt_ftpost.
 92   ENDLOOP.
 93 
 94 *--開始清帳
 95     CALL FUNCTION 'POSTING_INTERFACE_START'
 96       EXPORTING
 97        i_client                 = sy-mandt
 98        i_function               = 'C'
 99        i_mode                   = 'N'           "不顯示調用屏幕
100        i_update                 = 'S'           "同步
101        i_user                   = sy-uname.
102 
103 
104      CLEAR:lv_msgid,lv_msgno,lv_msgty,lv_msgv1,
105             lv_msgv2,lv_msgv3,lv_msgv4,lv_subrc,lv_message.
106      CALL FUNCTION 'POSTING_INTERFACE_CLEARING'
107        EXPORTING
108          i_auglv                          = 'UMBUCHNG'
109          i_tcode                          = 'FB05'
110          i_sgfunct                        = 'C'
111       IMPORTING
112          e_msgid                          = lv_msgid
113          e_msgno                          = lv_msgno
114          e_msgty                          = lv_msgty
115          e_msgv1                          = lv_msgv1
116          e_msgv2                          = lv_msgv2
117          e_msgv3                          = lv_msgv3
118          e_msgv4                          = lv_msgv4
119          e_subrc                          = lv_subrc
120        TABLES
121          t_blntab                         = lt_blntab
122          t_ftclear                        = lt_ftclear
123          t_ftpost                         = lt_ftpost
124          t_fttax                          = lt_fttax.
125       CLEAR lv_message.
126       MESSAGE ID  lv_msgid
127            TYPE   lv_msgty
128            NUMBER lv_msgno
129            WITH   lv_msgv1 lv_msgv2 lv_msgv3 lv_msgv4
130            INTO   lv_message.
131       CLEAR ls_return.
132 
133 *---記錄清帳產生的憑證號
134       READ TABLE lt_blntab INDEX 1.
135       ls_return-blart   = 'SH'.
136       ls_return-bukrs   = lt_blntab-bukrs.
137       ls_return-belnr   = lt_blntab-belnr.
138       ls_return-gjahr   = lt_blntab-gjahr.
139       IF lv_subrc = 0.
140         ls_return-flag    = 'S'.
141       ELSE.
142         ls_return-flag    = 'E'.
143       ENDIF.
144       ls_return-message = lv_message.
145       APPEND ls_return TO pt_return.
146       CALL FUNCTION 'POSTING_INTERFACE_END'
147          EXCEPTIONS
148            session_not_processable = 1
149            OTHERS                  = 2.
150 
151 
152 ENDFORM.                    " FRM_CREATE_SH

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM