首先看FB01前台操作,前台成功了才能测试BAPI

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_java

​​


BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_软件测试_02

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_java_03

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_软件测试_04


一般而言FB01 对应的BAPI是用  BAPI_ACC_DOCUMENT_POST


另外还可以用 FI_DOCUMENT_GENERATE_AND_CLEAR

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_python_05

​​

注意

BAPI:FI_DOCUMENT_GENERATE_AND_CLEAR_SAP刘梦_新浪博客_python_06

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_SAP刘梦_新浪博客_python_07

​​