Showing posts with label ABAP Qs. Show all posts
Showing posts with label ABAP Qs. Show all posts

BAPI for posting cost into CJR2 “Resource cost post”

BAPI for posting cost into CJR2 “Resource cost post”

























At top (data declaration)


L_R_HEADER     TYPE BAPIPLNHDR,
  L_R_COOBJECT   TYPE  BAPIACIOBJ,
  L_T_COOBJECT   TYPE STANDARD TABLE OF BAPIACIOBJ,

*Post the effort into CJR2 Tcode
  CALL FUNCTION 'BAPI_COSTACTPLN_POSTACTINPUT'
    EXPORTING
      HEADERINFO     = L_R_HEADER header table that contain
*      delta          = g_c_x  "Add in the exiting value
    TABLES
      INDEXSTRUCTURE = L_T_INDEXSTR
      COOBJECT       = L_T_COOBJECT
      PERVALUE       = L_T_PERVALUE
      RETURN         = P_G_T_RETURN.

Header details

  L_R_HEADER-CO_AREA        = '0010'.   "Controlling area
  L_R_HEADER-FISC_YEAR      = P_L_F_YEAR. "Fiscal year
  L_R_HEADER-PERIOD_FROM    = '1'.
  L_R_HEADER-PERIOD_TO      = '12'.
  L_R_HEADER-VERSION        = '0'.     " Version
  L_R_HEADER-PLAN_CURRTYPE  = 'O'.     "'O'-Object currency

  L_R_COOBJECT-OBJECT_INDEX = '1'.  "Object index
  L_R_COOBJECT-WBS_ELEMENT  = Project ID or WBSID.
  APPEND L_R_COOBJECT TO L_T_COOBJECT.
  CLEAR L_R_COOBJECT.

Now populate the quantity field

  "For H1 Acty type
  READ TABLE P_L_T_INPUT INTO G_R_INPUT INDEX 1.
  IF SY-SUBRC = 0.
    L_R_INDEXSTR-OBJECT_INDEX  = '1'.
    L_R_INDEXSTR-VALUE_INDEX   = '1'.
    APPEND  L_R_INDEXSTR TO L_T_INDEXSTR.
    CLEAR   L_R_INDEXSTR.
    L_F_VAL_INDEX = '1'."value index
    L_F_ACT       = 'H1'."Activity type
    PERFORM FILL_QTY  USING G_R_INPUT     " Work area of internal table
                            P_L_F_COST    " Cost center
                            L_F_ACT       " Activity type
                            L_F_VAL_INDEX " value index
                            P_G_F_UNIT    " Unit
                 CHANGING   L_T_PERVALUE. " Qty values
  ENDIF.

  "For H2 Acty type
  READ TABLE P_L_T_INPUT INTO G_R_INPUT INDEX 2.
  IF SY-SUBRC = 0.
    L_R_INDEXSTR-OBJECT_INDEX  = '1'.
    L_R_INDEXSTR-VALUE_INDEX   = '2'.
    APPEND  L_R_INDEXSTR TO L_T_INDEXSTR.
    CLEAR   L_R_INDEXSTR.
    L_F_VAL_INDEX = '2'.      "value index
    L_F_ACT       = 'H2'."Activity type
    PERFORM FILL_QTY USING G_R_INPUT     Work area of internal table
                            P_L_F_COST    " Cost center
                            L_F_ACT       Activity type
                            L_F_VAL_INDEX  value index
                            P_G_F_UNIT    " Unit
                 CHANGING   L_T_PERVALUE. " Qty values
  ENDIF.

Same for other activity types……………….

  IF P_G_T_RETURN [] IS INITIAL.
    COMMIT WORK AND WAIT.
  Endif.

FM for delete Project using BAPI BAPI_BUS2001_DELETE


CALL FUNCTION 'BAPI_PS_INITIALIZATION'.

  
CALL FUNCTION 'BAPI_BUS2001_DELETE'
    
EXPORTING
      I_PROJECT_DEFINITION 
G_F_PROJECT_DEF
    
TABLES
      ET_RETURN            
P_G_T_RETURN.

  
CLEAR G_F_ERROR.
  
LOOP AT P_G_T_RETURN INTO G_R_RETURN.
    
IF G_R_RETURN-TYPE CA G_C_AEX."Error Type A E or X .
      G_F_ERROR 
G_C_X.
    
ENDIF.
  
ENDLOOP.
* Error handling / end processing
  
