2
我正在開發一個DO ... WHILE內使用PSM的BAPIABAP:與更新 - 之間提交讀 - BAPI
- FM_FUNDS_CTR_CHANGE_NO_SCREEN
- FM_FICTR_READ_SINGLE
的ABAP報告。
在第一次迭代中,我使用BAPI(1)更新基金中心。在稍後的迭代中,我需要使用BAPI(2)再次閱讀基金中心。
問題是:在後面的迭代中,我仍然得到基金中心的舊數據。不考慮使用BAPI(1)更改的數據。一旦程序完成後,數據就會正確更新 - 在稍後的程序執行過程中會出現更新的數據。我試過兩個的BAPI之間犯的幾個選項:
- 使用BAPI參數i_flg_commit(也與 「SET UPDATE TASK LOCAL」 之前BAPI調用
- COMMIT WORK
- COMMIT工作和等待
- 功能模塊BAPI_TRANSACTION_COMMIT
- COMMIT的工作,然後等待長達10秒
不幸的是,所有這些共同的命令幫助。我嘗試了幾種他們的組合。有沒有人有想法,爲什麼會出現這個問題?
下面的代碼片段:
" Tried with and without this one
" SET UPDATE TASK LOCAL.
CALL FUNCTION 'FM_FUNDS_CTR_CHANGE_NO_SCREEN'
EXPORTING
I_FIKRS = gv_fikrs
I_FISTL = gv_fictr
IT_FUNDS_CTR = lt_fistl
IT_FUNDS_CTR_TEXT = lt_fistl_t
IT_FUNDS_CTR_HISV = lt_fistl_h
I_FLG_TEST = pa_test
I_FLG_COMMIT = 'X' "Tried with and without this one
IMPORTING
ET_MESSAGES = lt_return
EXCEPTIONS
[...]
.
" Several commit options tried
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
" COMMIT WORK.
" COMMIT WORK AND WAIT.
" WAIT UP TO 10 SECONDS.
CALL FUNCTION 'FM_FICTR_READ_SINGLE'
EXPORTING
I_FIKRS = gv_fikrs
I_FICTR = gv_fictr
I_FLAG_TEXT = 'X'
I_FLAG_HIER = 'X'
I_LANGUAGE = c_spras
I_DATE = sy-datum
IMPORTING
E_F_FMFCTR = ls_current_fistl
E_F_FMFCTRT = ls_current_fistl_t
E_F_FMHISV = ls_current_fistl_h
EXCEPTIONS
[...]
.
預先感謝您! Jonathan
謝謝!這有幫助! – Jonathan