Monday, August 13, 2012

Program of profit centre upload



PROGRAM:-----

  *&---------------------------------------------------------------------*
*& Report  ZPROFIT_CENTER
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


REPORT  ZPC_TEST.
*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPESBEGIN OF T_PCU,        "Structure for profit center upload
      CO_AREA       
TYPE  KOKRS,
      PROFIT_CENTRE 
TYPE  PRCTR ,
      VALID_FROM    
TYPE  SYDATUM ,
      VALID_TO      
TYPE  SYDATUM ,
      NAME          
TYPE  KTEXT ,
      DESCRIPTION   
TYPE  LTEXT ,
      PERSON        
TYPE  VERAPC ,
      DEPARTMENT    
TYPE  ABTEIL ,
      
GROUP         TYPE  PHINR,
  
END OF T_PCU,

  
BEGIN OF T_LOG,            "Structure for log
    PRCTR   
TYPE PRCTR,
    
MESSAGE TYPE BAPI_MSG,
  
END OF T_LOG.

*----------------------------------------------------------------------*
* DATA
*----------------------------------------------------------------------*
DATA: WA_PCID       TYPE  BAPI0015ID2,
      WA_S1         
TYPE  BAPI0015_4,
      LV_FROM       
TYPE  BAPI0015_3-DATE,
      LV_TO         
TYPE  BAPI0015_3-DATE,
      WA_RETURN     
TYPE  BAPIRET2,
      WA_RETURN1    
TYPE  BAPIRET2,
      WA_BASIC_DATA 
TYPE  BAPI0015_4,
      WA_ID         
TYPE  BAPI0015ID2,
      LV_FROM_DATE  
TYPE  SYDATUM,
      LV_TO_DATE    
TYPE  SYDATUM,
      WA_ERROR      
TYPE  T_LOG,
      WA_SUCCESS    
TYPE  T_LOG,
      LI_ERROR      
TYPE  STANDARD TABLE OF T_LOG,
      LI_SUCCESS    
TYPE  STANDARD TABLE OF T_LOG,
      LV_ERROR      
TYPE  I,
      LV_SUCCESS    
TYPE  I,
      LV_TOTAL      
TYPE  I,
      IT            
TYPE STANDARD TABLE OF T_PCU,   "declaration of internal table
      WA            
TYPE T_PCU,                     " work area declaration
      LV_SUBRC      
LIKE SY-SUBRC,
      LT_IT_TAB     
TYPE FILETABLE.

*----------------------------------------------------------------------*
* SELECTION SCREEN
*----------------------------------------------------------------------*

SELECTION-
SCREEN BEGIN OF BLOCK BLOCK-1 WITH FRAME TITLE TEXT-001.

PARAMETERS : F_LOC LIKE RLGRAP-FILENAME DEFAULT 'D:\RT.XLS'.

SELECTION-
SCREEN END OF BLOCK BLOCK-1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_LOC.
  
CALL FUNCTION 'F4_FILENAME'
    
EXPORTING
      PROGRAM_NAME  = SYST-CPROG
      DYNPRO_NUMBER = SYST-DYNNR
      FIELD_NAME    = 
'F_LOC'
    
IMPORTING
      FILE_NAME     = F_LOC.

*----------------------------------------------------------------------*
* GUI UPLOAD
*----------------------------------------------------------------------*
START-
OF-SELECTION.
  
CALL FUNCTION 'GUI_UPLOAD'
    
EXPORTING
      FILENAME                      = 
'D:/RT.XLS'
      FILETYPE                      = 
'ASC'
     HAS_FIELD_SEPARATOR            = 
'X'
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                   = 'X'
     DAT_MODE                      = 
' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
    
TABLES
      DATA_TAB                      = IT
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
            .
  
IF SY-SUBRC <> 0.
    
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  
ENDIF.

  
DELETE IT INDEX 1.

  
LOOP AT IT INTO WA.

    
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      
EXPORTING
        
INPUT  = WA-CO_AREA
      
IMPORTING
        
OUTPUT = WA-CO_AREA.

    WA_ID-CO_AREA = WA-CO_AREA.

    
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      
EXPORTING
        
INPUT  = WA-PROFIT_CENTRE
      
IMPORTING
        