IF G_F_ERROR IS INITIAL.

*-- Post changes
    
REFRESH :L_T_RETURN2.
    
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
      
TABLES
        ET_RETURN 
L_T_RETURN2.
*-- Check for errors
    
CLEAR G_R_RETURN.
    
LOOP AT L_T_RETURN2 INTO G_R_RETURN.  "
      
IF G_R_RETURN-TYPE CA G_C_AEX.
        G_F_ERROR 
G_C_X.
      
ENDIF.
    
ENDLOOP.
    
APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
*-- Everything ok
    
IF G_F_ERROR IS INITIAL.
      
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        
EXPORTING
          
WAIT G_C_X.
      
COMMIT WORK.







    
ELSE.
      
REFRESH:L_T_RETURN2.
      
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      
REFRESH L_T_RETURN2.
      
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
        
TABLES
          ET_RETURN 
L_T_RETURN2.
      
APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
      
REFRESH L_T_RETURN2.
      
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    
ENDIF.
* Error occured
  
ELSE.
    
REFRESH:L_T_RETURN2.
    
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
REFRESH L_T_RETURN2.
    
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
      
TABLES
        ET_RETURN 
L_T_RETURN2.
    
APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
    
REFRESH L_T_RETURN2.
    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  
ENDIF.





Delete multiple WBS for a project ID

* Initialization of BAPIs
  CALL FUNCTION 'BAPI_PS_INITIALIZATION'.

  CALL FUNCTION 'BAPI_BUS2054_DELETE_MULTI'
    EXPORTING
      I_PROJECT_DEFINITION  = G_F_PROJECT_DEF
    TABLES
      IT_DELETE_WBS_ELEMENT = P_G_T_DELETE_WBS  (All WBS which needs to be Deleted)
      ET_RETURN             = P_G_T_RETURN.

  CLEAR G_F_ERROR.
  LOOP AT P_G_T_RETURN INTO G_R_RETURN.
    IF G_R_RETURN-TYPE CA G_C_AEX."Error Type A E or X
      G_F_ERROR = G_C_X.
    ENDIF.
  ENDLOOP.

* Error handling / end processing
  IF G_F_ERROR IS INITIAL.

*-- Post changes
    REFRESH L_T_RETURN2.
    CALL FUNCTION 'BAPI_PS_PRECOMMIT'
      TABLES
        ET_RETURN = L_T_RETURN2.
*-- Check for errors
    LOOP AT L_T_RETURN2 INTO G_R_RETURN.  "
      IF G_R_RETURN-TYPE CA G_C_AEX.
        G_F_ERROR = G_C_X.
      ENDIF.
    ENDLOOP.
    APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
*-- Everything ok
    IF G_F_ERROR IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = G_C_X.
      COMMIT WORK.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      REFRESH L_T_RETURN2.
      CALL FUNCTION 'BAPI_PS_PRECOMMIT'
        TABLES
          ET_RETURN = L_T_RETURN2.
      APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
      REFRESH L_T_RETURN2.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ENDIF.
* Error occured
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    REFRESH L_T_RETURN2.
    CALL FUNCTION 'BAPI_PS_PRECOMMIT'
      TABLES
        ET_RETURN = L_T_RETURN2.
    APPEND LINES OF L_T_RETURN2 TO P_G_T_RETURN.
    REFRESH L_T_RETURN2.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  ENDIF.

FM to Read the cost plan for CJR2

L_T_PERVALUE   TYPE G_TY_BAPIACIVAL  ,

 CALL FUNCTION 'BAPI_COSTACTPLN_READACTINPUT'
        EXPORTING
          HEADERINFO     = L_R_HEADER
        TABLES
          INDEXSTRUCTURE = L_T_INDEXSTR
          COOBJECT       = L_T_COOBJECT
          PERVALUE       = L_T_PERVALUE
          RETURN         = P_G_T_RETURN.


Read the values based on the activity types

 READ TABLE L_T_PERVALUE INTO L_R_PERVALUE
                        WITH  KEY SEND_ACTIVITY = 'H1'.
      IF  SY-SUBRC = 0.
        PERFORM FILL_INPUT_TABLE USING L_R_PERVALUE
                                       P_COEP_MEINB
                                        G_R_INPUT.

        APPEND  G_R_INPUT TO  P_L_T_INPUT.
        CLEAR G_R_INPUT.
      ENDIF.
      CLEAR L_R_PERVALUE.