2017-04-27 6 views
2

을 나는 DO ... WHILE 내 ABAP은 : Update- 사이에 커밋 및 읽기 BAPI

  • FM_FICTR_READ_SINGLE
  • FM_FUNDS_CTR_CHANGE_NO_SCREEN
    1. PSM을 BAPI를

      를 사용하여 ABAP 보고서를 개발하고있다.

      첫 번째 반복에서는 BAPI (1)를 사용하여 자금 센터를 업데이트합니다. 나중에 반복 할 때 BAPI (2)를 사용하여 자금 센터를 다시 읽어야합니다.

      문제는 다음과 같습니다. 나중에 자금 센터의 이전 데이터를 얻습니다. BAPI (1)를 사용하여 변경된 데이터는 고려되지 않습니다. 프로그램이 완료되면 데이터가 올바르게 업데이트됩니다. 나중에 프로그램을 실행하면 업데이트 된 데이터가 나타납니다. 나는 두 BAPI를 사이에 짓는 몇 가지 옵션 시도 : WORK에게

    2. 을 COMMIT WORK 내용을 커밋하고 기다립니다 BAPI 전화
    3. 전에 또한 "UPDATE TASK LOCAL 설정"을 BAPI 매개 변수 i_flg_commit를 (사용

      • 기능 모듈 BAPI_TRANSACTION_COMMIT
      • 작업을 COMMIT, 다음 10 초 불행하게도

    4. , 이러한 공동 중에 기다려 도움이되었습니다. 나는 그 (것)들의 몇몇 조합을 또한 시도했다. 누구에게이 아이디어가 나타나는 이유가 있습니까?

      " 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 
          [...] 
      . 
      

      사전에 감사 : 여기에 코드

      ! 조나단

    답변

    3

    내가보기에 FM_FICTR_READ_SINGLE은 양식 내의 정적 데이터로 읽음 데이터를 저장합니다. 프로그램을 실행할 때 변경되지 않으면 읽을 수있는 깨끗한 방법을 사용할 수 없습니다.

    함수 그룹을 보면 나는 FM_FICTR_READ_MULTIPLE FM을 보았습니다. 거기에 캐싱이 표시되지 않습니다. 매개 변수에 하나의 객체 만 전달하면됩니다.

    내가 확인한 바에 따르면 EA-PS는 617/05 버전입니다.

    +0

    감사합니다. 그게 도움이! – Jonathan