OUTPUT = WA-PROFIT_CENTRE.

    WA_ID-PROFIT_CTR = WA-PROFIT_CENTRE.

    WA_BASIC_DATA-PRCTR_NAME = WA-NAME.
    WA_BASIC_DATA-LONG_TEXT = WA-DESCRIPTION.
    WA_BASIC_DATA-IN_CHARGE = WA-PERSON.
    WA_BASIC_DATA-DEPARTMENT = WA-DEPARTMENT.
    WA_BASIC_DATA-PRCTR_HIER_GRP = WA-
GROUP.
*----------------------------------------------------------------------*
* BAPI PROFIT CENTER CREARTE FUNCTION MODULE
*----------------------------------------------------------------------*
    
CALL FUNCTION 'BAPI_PROFITCENTER_CREATE'
      
EXPORTING
        PROFITCENTERID        = WA_ID
        VALIDFROM             = WA-VALID_FROM
        VALIDTO               = WA-VALID_TO
        BASICDATA             = WA_BASIC_DATA
*   ADDRESS               =
*   COMMUNICATION         =
*   INDICATORS            =
*   TESTRUN               =
*   LANGUAGE              =
     
IMPORTING
       
RETURN                = WA_RETURN
*   PROFITCENTER          =
*   CONTROLLINGAREA       =
* TABLES
*   COMPANYCODES          =
           .

    
IF WA_RETURN-TYPE NE 'E'.
      
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'    "
        
EXPORTING
          
WAIT   = 'X'
        
IMPORTING
          
RETURN = WA_RETURN1.

      WA_SUCCESS-PRCTR   = WA-PROFIT_CENTRE.
      WA_SUCCESS-
MESSAGE = WA_RETURN-MESSAGE.
      
APPEND WA_SUCCESS TO LI_SUCCESS.
      
CLEAR  WA_SUCCESS.
      
ADD 1 TO LV_SUCCESS.

    
ELSE.
      WA_ERROR-PRCTR   = WA-PROFIT_CENTRE.
      WA_ERROR-
MESSAGE = WA_RETURN-MESSAGE.
      
APPEND WA_ERROR TO LI_ERROR.
      
CLEAR  WA_ERROR.
      
ADD 1 TO LV_ERROR.
    
ENDIF.
  
ENDLOOP.
  LV_TOTAL = LV_ERROR + LV_SUCCESS.
  
WRITE:/10(45)'Total no of profit centers processed:', LV_TOTAL,
        /10(
45)'Total no of successfully created profit centers:', LV_SUCCESS,
        /10(
45)'Total no of failed profit centers:', LV_ERROR.
  
IF LV_SUCCESS IS NOT INITIAL.

    
SKIP 2.

    
WRITE:/10'Susseccfully created profit centers'.
    
WRITE:/10 SY-ULINE(102).
    
WRITE:/10 SY-VLINE,
          (
25'Profit Center No'COLOR COL_HEADING, SY-VLINE,
          (
70' Message'COLOR COL_HEADING, SY-VLINE.
    
WRITE:/10 SY-ULINE(102).
    
LOOP AT LI_SUCCESS INTO WA_SUCCESS.
      
WRITE:/10 SY-VLINE,
            (
25)WA_SUCCESS-PRCTR ,SY-VLINE,
            (
70)WA_SUCCESS-MESSAGE, SY-VLINE.
      
WRITE:/10 SY-ULINE(102).
    
ENDLOOP.
  
ENDIF.

  
IF LV_ERROR IS NOT INITIAL.
    
SKIP 2.
    
WRITE:/10'Unsuccessful profit centers'.
    
WRITE:/10 SY-ULINE(102).
    
WRITE:/10 SY-VLINE,
          (
25'Profit Center No'COLOR COL_HEADING, SY-VLINE,
          (
70' Message'COLOR COL_HEADING, SY-VLINE.
    
WRITE:/10 SY-ULINE(102).
    
LOOP AT LI_ERROR INTO WA_ERROR.
      
WRITE:/10 SY-VLINE,
            (
25)WA_ERROR-PRCTR ,SY-VLINE,
            (
70)WA_ERROR-MESSAGE, SY-VLINE.
      
WRITE:/10 SY-ULINE(102).
    
ENDLOOP.
  
ENDIF.

END-OF-SELECTION.

No comments:

Post a Comment