当前位置: 代码迷 >> 综合 >> BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客
  详细解决方案

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客

热度:96   发布时间:2024-01-18 13:03:54.0
首先看FB01前台操作,前台成功了才能测试BAPI

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR


BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR
一般而言FB01 对应的BAPI是用  BAPI_ACC_DOCUMENT_POST
另外还可以用 FI_DOCUMENT_GENERATE_AND_CLEAR

 

主要参数
BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR

注意
BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
*         CLIENT            = SY-MANDT
date              = gs_info-checkdate
foreign_amount    = l_price
foreign_currency  = ls_info-currency
local_currency    = l_local_currency
rate              = 0
type_of_rate      = 'M'
read_tcurr        = 'X'
IMPORTING
*         EXCHANGE_RATE     =
*         FOREIGN_FACTOR    =
local_amount      = l_local_amount
*         LOCAL_FACTOR      =
*         EXCHANGE_RATEX    =
*         FIXED_RATE        =
*         DERIVED_RATE_TYPE =
EXCEPTIONS
no_rate_found     = 1
overflow          = 2
no_factors_found  = 3
no_spread_found   = 4
derived_2_times   = 5
OTHERS            = 6.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

"输入币种信息,00为转换的币种
CLEAR lwa_acccr.
lwa_acccr-posnr   = l_posnr.
lwa_acccr-curtp   = '00'.
lwa_acccr-waers   = l_local_currency.
lwa_acccr-wrbtr   = l_local_amount.
  APPEND lwa_acccr TO lt_acccr.

CLEAR lwa_acccr.
lwa_acccr-posnr   = l_posnr.
lwa_acccr-curtp   = '10'.

lwa_acccr-waers   = l_local_currency.
lwa_acccr-wrbtr   = l_local_amount.

  APPEND lwa_acccr TO lt_acccr.


CALL FUNCTION 'FI_DOCUMENT_GENERATE_AND_CLEAR'
EXPORTING
i_clr_trans      = 'AUSGZAHL'
it_open_item_tab = lt_postab
i_simulation     = g_simulate
CHANGING
cs_acchd         = lwa_acchd
ct_accit         = lt_accit
ct_acccr         = lt_acccr.


最简单的demo代码

CLEAR cs_acchd.
CLEAR ls_accit.
CLEAR ls_accir.
CLEAR ct_accit[].
CLEAR ct_acccr[].

cs_acchd-usnam = sy-uname.
cs_acchd-tcode = 'FB01'.
cs_acchd-cpudt = sy-datum.
cs_acchd-cputm = sy-uzeit.
cs_acchd-bktxt =  ‘’


ls_accit-posnr = 1.
ls_accit-bukrs =  
ls_accit-gjahr =  
ls_accit-bldat =  
ls_accit-budat =  
ls_accit-monat =  
ls_accit-blart = 'SA'.
ls_accit-bschl = '40'.
ls_accit-sgtxt =  
ls_accit-hkont =  

APPEND  ls_accit TO ct_accit.

ls_accit-posnr = 2.
ls_accit-bschl = '50'.
ls_accit-hkont =  

APPEND  ls_accit TO ct_accit.



ls_accir-posnr = 1.
ls_accir-curtp = '00'.
ls_accir-waers = gs_t001-waers.
ls_accir-wrbtr =  
APPEND ls_accir TO ct_acccr.

ls_accir-posnr = 1.
ls_accir-curtp = 10.
ls_accir-waers = gs_t001-waers.
ls_accir-wrbtr =  
APPEND ls_accir TO ct_acccr.


ls_accir-posnr = 2.
ls_accir-curtp = '00'.
ls_accir-waers = gs_t001-waers.
ls_accir-wrbtr =  
APPEND ls_accir TO ct_acccr.

ls_accir-posnr = 2.
ls_accir-curtp = 20.
ls_accir-waers = gs_t001-waers.
ls_accir-wrbtr =  
APPEND ls_accir TO ct_acccr.


CALL FUNCTION 'FI_DOCUMENT_GENERATE_AND_CLEAR'
EXPORTING
i_clr_trans      = 'AUSGZAHL'
it_open_item_tab = it_open_item_tab
*       I_SIMULATION     = ' '
CHANGING
cs_acchd         = cs_acchd
ct_accit         = ct_accit
ct_acccr         = ct_acccr.


这个BAPI的好处是,参数比较多,具体参数可以自己查看。

但是这个bapi没有return参数,出错的时候麻烦,
而如果成功,会直接弹出一个对话框,需要用点一下才能继续,批导不能用,
对话框显示是代码写死的,判断条件是 simulation 非空,所以去不掉。

如果BAPI_ACC_DOCUMENT_POST参数不满足的时候,可以考虑这个BAPI


更多内容,欢迎关注 SAP干货铺
BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR