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
*"----------------------------------------------------------------------


   DATA LS_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 .

   DATA L_BFLAG .
   DATA L_PSPNR  LIKE PRPS -PSPNR .
   DATA L_UP  LIKE PRHI - UP .

   DATA L_MSG  LIKE Z02FITSSLOG -ZZMSG .
   DATA LS_ZZMSGT  TYPE ZZMSGT .

   DATA :N ( 2 TYPE 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 .
         CLEAR L_STR1 ,L_STR2 .
         CONCATENATE  'LS_Z02FITSSBUDG-ZZBUDGET_M' N   INTO L_STR1 .
         ASSIGN  (L_STR1 TO <F_FIELD1> .
         CONCATENATE  'LT_PERVALUE-VAR_VAL_PER' INTO L_STR2 .
         ASSIGN  (L_STR2 TO <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_DESP FROM 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 .

你可能感兴趣的:(bapi读budget的代码)