bapi讀budget的代碼

FUNCTION Z02FI_SUN_INF_BUDGET.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_ZZBUDGET) LIKE  BSEG-ZZBUDGET
*"     REFERENCE(I_ZZBUKRS) LIKE  Z02FITSSDOC_H-ZZBUKRS
*"     REFERENCE(I_ZZGJAHR) LIKE  Z02FITSSDOC_H-ZZGJAHR
*"     REFERENCE(I_ZZBELNR) LIKE  Z02FITSSDOC_H-ZZBELNR
*"     REFERENCE(I_ZZBUZEI) TYPE  BUZEI OPTIONAL
*"     VALUE(I_FUNDCTR) TYPE  CHAR100 DEFAULT 'petrochinahalfaya'
*"  TABLES
*"      ZZMSGT STRUCTURE  ZZMSGT OPTIONAL
*"----------------------------------------------------------------------


  DATALS_HEADERINFO TYPE BAPIPLNHDR,
         LT_INDEXSTRUCTURE TYPE TABLE OF BAPIACPSTRU WITH HEADER LINE,
         LT_COOBJECT TYPE TABLE OF BAPIPCPOBJ WITH HEADER LINE,
         LT_PERVALUE TYPE TABLE OF BAPIPCPVAL WITH HEADER LINE,
         LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

  DATA:LS_Z02FITSSBUDG TYPE Z02FITSSBUDG.

  DATAL_BFLAG.
  DATAL_PSPNR LIKE PRPS-PSPNR.
  DATAL_UP LIKE PRHI-UP.

  DATAL_MSG LIKE Z02FITSSLOG-ZZMSG.
  DATALS_ZZMSGT TYPE ZZMSGT.

  DATA:N(2TYPE VALUE 12.

  FIELD-SYMBOLS<F_FIELD1>,
                 <F_FIELD2>.
  DATA:L_STR1 TYPE STRING,
       L_STR2 TYPE STRING.

  CLEAR:LS_HEADERINFO,LT_INDEXSTRUCTURE,LT_INDEXSTRUCTURE[],LT_COOBJECT,LT_COOBJECT[],LT_PERVALUE ,LT_PERVALUE[],LT_RETURN,LT_RETURN[],
  L_BFLAG,L_STR1,L_STR2,LS_Z02FITSSBUDG,L_UP,L_PSPNR.

  LS_HEADERINFO-CO_AREA '1000'.
  LS_HEADERINFO-FISC_YEAR I_ZZBUDGET+0(4).
  LS_HEADERINFO-PERIOD_FROM '001'.
  LS_HEADERINFO-PERIOD_TO '012'.
  LS_HEADERINFO-VERSION '0'.
  LS_HEADERINFO-PLAN_CURRTYPE 'C'.

  LT_INDEXSTRUCTURE-OBJECT_INDEX '000001'.
  LT_INDEXSTRUCTURE-VALUE_INDEX '000001'.
  APPEND LT_INDEXSTRUCTURE.

  LT_COOBJECT-OBJECT_INDEX '000001'.
  LT_COOBJECT-WBS_ELEMENT I_ZZBUDGET.
  APPEND LT_COOBJECT.

  LT_PERVALUE-VALUE_INDEX '000001'.
  LT_PERVALUE-COST_ELEM '9999999999'.
  APPEND LT_PERVALUE.

  CALL FUNCTION 'BAPI_COSTACTPLN_READPRIMCOST'
    EXPORTING
      HEADERINFO     LS_HEADERINFO
    TABLES
      INDEXSTRUCTURE LT_INDEXSTRUCTURE
      COOBJECT       LT_COOBJECT
      PERVALUE       LT_PERVALUE
      RETURN         LT_RETURN.

  READ TABLE LT_RETURN WITH KEY TYPE 'E'.
  IF SY-SUBRC EQ 0."讀取Budget information有錯誤
    L_BFLAG 'X'.
    LOOP AT LT_RETURN.
      CLEAR L_MSG.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          MSGID               LT_RETURN-ID
          MSGNR               LT_RETURN-NUMBER
          MSGV1               LT_RETURN-MESSAGE_V1
          MSGV2               LT_RETURN-MESSAGE_V2
          MSGV3               LT_RETURN-MESSAGE_V3
          MSGV4               LT_RETURN-MESSAGE_V4
        IMPORTING
          MESSAGE_TEXT_OUTPUT L_MSG.
      CONCATENATE 'Read the information of document' I_ZZBELNR 'item' I_ZZBUZEI 'occured error' INTO L_MSG SEPARATED BY SPACE.
      CALL FUNCTION 'Z02FI_SUN_INF_SSLOG'
        EXPORTING
          I_ZZBUKRS I_ZZBUKRS
          I_ZZGJAHR I_ZZGJAHR
          I_ZZBELNR I_ZZBELNR
          I_ZZBUZEI I_ZZBUZEI
          I_ZZMSG   L_MSG
        TABLES
          ZZMSGT    ZZMSGT.
    ENDLOOP.
  ELSE."讀取Budget information沒 有錯誤

    READ TABLE LT_PERVALUE INDEX 1.
    IF SY-SUBRC EQ 0.
      DO 12 TIMES.
        N SY-INDEX.
        CLEARL_STR1,L_STR2.
        CONCATENATE 'LS_Z02FITSSBUDG-ZZBUDGET_M' N  INTO L_STR1.
        ASSIGN (L_STR1TO <F_FIELD1>.
        CONCATENATE 'LT_PERVALUE-VAR_VAL_PER' INTO L_STR2.
        ASSIGN (L_STR2TO <F_FIELD2>.
        <F_FIELD1> <F_FIELD2>.
      ENDDO.
      LS_Z02FITSSBUDG-ZZBUDGET I_ZZBUDGET.
      LS_Z02FITSSBUDG-ZZFUNDCTR I_FUNDCTR.
      LS_Z02FITSSBUDG-ZZYEAR I_ZZBUDGET+0(4).
      LS_Z02FITSSBUDG-ZZBUDGST 'Y'.

      SELECT SINGLE PSPNR POST1 INTO (L_PSPNR,LS_Z02FITSSBUDG-ZZBUDGET_DESPFROM PRPS WHERE POSID I_ZZBUDGET.
      SELECT SINGLE UP INTO L_UP FROM PRHI WHERE POSNR L_PSPNR.
      IF L_UP IS NOT INITIAL.
        LS_Z02FITSSBUDG-ZZBUDGET_PARENT L_UP.
      ENDIF.

      LS_Z02FITSSBUDG-ZZBUDGET_CURR 'USD'.
      LS_Z02FITSSBUDG-ZZBUDGET_MAX 0.

      MODIFY Z02FITSSBUDG FROM LS_Z02FITSSBUDG."更新數據庫
      IF SY-SUBRC EQ 0.
        LS_ZZMSGT-ZZMSGTYPE 'S'.
        CONCATENATE 'The Budget' I_ZZBUDGET ' was synchronized successfully' INTO LS_ZZMSGT-ZZMSG SEPARATED BY SPACE.
        APPEND LS_ZZMSGT TO ZZMSGT.
        COMMIT WORK AND WAIT.
      ELSE.
        ROLLBACK WORK.
      ENDIF.


    ENDIF.

  ENDIF.


ENDFUNCTION.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章