Abap 尽管提交,数据似乎在更新和读取之间未更新

Abap 尽管提交,数据似乎在更新和读取之间未更新,abap,sap-erp,Abap,Sap Erp,我正在使用PSM BAPI编制ABAP报告 FM\u资金\u中心\u变更\u否\u屏幕 调频FICTR读单频 在一段时间内。。。一会儿 在第一次迭代中,我使用BAPI(1)更新资金中心。在以后的迭代中,我需要使用BAPI(2)再次读取资金中心 问题是:在以后的迭代中,我仍然得到资金中心的旧数据。不考虑使用BAPI(1)更改的数据。一旦程序完成,数据将正确更新-在以后的程序执行中,更新的数据将出现。我尝试了在两个BAPI之间提交的几种选项: 使用BAPI参数i_flg_commit(在BAPI调

我正在使用PSM BAPI编制ABAP报告

  • FM\u资金\u中心\u变更\u否\u屏幕
  • 调频FICTR读单频
  • 在一段时间内。。。一会儿

    在第一次迭代中,我使用BAPI(1)更新资金中心。在以后的迭代中,我需要使用BAPI(2)再次读取资金中心

    问题是:在以后的迭代中,我仍然得到资金中心的旧数据。不考虑使用BAPI(1)更改的数据。一旦程序完成,数据将正确更新-在以后的程序执行中,更新的数据将出现。我尝试了在两个BAPI之间提交的几种选项:

    • 使用BAPI参数i_flg_commit(在BAPI调用之前还使用“SET UPDATE TASK LOCAL”)
    • 投入工作
    • 埋头苦干
    • 功能模块BAPI\u事务提交
    • 提交工作,然后最多等待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

    如我所见,FM\u FICTR\u READ\u SINGLE将读取的数据以静态方式存储在表单中。我看不到可用的刷新、清除方法,这意味着一旦读取,它在程序运行中不会被更改

    查看函数组,我看到那里有
    FM\u FICTR\u READ\u MULTIPLE
    FM。在那里我没有看到缓存,您可以尝试,在参数中只传递一个对象


    在我检查的地方,EA-PS是617/05版本。

    请注意,这些功能模块显然不是BAPI,因为它们的名称没有前缀“BAPI”。