Data transfer from sap r/3 into excel sheet for mi01

hi gurus,
   as i  am a xi consultant i got requirement to write a program for data transfer from sap r/3 into excel sheet for MI01.can any body help me by giving sample code or example for this requirement.please help me.

Hi Rohit,
This is an upload program and it has used both function modules to upload from an excel to R3 and to download from R3 onto excel.
GUI_UPLOAD
GUI_DOWNLOAD
are the function modules used.
Hope this helps,
*Output:        Downloads error records onto presentation server,
*               Displays report with number of success and error records
REPORT ZMCG047CONTR NO STANDARD PAGE HEADING
                               LINE-SIZE 255
                               MESSAGE-ID ZM.
*&       Table declarations
TABLES : T001W,     "Plants/Branches
         T024E,     "Purchasing Organizations
         T001.      "Company Codes
*              TYPE-POOLS  DECLARATION
TYPE-POOLS : SLIS.
*                       Types  Declaration                            *
TYPES: BEGIN OF T_RECORD,    "record storing contract info
        LIFNR(010),      "Vendor Number
        EVART(004),      "Agreement Type
        EKORG(004),      "Purchasing Organization
        EKGRP(003),      "Purchasing Group
        WERKS(004),      "Plant
        LGORT(004),      "Storage Location
        KDATB(010),      "Valid start Date
        KDATE(010),      "Valid End Date
        ZTERM(004),      "Payment Terms
        KTWRT(020),      "Target Value
        EPSTP(001),      "Item Category
        EMATN(018),      "Material Number
        KTMNG(017),      "Target Quantity
        NETPR(014),      "Net Price
        PEINH(006),      "Net Price Unit
        BPRME(003),      "Net Price Order Price Unit
        IDNLF(035),      "Vendor Material number
        WEBRE(001),      "GR Based-IV
        MEPRF(001),      "Pricing Date Category
        LTEX1(040),      "Info Text
        DATAB(010),      "Valid From
        DATBI(010),      "Valid To
        KSCHL(004),      "Condition Type
        KBETR(016),      "Condition Rate if scale is not given
        KONWA(005),      "Currency
        KPEIN(005),      "Condition Pricing Unit
        KMEIN(003),      "Condition Unit of Measure
        KSTBM(019),      "Scale
        KBETR_01(016),   "Scale Rate
        DEL_FLAG,        "Delete Flag Indicator
        ERR_MSG(100),    "Error Message
      END OF T_RECORD,
      BEGIN OF T_ERR_RECORD,   "to have error records stored
         LIFNR(010),      "Vendor Number
         EVART(004),      "Agreement Type
         EKORG(004),      "Purchasing Organization
         EKGRP(003),      "Purchasing Group
         WERKS(004),      "Plant
         LGORT(004),      "Storage Location
         KDATB(010),      "Valid start Date
         KDATE(010),      "Valid End Date
         ZTERM(004),      "Payment Terms
         KTWRT(020),      "Target Value
         EPSTP(001),      "Item Category
         EMATN(018),      "Material Number
         KTMNG(017),      "Target Quantity
         NETPR(014),      "Net Price
         PEINH(006),      "Net Price Unit
         BPRME(003),      "Net Price Order Price Unit
         IDNLF(035),      "Vendor Material number
         WEBRE(001),      "GR Based-IV
         MEPRF(001),      "Pricing Date Category
         LTEX1(040),      "Info Text
         DATAB(010),      "Valid From
         DATBI(010),      "Valid To
         KSCHL(004),      "Condition Type
         KBETR(016),      "Condition Rate if scale is not given
         KONWA(005),      "Currency
         KPEIN(005),      "Condition Pricing Unit
         KMEIN(003),      "Condition Unit of Measure
         KSTBM(019),      "Scale
         KBETR_01(016),   "Scale Rate
         DEL_FLAG,        "Delete Flag Indicator
         ERR_MSG(100),    "Error Message
      END OF T_ERR_RECORD,
      BEGIN OF T_LOEKZ,    "To have deletion indicators for materials
          LOEKZ(001),    "Deletion indicator in purchasing document
          EMATN(018),    "Material Number
          WERKS(004),    "Plant
          LGORT(004),    "Storage Location
          BSTYP(001),    "Purchasing document category
      END OF T_LOEKZ,
      BEGIN OF T_MATNR,  " Type definition to store details of materials
           MATNR(018),    "Material Number
      END OF T_MATNR,
      BEGIN OF T_T001,   " Type definition for company codes
          BUKRS(004),    " Company Code
      END OF T_T001,
      BEGIN OF T_ZMVXREF,   "Cross-Reference table type
          D_ALTKN(10),      "Legacy Vendor Number
          D_BUKRS(4),       "Legacy Company Code
          M_ALTKN(10),      "SAP Company Code
      END OF T_ZMVXREF,
      BEGIN OF T_LFA1,    "Master data of vendors
          LIFNR(10),      "Vendor Number
      END OF T_LFA1,
*  Type Declaration for T024E (Company Codes)
       BEGIN OF T_T024E,
         EKORG   LIKE   T024E-EKORG,     "Purchasing organization
         BUKRS   LIKE   T024E-BUKRS,     "Company Code
       END OF T_T024E,
*  Type Declaration for t001w (Plant)
       BEGIN OF T_T001W,
         WERKS  LIKE  T001W-WERKS,            "Plant
       END OF T_T001W,
*  Type Declatation for String Line
       BEGIN OF T_STR1,                                     "#EC NEEDED
         SLINE(6000) TYPE C,
       END OF T_STR1.
TYPES:  BEGIN OF T_BDCDATA.  "BDC Data
        INCLUDE STRUCTURE BDCDATA.
TYPES:  END OF T_BDCDATA.
*       Internal Tables  Declaration                                  *
DATA:
*      Internal table to store input file data
       I_RECORD TYPE STANDARD TABLE OF T_RECORD INITIAL SIZE 0,
*      Internal table to capture errors
       I_ERR_REC TYPE STANDARD TABLE OF T_ERR_RECORD INITIAL SIZE 0,
*      Internal table to check for deletion indicators
       I_LOEKZ TYPE STANDARD TABLE OF T_LOEKZ INITIAL SIZE 0,
*      Internal table to check for material numbers
       I_MATNR TYPE STANDARD TABLE OF T_MATNR INITIAL SIZE 0,
*      Internal table used for storing Cross-Reference data of Vendor
       I_ZMVXREF TYPE STANDARD TABLE OF T_ZMVXREF INITIAL SIZE 0,
*      Internal table for holding Vendor Numbers from Master table
       I_LFA1 TYPE STANDARD TABLE OF T_LFA1 INITIAL SIZE 0,
*      Internal table for holding Purchase Org and Company Codes
       I_T024E TYPE STANDARD TABLE OF T_T024E INITIAL SIZE 0,
*      Internal table for holding Plants
       I_T001W TYPE STANDARD TABLE OF T_T001W INITIAL SIZE 0,
*      Internal table for storing a list of Company Codes
       I_T001 TYPE STANDARD TABLE OF T_T001 INITIAL SIZE 0,
*      Internal table used for ALV Reporting
       I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
*      Internal table used for holding List Header
       I_LISTHEADER TYPE SLIS_T_LISTHEADER,    "EC NEEDED
*      Internal table to hold ALV Event
       I_ALV_EVENT TYPE SLIS_T_EVENT,
*      Internal table to hold Sort Info for ALV Report
       I_SORT TYPE SLIS_T_SORTINFO_ALV,
*      Internal table for BDC Data
       I_BDCDATA TYPE STANDARD TABLE OF T_BDCDATA INITIAL SIZE 0,
*      Internal table for messages
       I_MESSTAB TYPE TABLE OF BDCMSGCOLL,
*      Internal table for String line
       I_STR1 TYPE STANDARD TABLE OF T_STR1 INITIAL SIZE 0.
*       Work Area Declaration                                         *
DATA:
*  Work Area to hold data for the Open Contract
      WA_RECORD TYPE T_RECORD,
*  Work Area to hold previous record data
      WA_RECORDPREV TYPE T_RECORD,
*  Work Area to hold errors
      WA_ERR_REC TYPE T_ERR_RECORD,
*  Work Area to hold the Deletion Indicator of materials
      WA_LOEKZ TYPE T_LOEKZ,
*  Work Area to hold Material numbers of required materials
      WA_MATNR TYPE T_MATNR,      "EC NEEDED
*  Work Area to hold errors occured while performing BDC
      WA_MESSTAB TYPE BDCMSGCOLL,
*  Work Area to hold field catalog for ALV Reports
      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
*  Work Area to hold list header data for ALV reports
      WA_LISTHEADER TYPE SLIS_LISTHEADER,
*  Work Area to hold ALV Event
      WA_ALV_EVENT LIKE LINE OF I_ALV_EVENT,  "EC NEEDED
*  Work Area to hold Layout of ALV Report
      WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
*  Work Area to hold Cross-Reference data of Vendor
      WA_ZMVXREF TYPE T_ZMVXREF,
*  Work Area to hold Vendor Numbers from Master table
      WA_LFA1 TYPE T_LFA1,    "EC NEEDED
*  Work Area to hold Purchase Org and Company Codes
      WA_T024E TYPE T_T024E,
*  Work Area to hold Company Codes
      WA_T001 TYPE T_T001,
*  Work Area to hold Plants
      WA_T001W TYPE T_T001W,
*  Work Area to hold Sort Info for ALV Report
      WA_SORT TYPE SLIS_SORTINFO_ALV,
*  Work Area to hold BDC Data
      WA_BDCDATA TYPE T_BDCDATA,
*  Work Area for String line
      WA_STR1 TYPE T_STR1.
*       Variables  Declaration                                        *
DATA: V_ERRMSG(500),           "To temporarily store the error message
      V_CONV_DATE(10) TYPE C,  "To capture the converted date format
      V_DATE LIKE SY-DATUM,
      V_REPID LIKE SY-REPID,   "holds report id
      V_CROSS_REFERENCE_ERROR TYPE I,  " cross-reference error
      V_INPUTERROR_FLAG VALUE '',      " input error status
      V_FILENAME TYPE STRING,          " File Name
      VEN_FLAG(1),                       " at new status
      MAT_FLAG(1),                      " at new status
      V_IND(2) TYPE N,                 " index of table control
      V_IND2(2) TYPE N,                " index of table control
      V_IND3(2) TYPE N,                " index of table control
      V_EVRTP1(20),
      V_EPSTP1(20),
      V_EMATN1(20),
      V_KTMNG1(20),
      V_NETPR1(20),
      V_PEINH1(20),
      V_BPRME1(20),
      V_TCSELFLAG1(20),
      V_KSCHL2(20),
      V_KBETR2(20),
      V_KONWA2(20),
      V_KPEIN2(20),
      V_KMEIN2(20),
      V_SELKZ2(20),
      V_KBETR3(20),
      V_KSTBM3(20),
      V_LINE TYPE I,
      V_STR TYPE X VALUE '09',
      V_EXIST TYPE C,
      V_EXIST1 TYPE C,
      V_ISDIR TYPE C,
      V_ISDIR1 TYPE C.
*       Constants  Declaration                                        *
CONSTANTS: C_TCODE(5) VALUE 'ME31K', "Trx code - Open Contract Creation
           C_TRUE     VALUE 'X',       " Del_Flag indicator
           C_LOEKZ_MARKED VALUE 'X',   "Deletion indicator for material
           C_INPUTERROR_FLAG_YES VALUE 'X',  "Input File Indicator
           C_VEN_ERR1 VALUE 1,    "Error Indicator
           C_16(2)    VALUE '16',
           C_VEN_ERR2 VALUE 2,    "Error Indicator
           C_VEN_ERR3 VALUE 3,    "Error Indicator
           C_VEN_SUCS VALUE 0,    "Success Indicator
           C_SUCCESS  LIKE SY-SUBRC VALUE '0',
           C_STRUE    VALUE 'S',  "Del_flag for SAP Errors
           C_YTRUE    VALUE 'Y',  "Del_flag for Success Records
           C_MSGTYP_E VALUE 'E',  "holds error message type
           C_MSGTYP_S VALUE 'S',  "holds success message type
           C_BSTYP    VALUE 'K',  "Purchasing Document type is Contract
           C_BACKGROUND VALUE 'N', "Background mode
           C_FOREGROUND VALUE 'A', "All Screen mode
           C_ERRORS   VALUE 'E',   "Error screen mode
           C_WK(2)    VALUE 'WK'. "Value Contract
*        Selection Screen                                             *
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-033.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS:
*              Plant
               S_WERKS FOR T001W-WERKS OBLIGATORY,
*              Purchase Organization
               S_EKORG FOR T024E-EKORG OBLIGATORY.
*              Company Code
PARAMETER      P_BUKRS LIKE T001-BUKRS OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETER RB_SERVE RADIOBUTTON GROUP RBX DEFAULT 'X' USER-COMMAND U1.
SELECTION-SCREEN COMMENT 6(19)  TEXT-036.
SELECTION-SCREEN POSITION 37.
PARAMETER RB_LOCAL RADIOBUTTON GROUP RBX.
SELECTION-SCREEN COMMENT 40(13) TEXT-035.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
PARAMETERS:
*    Parameter holding Input File name
          P_FILE LIKE RLGRAP-FILENAME
                 OBLIGATORY
                 LOWER CASE
                 DEFAULT 'C:\'
                 MODIF ID G1,
          P_FILE1 LIKE RLGRAP-FILENAME
                  OBLIGATORY
                  LOWER CASE
                  DEFAULT '/celestica/interface/corp/in/work/'
                  MODIF ID G2,
*    Parameter specifying Mode of calling the Transaction.
          P_MODE DEFAULT 'N' OBLIGATORY,
*    Check box used to test the input file.
          P_TEST AS CHECKBOX DEFAULT 'X',
*    Parameter holding Filename for holding Input File Errors
          P_IPERR LIKE RLGRAP-FILENAME
                  OBLIGATORY
                  LOWER CASE
                  DEFAULT 'C:\'
                  MODIF ID G1,
          P_IPERR1 LIKE RLGRAP-FILENAME
                 OBLIGATORY
                 LOWER CASE
                 DEFAULT '/celestica/interface/corp/in/work/047_Err.txt'
                 MODIF ID G2.
SELECTION-SCREEN END OF BLOCK B2.
*        AT Selection Screen  Events                                  *
*  Loop the screen to activate relative paths
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF RB_SERVE = C_TRUE AND SCREEN-GROUP1 = 'G1'.
      SCREEN-OUTPUT = 0.
      SCREEN-ACTIVE = 0.
      SCREEN-INPUT = 0.
    ELSEIF RB_LOCAL = C_TRUE AND SCREEN-GROUP1 = 'G2'.
      SCREEN-OUTPUT = 0.
      SCREEN-ACTIVE = 0.
      SCREEN-INPUT = 0.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.
AT SELECTION-SCREEN ON BLOCK B2.
*  Checking Access Authorization for the user
  CALL FUNCTION 'ZU_DATA_ACCESS_AUTH_CHECK'
       EXPORTING
            ACTVT        = C_16
            P_BUKRS      = P_BUKRS
       TABLES
            S_WERKS      = S_WERKS
            S_EKORG      = S_EKORG
       EXCEPTIONS
            BUKRS_FAILED = 1
            VKORG_FAILED = 2
            VTWEG_FAILED = 3
            EKORG_FAILED = 4
            WERKS_FAILED = 5
            LGNUM_FAILED = 6
            OTHERS       = 7.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
AT SELECTION-SCREEN ON P_BUKRS.
  IF NOT P_BUKRS IS INITIAL.
    SELECT SINGLE BUKRS INTO T001
                        FROM T001
                        WHERE BUKRS EQ P_BUKRS.
    IF SY-SUBRC NE 0.
      MESSAGE I000 WITH TEXT-089.
      STOP.
    ENDIF.
  ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* Search Help to select Input File path.
  PERFORM GET_FILE_NAME USING P_FILE.
* Check for the existence of the file.
  IF RB_LOCAL EQ C_TRUE.
    CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
         EXPORTING
              FNAME          = P_FILE
         IMPORTING
              EXIST          = V_EXIST
              ISDIR          = V_ISDIR
         EXCEPTIONS
              FILEINFO_ERROR = 1
              OTHERS         = 2.
    IF SY-SUBRC <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    IF V_ISDIR IS INITIAL.
      IF V_EXIST IS INITIAL.
        MESSAGE I000 WITH TEXT-018.
        STOP.
      ENDIF.
    ELSEIF V_ISDIR EQ C_TRUE.
      MESSAGE I000 WITH TEXT-068.
      STOP.
    ENDIF.
  ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IPERR.
* Search Help to select Input Error File path.
  PERFORM GET_FILE_NAME USING P_IPERR.
AT SELECTION-SCREEN.
* Validate Transaction Mode
  IF  P_MODE <> C_BACKGROUND AND
      P_MODE <> C_FOREGROUND AND
      P_MODE <> C_ERRORS.
    MESSAGE I000 WITH TEXT-034.
    STOP.
  ENDIF.
START-OF-SELECTION.
* Get the Input File Data
  V_FILENAME = P_FILE.
  PERFORM UPLOAD_FLATFILE_DATA TABLES I_RECORD
                               USING V_FILENAME.
* Sorting the data by all fields
  SORT I_RECORD.
* Ensuring the padding of the empty spaces before the vendor No
  CLEAR WA_RECORD.
  LOOP AT I_RECORD INTO WA_RECORD.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
         EXPORTING
              INPUT  = WA_RECORD-LIFNR
         IMPORTING
              OUTPUT = WA_RECORD-LIFNR.
    MODIFY I_RECORD FROM WA_RECORD
                    INDEX SY-TABIX
                    TRANSPORTING LIFNR.
    CLEAR WA_RECORD.
  ENDLOOP.
* Input file validation
  PERFORM VALIDATE_FLATFILE_DATA.
  IF P_TEST = C_TRUE.
    IF I_ERR_REC[] IS INITIAL.
      MESSAGE I000 WITH TEXT-032.
      STOP.
    ELSE.
*  Display all the error records at the input level.
      PERFORM DISPLAY_INPERR_RECORDS.
*  Download Error File
      PERFORM DOWNLOAD_ERROR_FILE.
    ENDIF.
  ELSE.
* Build BDC Data
    PERFORM BUILD_BDC_DATA.
* Download Error File
    PERFORM DOWNLOAD_ERROR_FILE.
* Display the status report.
    PERFORM DISPLAY_PROCESSED_RECORDS.
  ENDIF.
END-OF-SELECTION.
  REFRESH:  I_RECORD,
            I_ERR_REC,
            I_LOEKZ,
            I_MATNR,
            I_ZMVXREF,
            I_LFA1,
            I_T024E,
            I_FIELDCAT,
            I_LISTHEADER,
            I_ALV_EVENT,
            I_SORT,
            I_BDCDATA,
            I_MESSTAB,
            I_STR1.
  FREE: I_RECORD,
        I_ERR_REC,
        I_LOEKZ,
        I_MATNR,
        I_ZMVXREF,
        I_LFA1,
        I_T024E,
        I_FIELDCAT,
        I_LISTHEADER,
        I_ALV_EVENT,
        I_SORT,
        I_BDCDATA,
        I_MESSTAB,
        I_STR1.
*&      Form  GET_file_name
*       Fetches the file and path from the presentation system
*  -->  p1        Path along with the file name
FORM GET_FILE_NAME USING L_FILE LIKE RLGRAP-FILENAME.
  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            MASK             = ',*.TXT,*.txt.'
            MODE             = 'O'
            TITLE            = TEXT-011
       IMPORTING
            FILENAME         = L_FILE
       EXCEPTIONS
            INV_WINSYS       = 1
            NO_BATCH         = 2
            SELECTION_CANCEL = 3
            SELECTION_ERROR  = 4
            OTHERS           = 5.
  CASE SY-SUBRC.
    WHEN 1.
      MESSAGE I000 WITH TEXT-084.
      STOP.
    WHEN 2.
      MESSAGE I000 WITH TEXT-085.
      STOP.
    WHEN 3.
      MESSAGE I000 WITH TEXT-086.
      STOP.
    WHEN 4.
      MESSAGE I000 WITH TEXT-087.
      STOP.
  ENDCASE.
ENDFORM.                    " GET_file_name
*&      Form  upload_flatfile_data
*       Uploading data from Flat File
FORM UPLOAD_FLATFILE_DATA
                      TABLES I_L_RECORD STRUCTURE WA_RECORD
                      USING L_FILENAME TYPE STRING.
  DATA WA_L_RECORD TYPE T_RECORD.
* Upload the Flat file data
  IF RB_LOCAL EQ C_TRUE. "File is on the Local System
    CALL FUNCTION 'GUI_UPLOAD'
         EXPORTING
              FILENAME                = L_FILENAME
              FILETYPE                = 'ASC'
              HAS_FIELD_SEPARATOR     = 'X'
         TABLES
              DATA_TAB                = I_L_RECORD
         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.
    CASE SY-SUBRC.
      WHEN 0.
        DESCRIBE TABLE I_L_RECORD LINES V_LINE.
        IF V_LINE EQ 0.
          MESSAGE I000 WITH TEXT-065.
          STOP.
        ENDIF.
      WHEN 1.
        MESSAGE I000 WITH TEXT-068.
        STOP.
      WHEN 2.
        MESSAGE I000 WITH TEXT-069.
        STOP.
      WHEN 3.
        MESSAGE I000 WITH TEXT-070.
        STOP.
      WHEN 4.
        MESSAGE I000 WITH TEXT-071.
        STOP.
      WHEN 5.
        MESSAGE I000 WITH TEXT-072.
        STOP.
      WHEN 6.
        MESSAGE I000 WITH TEXT-073.
        STOP.
      WHEN 7.
        MESSAGE I000 WITH TEXT-074.
        STOP.
      WHEN 8.
        MESSAGE I000 WITH TEXT-075.
        STOP.
      WHEN 9.
        MESSAGE I000 WITH TEXT-076.
        STOP.
      WHEN 10.
        MESSAGE I000 WITH TEXT-077.
        STOP.
      WHEN 11.
        MESSAGE I000 WITH TEXT-078.
        STOP.
      WHEN 12.
        MESSAGE I000 WITH TEXT-079.
        STOP.
      WHEN 13.
        MESSAGE I000 WITH TEXT-080.
        STOP.
      WHEN 14.
        MESSAGE I000 WITH TEXT-081.
        STOP.
      WHEN 15.
        MESSAGE I000 WITH TEXT-082.
        STOP.
      WHEN 16.
        MESSAGE I000 WITH TEXT-083.
        STOP.
    ENDCASE.
    CLEAR V_LINE.
  ELSEIF RB_SERVE EQ C_TRUE. "File is on the Application Server
    P_MODE = C_BACKGROUND.
    OPEN DATASET P_FILE1 FOR INPUT IN TEXT MODE.
    CHECK SY-SUBRC EQ C_SUCCESS.
    CLEAR WA_STR1.
    DO.
      READ DATASET P_FILE1 INTO WA_STR1.
      IF SY-SUBRC <> 0.      " NE SUCCESS.
        EXIT.
      ELSEIF SY-SUBRC EQ C_SUCCESS.
        APPEND WA_STR1 TO I_STR1.
        CLEAR WA_STR1.
      ENDIF.                  " ENDIF on SY-SUBRC 0 Check.
    ENDDO.                    " ENDDO
    DELETE I_STR1 WHERE SLINE EQ ' '.
    DESCRIBE TABLE I_STR1 LINES V_LINE.
    IF V_LINE EQ 0.
      MESSAGE S000 WITH TEXT-065.
      STOP.
    ENDIF.
    LOOP AT I_STR1 INTO WA_STR1.
      CLEAR: WA_L_RECORD.
      SPLIT WA_STR1-SLINE AT V_STR
      INTO WA_L_RECORD-LIFNR
           WA_L_RECORD-EVART
           WA_L_RECORD-EKORG
           WA_L_RECORD-EKGRP
           WA_L_RECORD-WERKS
           WA_L_RECORD-LGORT
           WA_L_RECORD-KDATB
           WA_L_RECORD-KDATE
           WA_L_RECORD-ZTERM
           WA_L_RECORD-KTWRT
           WA_L_RECORD-EPSTP
           WA_L_RECORD-EMATN
           WA_L_RECORD-KTMNG
           WA_L_RECORD-NETPR
           WA_L_RECORD-PEINH
           WA_L_RECORD-BPRME
           WA_L_RECORD-IDNLF
           WA_L_RECORD-WEBRE
           WA_L_RECORD-MEPRF
           WA_L_RECORD-LTEX1
           WA_L_RECORD-DATAB
           WA_L_RECORD-DATBI
           WA_L_RECORD-KSCHL
           WA_L_RECORD-KBETR
           WA_L_RECORD-KONWA
           WA_L_RECORD-KPEIN
           WA_L_RECORD-KMEIN
           WA_L_RECORD-KSTBM
           WA_L_RECORD-KBETR_01
           WA_L_RECORD-DEL_FLAG
           WA_L_RECORD-ERR_MSG.
      APPEND WA_L_RECORD TO I_L_RECORD.
      CLEAR: WA_L_RECORD,
              WA_STR1.
    ENDLOOP.
    REFRESH I_STR1.
    CLOSE DATASET P_FILE1.
  ENDIF.
ENDFORM.
*&      Form  BDC_DYNPRO
*       Data populated into i_bdcdata table for program
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR WA_BDCDATA.
  WA_BDCDATA-PROGRAM  = PROGRAM.
  WA_BDCDATA-DYNPRO   = DYNPRO.
  WA_BDCDATA-DYNBEGIN = C_TRUE.
  APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM.
*&      Form  BDC_FIELD
*       Data populated into i_bdcdata table for fields
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR WA_BDCDATA.
  WA_BDCDATA-FNAM = FNAM.
  WA_BDCDATA-FVAL = FVAL.
  APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM.
*&      Form  convert_date
*       Converting the data from the file format to mm/dd/yyyy format
*      <--P_wa_record_kdatb  Source Date
*      <--p_l_conv_date      Target Date
FORM CONVERT_DATE USING L_DATE
                        L_TAR_DATE.
  CONCATENATE L_DATE+0(2)
              L_DATE+3(2)
              L_DATE+6(4)
              INTO L_TAR_DATE.
ENDFORM.                    " convert_date
*&      Form  validate_flatfile_data
*       Validating the input file
FORM VALIDATE_FLATFILE_DATA.
  DATA: L_TODAY LIKE SY-DATUM,
        L_STARTDATE_C LIKE SY-DATUM,
        L_ENDDATE_C LIKE SY-DATUM,
        L_ENDDATE_C1 LIKE SY-DATUM,
        L_STARTDATE_C1 LIKE SY-DATUM,
        L_STARTDATE(8),
        L_ENDDATE(8).
* Fetch indicator for all records on the material, plant & storage
* location combination.
  IF NOT I_RECORD[] IS INITIAL.
    REFRESH I_LOEKZ.
    SELECT EMATN            " Material Number
           WERKS            " Plant
           LGORT            " Storage Location
           BSTYP            " Purchasing Document Category
           LOEKZ            " Deletion indicator
      INTO TABLE I_LOEKZ
      FROM EKPO
      FOR ALL ENTRIES IN I_RECORD
      WHERE EMATN = I_RECORD-EMATN
        AND WERKS = I_RECORD-WERKS
        AND LGORT = I_RECORD-LGORT
        AND BSTYP = C_BSTYP
        AND LOEKZ = C_LOEKZ_MARKED.
    IF SY-SUBRC EQ 0.
      SORT I_LOEKZ BY EMATN WERKS LGORT BSTYP LOEKZ.
    ENDIF.
* Fetching Plants for all entries in the selection screen
    REFRESH I_T001W.
    SELECT WERKS  "Plant
        INTO TABLE I_T001W
        FROM T001W
        WHERE WERKS IN S_WERKS.
    IF SY-SUBRC EQ 0.
      SORT I_T001W BY WERKS.
    ENDIF.
* Fetching materials for the plants listed in flat file
    REFRESH I_MATNR.
    SELECT MATNR          " Material Number
      INTO TABLE I_MATNR
      FROM MARC
      FOR ALL ENTRIES IN I_RECORD
      WHERE WERKS = I_RECORD-WERKS.
    IF SY-SUBRC EQ 0.
      SORT I_MATNR BY MATNR.
    ENDIF.
* Fetching Company Codes for repective Purchase Organizations
    REFRESH I_T024E.
    SELECT EKORG       "  Purchase Organization
           BUKRS       "  Company Code
        INTO TABLE I_T024E
        FROM T024E
        WHERE EKORG IN S_EKORG.
    IF SY-SUBRC EQ 0.
      SORT I_T024E BY EKORG.
    ENDIF.
* Fetching SAP Data using Legacy Data.
    REFRESH I_ZMVXREF.
    SELECT D_ALTKN
           D_BUKRS
           M_ALTKN
        INTO TABLE I_ZMVXREF
        FROM ZMVXREF
        FOR ALL ENTRIES IN I_RECORD
        WHERE D_ALTKN = I_RECORD-LIFNR.
    IF SY-SUBRC EQ 0.
      SORT I_ZMVXREF BY D_ALTKN D_BUKRS.
    ENDIF.
* Fetching Vendors from LFA1
    IF NOT I_ZMVXREF[] IS INITIAL.
      REFRESH I_LFA1.
      SELECT LIFNR
         INTO TABLE I_LFA1
         FROM LFA1
         FOR ALL ENTRIES IN I_ZMVXREF
         WHERE LIFNR = I_ZMVXREF-M_ALTKN.
      IF SY-SUBRC EQ 0.
        SORT I_LFA1 BY LIFNR.
      ENDIF.
    ENDIF.
* Start Validating the flat file
    CLEAR: WA_RECORD,
           WA_T024E,
           WA_ZMVXREF,
           WA_LFA1,
           WA_LOEKZ,
           WA_MATNR.
    LOOP AT I_RECORD INTO WA_RECORD.
      L_TODAY = SY-DATUM.
      L_STARTDATE = WA_RECORD-KDATB.
      L_ENDDATE = WA_RECORD-KDATE.
      IF WA_RECORD-DEL_FLAG IS INITIAL.
        READ TABLE I_T001W INTO WA_T001W
                           WITH KEY WERKS = WA_RECORD-WERKS
                           BINARY SEARCH.
        IF SY-SUBRC EQ 0.
*   Cross-Reference check performed for the given Vendors
          READ TABLE I_T024E INTO WA_T024E
                             WITH KEY EKORG = WA_RECORD-EKORG
                             BINARY SEARCH.
          IF SY-SUBRC NE 0.
            V_CROSS_REFERENCE_ERROR = C_VEN_ERR3.
          ELSE.
            READ TABLE I_ZMVXREF INTO WA_ZMVXREF
                        WITH KEY D_ALTKN = WA_RECORD-LIFNR
                                 D_BUKRS = P_BUKRS
                        BINARY SEARCH.
            IF SY-SUBRC EQ 0.
              READ TABLE I_LFA1 INTO WA_LFA1
                         WITH KEY LIFNR = WA_ZMVXREF-M_ALTKN
                         BINARY SEARCH.
              IF SY-SUBRC EQ 0.
                V_CROSS_REFERENCE_ERROR = C_VEN_SUCS.
              ELSE.
                V_CROSS_REFERENCE_ERROR = C_VEN_ERR2.
              ENDIF.
            ELSE.
              V_CROSS_REFERENCE_ERROR = C_VEN_ERR1.
            ENDIF.
          ENDIF.
* Legacy Vendor could not be mapped
          IF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR1.
        V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inp.file err. occurd
            WA_RECORD-DEL_FLAG = C_TRUE.
            WA_RECORD-ERR_MSG = TEXT-007.
            MODIFY I_RECORD FROM WA_RECORD
                            TRANSPORTING DEL_FLAG
                                         ERR_MSG
                            WHERE LIFNR = WA_RECORD-LIFNR.
* Legacy Vendor is mapped but the obtained SAP vendor doesn't exist.
          ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR2.
*           Inp.file err. occurd
            V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
            WA_RECORD-DEL_FLAG = C_TRUE.
            WA_RECORD-ERR_MSG = TEXT-008.
            MODIFY I_RECORD FROM WA_RECORD
                            TRANSPORTING DEL_FLAG
                                         ERR_MSG
                            WHERE LIFNR = WA_RECORD-LIFNR.
* Purchase Organization doesn't exist in T024E.
          ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR3.
*             Inp.file err. occurd
            V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
            WA_RECORD-DEL_FLAG = C_TRUE.
            WA_RECORD-ERR_MSG = TEXT-014.
            MODIFY I_RECORD FROM WA_RECORD
                            TRANSPORTING DEL_FLAG
                                         ERR_MSG
                            WHERE EKORG = WA_RECORD-EKORG.
* Vendor is mapped and validated successfully
          ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_SUCS.
* Checking for the deletion indicator for that record
            CONCATENATE WA_RECORD-KDATB+6(4)
                        WA_RECORD-KDATB+3(2)
                        WA_RECORD-KDATB+0(2)
                        INTO
                        L_STARTDATE.
            MOVE L_STARTDATE TO L_STARTDATE_C.
            CONCATENATE WA_RECORD-KDATB+6(4)
                        WA_RECORD-KDATB+0(2)
                        WA_RECORD-KDATB+3(2)
                        INTO
                        L_STARTDATE_C1.
            CONCATENATE WA_RECORD-KDATE+6(4)
                        WA_RECORD-KDATE+3(2)
                        WA_RECORD-KDATE+0(2)
                        INTO
                        L_ENDDATE.
            MOVE L_ENDDATE TO L_ENDDATE_C.
            CONCATENATE WA_RECORD-KDATE+6(4)
                        WA_RECORD-KDATE+0(2)
                        WA_RECORD-KDATE+3(2)
                        INTO
                        L_ENDDATE_C1.
            READ TABLE I_LOEKZ INTO WA_LOEKZ WITH KEY
                                             EMATN = WA_RECORD-EMATN
                                             WERKS = WA_RECORD-WERKS
                                             LGORT = WA_RECORD-LGORT
                                             BINARY SEARCH.
            IF SY-SUBRC EQ 0.
*             Inpfle err.occured
              V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
              WA_RECORD-ERR_MSG = TEXT-003.
              WA_RECORD-DEL_FLAG = C_TRUE.    "marking the record
              MODIFY I_RECORD FROM WA_RECORD
                              TRANSPORTING DEL_FLAG
                                            ERR_MSG
                              WHERE LIFNR = WA_RECORD-LIFNR
                                AND EVART = WA_RECORD-EVART
                                AND EKORG = WA_RECORD-EKORG
                                AND EKGRP = WA_RECORD-EKGRP
                                AND WERKS = WA_RECORD-WERKS
                                AND LGORT = WA_RECORD-LGORT
                                AND KDATB = WA_RECORD-KDATB
                                AND KDATE = WA_RECORD-KDATE
                                AND ZTERM = WA_RECORD-ZTERM
                                AND KTWRT = WA_RECORD-KTWRT
                                AND EPSTP = WA_RECORD-EPSTP
                                AND EMATN = WA_RECORD-EMATN.
* Validating the Purchasing Organization for Blank/Null
            ELSEIF WA_RECORD-EKORG IS INITIAL.
*             Inpfle err.occured
              V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
              WA_RECORD-ERR_MSG = TEXT-010.
              WA_RECORD-DEL_FLAG = C_TRUE.
              MODIFY I_RECORD FROM WA_RECORD
                              TRANSPORTING DEL_FLAG
                                           ERR_MSG
                              WHERE LIFNR = WA_RECORD-LIFNR
                                AND EVART = WA_RECORD-EVART
                                AND EKORG = WA_RECORD-EKORG
                                AND EKGRP = WA_RECORD-EKGRP
                                AND WERKS = WA_RECORD-WERKS
                                AND LGORT = WA_RECORD-LGORT
                                AND KDATB = WA_RECORD-KDATB
                                AND KDATE = WA_RECORD-KDATE
                                AND ZTERM = WA_RECORD-ZTERM
                                AND KTWRT = WA_RECORD-KTWRT
                                AND EPSTP = WA_RECORD-EPSTP
                                AND EMATN = WA_RECORD-EMATN.
* Validating the Plant for Blank/Null
            ELSEIF WA_RECORD-WERKS IS INITIAL.
*             Inpfle err.occured
              V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
              WA_RECORD-ERR_MSG = TEXT-039.
              WA_RECORD-DEL_FLAG = C_TRUE.
              MODIFY I_RECORD FROM WA_RECORD
                              TRANSPORTING DEL_FLAG
                                           ERR_MSG
                              WHERE LIFNR = WA_RECORD-LIFNR
                                AND EVART = WA_RECORD-EVART
                                AND EKORG = WA_RECORD-EKORG
                                AND EKGRP = WA_RECORD-EKGRP
                                AND WERKS = WA_RECORD-WERKS
                                AND LGORT = WA_RECORD-LGORT
                                AND KDATB = WA_RECORD-KDATB
                                AND KDATE = WA_RECORD-KDATE
                                AND ZTERM = WA_RECORD-ZTERM
                                AND KTWRT = WA_RECORD-KTWRT
                                AND EPSTP = WA_RECORD-EPSTP
                                AND EMATN = WA_RECORD-EMATN.
* Validating the Contract Validity Start Date
            ELSEIF L_STARTDATE_C1 GT L_TODAY.             "#EC PORTABLE
*             Inpfle err.occured
              V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
              WA_RECORD-ERR_MSG = TEXT-004.
              WA_RECORD-DEL_FLAG = C_TRUE.      "marking the record
              MODIFY I_RECORD FROM WA_RECORD
                              TRANSPORTING DEL_FLAG
                                           ERR_MSG
                              WHERE LIFNR = WA_RECORD-LIFNR
                                AND EVART = WA_RECORD-EVART
                                AND EKORG = WA_RECORD-EKORG
                                AND EKGRP = WA_RECORD-EKGRP
                                AND WERKS = WA_RECORD-WERKS
                                AND LGORT = WA_RECORD-LGORT
                                AND KDATB = WA_RECORD-KDATB.
* Validating the Contract Validity End Date
            ELSEIF L_ENDDATE_C1 LE L_TODAY.               "#EC PORTABLE
*             Inpfle err.ocrd
              V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
              WA_RECORD-ERR_MSG = TEXT-005.
              WA_RECORD-DEL_FLAG = C_TRUE.    "marking the record
              MODIFY I_RECORD FROM WA_RECORD
                              TRANSPORTING DEL_FLAG
                                           ERR_MSG
                              WHERE LIFNR = WA_RECORD-LIFNR
                                AND EVART = WA_RECORD-EVART
                                AND EKORG = WA_RECORD-EKORG
                                AND EKGRP = WA_RECORD-EKGRP
                                AND WERKS = WA_RECORD-WERKS
                                AND LGORT = WA_RECORD-LGORT
                                AND KDATB = WA_RECORD-KDATB
                                AND KDATE = WA_RECORD-KDATE.
* Checking for Material under the Plant for Agreement Type 'WK'
            ELSEIF WA_RECORD-EVART = C_WK.
              READ TABLE I_MATNR INTO WA_MATNR
                                 WITH KEY MATNR = WA_RECORD-EMATN
                                 BINARY SEARCH.
              IF SY-SUBRC NE 0.
             V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inpfle err.ocrd
                WA_RECORD-ERR_MSG = TEXT-006.
                WA_RECORD-DEL_FLAG = C_TRUE.   "marking the record
                MODIFY I_RECORD FROM WA_RECORD
                                TRANSPORTING DEL_FLAG
                                             ERR_MSG
                                WHERE LIFNR = WA_RECORD-LIFNR
                                  AND EVART = WA_RECORD-EVART
                                  AND EKORG = WA_RECORD-EKORG
                                  AND EKGRP = WA_RECORD-EKGRP
                                  AND WERKS = WA_RECORD-WERKS
                                  AND LGORT = WA_RECORD-LGORT
                                  AND KDATB = WA_RECORD-KDATB
                                  AND KDATE = WA_RECORD-KDATE
                                  AND ZTERM = WA_RECORD-ZTERM
                                  AND KTWRT = WA_RECORD-KTWRT
                                  AND EPSTP = WA_RECORD-EPSTP
                                  AND EMATN = WA_RECORD-EMATN.
              ENDIF.
            ENDIF.  " checking of deletion indicator
          ENDIF.   " checking for success of vendor cross reference
        ELSE.
          V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inpfle err.ocrd
          WA_RECORD-ERR_MSG = TEXT-041.
          WA_RECORD-DEL_FLAG = C_TRUE.   "marking the record
          MODIFY I_RECORD FROM WA_RECORD
                          TRANSPORTING DEL_FLAG
                                       ERR_MSG
                          WHERE WERKS = WA_RECORD-WERKS.
        ENDIF. " Plant checked to selection screen
      ENDIF.  " the records for which del_flag is initial
      CLEAR: WA_RECORD,
             WA_T024E,
             WA_ZMVXREF,
             WA_LFA1,
             WA_LOEKZ,
             WA_MATNR,
             L_TODAY,
             L_STARTDATE_C,
             L_ENDDATE_C,
             L_STARTDATE,
             L_ENDDATE.
    ENDLOOP.
    LOOP AT I_RECORD INTO WA_RECORD.
      IF WA_RECORD-DEL_FLAG = C_TRUE.
        APPEND WA_RECORD TO I_ERR_REC.
        CLEAR WA_RECORD.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE E000 WITH TEXT-013.  " no records in the flat file
    STOP.
  ENDIF.
ENDFORM.                    " validate_flatfile_data
*&      Form  DOWNLOAD_ERROR_FILE
*       Downloads all records along with the records encountering the
*       input file validation error
FORM DOWNLOAD_ERROR_FILE.
  DATA L_ISDIR TYPE C.
  IF V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
    V_FILENAME = P_IPERR.
* Check for the existence of the file.
    IF RB_LOCAL EQ C_TRUE.
      CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
           EXPORTING
                FNAME          = P_IPERR
           IMPORTING
                ISDIR          = L_ISDIR
           EXCEPTIONS
                FILEINFO_ERROR = 1
                OTHERS         = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF L_ISDIR EQ C_TRUE.
        MESSAGE I000 WITH TEXT-088.
        STOP.
      ENDIF.
    ENDIF.
    IF RB_LOCAL EQ C_TRUE.
* Download the Input Error File.
      CALL FUNCTION 'GUI_DOWNLOAD'
           EXPORTING
                FILENAME                = V_FILENAME
                FILETYPE                = 'ASC'
                WRITE_FIELD_SEPARATOR   = '#'
           TABLES
                DATA_TAB                = I_ERR_REC
           EXCEPTIONS
                FILE_WRITE_ERROR        = 1
                NO_BATCH                = 2
                GUI_REFUSE_FILETRANSFER = 3
                INVALID_TYPE            = 4
                NO_AUTHORITY            = 5
                UNKNOWN_ERROR           = 6
                HEADER_NOT_ALLOWED      = 7
                SEPARATOR_NOT_ALLOWED   = 8
                FILESIZE_NOT_ALLOWED    = 9
                HEADER_TOO_LONG         = 10
                DP_ERROR_CREATE         = 11
                DP_ERROR_SEND           = 12
                DP_ERROR_WRITE          = 13
                UNKNOWN_DP_ERROR        = 14
                ACCESS_DENIED           = 15
                DP_OUT_OF_MEMORY        = 16
                DISK_FULL               = 17
                DP_TIMEOUT              = 18
                FILE_NOT_FOUND          = 19
                DATAPROVIDER_EXCEPTION  = 20
                CONTROL_FLUSH_ERROR     = 21
                OTHERS                  = 22.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ELSEIF RB_SERVE EQ C_TRUE.
      OPEN DATASET P_IPERR1 FOR OUTPUT IN TEXT MODE.
      CHECK SY-SUBRC EQ 0.
      CLEAR WA_ERR_REC.
      LOOP AT I_ERR_REC INTO WA_ERR_REC.
        IF WA_ERR_REC-DEL_FLAG = C_TRUE.
          TRANSFER WA_ERR_REC TO P_IPERR1.
        ENDIF.
        CLEAR WA_ERR_REC.
      ENDLOOP.
      CLOSE DATASET P_IPERR1.
    ENDIF.
  ENDIF.
ENDFORM.                    " DOWNLOAD_ERROR_FILE
*&      Form  BUILD_BDC_DATA
* Populates BDC for all the fields neccessary for Open Contract Creation
FORM BUILD_BDC_DATA.
  DATA: L_MAT_INDEX TYPE I,
        L_CON_INDEX TYPE I,
        L_SCA_INDEX TYPE I.
  CLEAR   WA_BDCDATA.
  REFRESH: I_BDCDATA,
           I_MESSTAB.
* Processing the bdc
  CLEAR: WA_RECORD,
         WA_RECORDPREV,
         VEN_FLAG,
         MAT_FLAG.
  LOOP AT I_RECORD INTO WA_RECORD.
*    Checks for the del_flag of the record.
    IF     WA_RECORD-DEL_FLAG EQ C_TRUE
        OR WA_RECORD-DEL_FLAG EQ C_STRUE.
      CLEAR WA_RECORD.
      CONTINUE.
    ELSE.
      IF  WA_RECORDPREV-LIFNR NE WA_RECORD-LIFNR
       OR WA_RECORDPREV-EVART NE WA_RECORD-EVART
       OR WA_RECORDPREV-EKORG NE WA_RECORD-EKORG
       OR WA_RECORDPREV-EKGRP NE WA_RECORD-EKGRP
       OR WA_RECORDPREV-WERKS NE WA_RECORD-WERKS
       OR WA_RECORDPREV-LGORT NE WA_RECORD-LGORT
       OR WA_RECORDPREV-KDATB NE WA_RECORD-KDATB
       OR WA_RECORDPREV-KDATE NE WA_RECORD-KDATE
       OR WA_RECORDPREV-ZTERM NE WA_RECORD-ZTERM
       OR WA_RECORDPREV-KTWRT NE WA_RECORD-KTWRT.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0200'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'RM06E-LGORT'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
*   Cross-Reference check performed for the given Vendors
        CLEAR WA_T024E.
        READ TABLE I_T024E INTO WA_T024E
                           WITH KEY EKORG = WA_RECORD-EKORG
                           BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          CLEAR WA_ZMVXREF.
          READ TABLE I_ZMVXREF INTO WA_ZMVXREF
                      WITH KEY D_ALTKN = WA_RECORD-LIFNR
                               D_BUKRS = P_BUKRS
                      BINARY SEARCH.
          IF SY-SUBRC EQ 0.
            PERFORM BDC_FIELD   USING 'EKKO-LIFNR'
                                       WA_ZMVXREF-M_ALTKN.
          ENDIF.
          CLEAR WA_ZMVXREF.
        ENDIF.
        CLEAR WA_T024E.
        PERFORM BDC_FIELD       USING 'RM06E-EVART'
                                      WA_RECORD-EVART.
        PERFORM BDC_FIELD       USING 'EKKO-EKORG'
                                      WA_RECORD-EKORG.
        PERFORM BDC_FIELD       USING 'EKKO-EKGRP'
                                      WA_RECORD-EKGRP.
        PERFORM BDC_FIELD       USING 'RM06E-WERKS'
                                      WA_RECORD-WERKS.
        PERFORM BDC_FIELD       USING 'RM06E-LGORT'
                                      WA_RECORD-LGORT.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0201'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'EKKO-KTWRT'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=AB'.
        PERFORM CONVERT_DATE USING WA_RECORD-KDATB V_CONV_DATE.
        PERFORM BDC_FIELD       USING 'EKKO-KDATB'
                                      V_CONV_DATE.
        PERFORM CONVERT_DATE USING WA_RECORD-KDATE V_CONV_DATE.
        PERFORM BDC_FIELD       USING 'EKKO-KDATE'
                                      V_CONV_DATE.
        PERFORM BDC_FIELD       USING 'EKKO-ZTERM'
                                      WA_RECORD-ZTERM.
        PERFORM BDC_FIELD       USING 'EKKO-KTWRT'
                                        WA_RECORD-KTWRT.
        VEN_FLAG = 1.
        L_MAT_INDEX = 1. "index for table-control of material
      ENDIF.
*          "first check for itemline
      IF  WA_RECORDPREV-EPSTP NE WA_RECORD-EPSTP
       OR WA_RECORDPREV-EMATN NE WA_RECORD-EMATN
       OR WA_RECORDPREV-KTMNG NE WA_RECORD-KTMNG
       OR WA_RECORDPREV-NETPR NE WA_RECORD-NETPR
       OR WA_RECORDPREV-PEINH NE WA_RECORD-PEINH
       OR WA_RECORDPREV-BPRME NE WA_RECORD-BPRME
       OR WA_RECORDPREV-IDNLF NE WA_RECORD-IDNLF
       OR WA_RECORDPREV-WEBRE NE WA_RECORD-WEBRE
       OR WA_RECORDPREV-MEPRF NE WA_RECORD-MEPRF
       OR WA_RECORDPREV-LTEX1 NE WA_RECORD-LTEX1
       OR VEN_FLAG EQ 1.
        V_IND = L_MAT_INDEX.
        IF V_IND GT 1.
          V_IND = 2.
        ENDIF.
        CONCATENATE 'RM06E-EVRTP(' V_IND ')' INTO V_EVRTP1.
        CONCATENATE 'RM06E-EPSTP(' V_IND ')' INTO V_EPSTP1.
        CONCATENATE 'EKPO-EMATN(' V_IND ')' INTO V_EMATN1.
        CONCATENATE 'EKPO-KTMNG(' V_IND ')' INTO V_KTMNG1.
        CONCATENATE 'EKPO-NETPR(' V_IND ')' INTO V_NETPR1.
        CONCATENATE 'EKPO-PEINH(' V_IND ')' INTO V_PEINH1.
        CONCATENATE 'EKPO-BPRME(' V_IND ')' INTO V_BPRME1.
        CONCATENATE 'RM06E-TCSELFLAG(' V_IND ')' INTO V_TCSELFLAG1.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0220'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=NP'.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0220'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      V_EVRTP1.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=DETA'.
        PERFORM BDC_FIELD       USING V_EPSTP1
                                      WA_RECORD-EPSTP.
        PERFORM BDC_FIELD       USING V_EMATN1
                                      WA_RECORD-EMATN.
        PERFORM BDC_FIELD       USING V_KTMNG1
                                      WA_RECORD-KTMNG.
        PERFORM BDC_FIELD       USING V_NETPR1
                                      WA_RECORD-NETPR.
        PERFORM BDC_FIELD       USING V_PEINH1
                                      WA_RECORD-PEINH.
        PERFORM BDC_FIELD       USING V_BPRME1
                                      WA_RECORD-BPRME.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0211'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'EKPO-WEBRE'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=DETZ'.
        PERFORM BDC_FIELD       USING 'EKPO-IDNLF'
                                      WA_RECORD-IDNLF.
        TRANSLATE WA_RECORD-EVART TO UPPER CASE.
        IF WA_RECORD-EVART EQ C_WK.
          PERFORM BDC_FIELD       USING 'EKPO-WEBRE' 'X'.
        ENDIF.
        PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0212'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'EKPO-MEPRF'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=TXP'.
        PERFORM BDC_FIELD       USING 'EKPO-MEPRF'
                                      WA_RECORD-MEPRF.
        IF NOT WA_RECORD-LTEX1 IS INITIAL. "NE space.
          PERFORM BDC_DYNPRO      USING 'SAPMM06E' '0106'.
          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                        'RM06E-SELKZ(02)'.
          PERFORM BDC_FIELD 

Similar Messages

  • OM and PA data transfer from SAP 4.7 to ECC 6.0

    Dear Experts,
    hi
    i am working on one project where i will need to design the data transfer from SAP 4.7 to ECC 6.0. this is not a upgrade project.
    the data of PA and OM are in 4.7 which is existing system. i need to transfer entire data into ECC 6.0 so i can use that data for my E-Recruitment module ( we are doing E-rec fresh implementation.)
    we will keep both the systems (4.7 and ECC 6.0). ECC 6.0 will be used for E-Rec and OM only. for PA and Payroll we will use 4.7.
    can some one tell me,
    1. what are the key points to keep in consideration from OM point of view ?
    2. which is the best method to transfer the OM structure and data from 4.7 to ECC?
    3. what are the risks?
    4. which system we should make master system and which will be the slave system? why ?
    your input will be much appreciated.
    thanks and regards
    chandra

    Hi Chandra,
    I was under the impression that you are planning to use PA & OM from 4.7, now I read it again.
    Now its advisable to keep ECC 6 as a master system, becoz OM is the stating point of the HR processes where all Orgnization unit, job, position exists. Later the same data can flow to the slave system for PA use. As OM is the starting point, this system should be the master system.
    Abou the IDoc interface.
    Check the basic type HRMS_A05, whether it has all the data you need to transmit. T-Code WE30
    If you need to add something you can create a Z version in WE31. I selected HRMS_A05 as it is present in both the SAP version.
    Next there are series of transaction you need to process. Check with technical person who hands IDoc interafcing.
    Steps are:
    Assigning Message type to IDOC Type with extension. T-Code WE82
    Create Logical System:
    T-Code SALE-> Basic Settings-> Logical Systems-> Define Logical System
    It is required to configure in the sending system as well as in the receiving system
    Assign Logical System to Client:
    T-Code SALE-> Basic Settings-> Logical Systems-> Assign Logical System to Client
    Create RFC Destinations:
    T-Code SM59, select ABAP connection of type 3.
    Create Distribution Model: T-Code BD64
    Generate Partner Profile: T-Code BD82
    Maintain sending system partner profile: T-Code WE20
    Link Message Type to Function Module T-Code WE57 in receiving system only
    Hope this will help.
    Let me know if you need anything else.
    BR/Manas

  • Candidate Data transfer from E-Recruiting System to HR system for New Hiring.

    Hi All,
    Hope everyone doing in good Spirit.
    We are implementing E-Recruiting as Standalone for one of our client.
    Can any please help me in regards with Data transfer from E-Rec System to HR System for hiring once the candidate has been successfully completed recruiting process.
    You inputs are highly appreciable.
    Thank you.
    Sekhar.

    Hello Sekhar,
    there are three different scenarios for transferring the data of an external candidate to the HR core for hiring.
    the easiest and most commonly used is the RFC connection. When creating an activity of category data transfer the data of the candidate is transferred from eRec to HR core. There it is stored in table T752F. Then you can run transaction PA48. There you can select the candidate and run a hiring action. This is the same action like in PA40 only the system will preset the fields with the values from eRec (similar to batch input).
    Instead of using the RFC solution you can transfer the data using PI (this can be activated using a switch in T77S0). To be honest none of my customers is using this. Either they had no PI server at all or they did not use it for eRec
    The third was delivered with a business function HCM_HIRE_INT_CI_1. This is based on HCM processes and forms and targeted towards customers using Talent Management Core (e.g. data for education and work experience is transferred into the TM Core infotypes 740X as contrary to the hr core standard infotypes 0022 and 0023 they are structured like the eRec ones). Of course as you can do a lot of customer enhancements to HCMP&F you can replace the behavior nearly completely. One or two of my clients discussed this solution but as far as I know none is actually using it.
    The simple truth is most customers seem to not use any integration at all. The first solution is easy to activate but only covers around 13 fields. Compared to a real full blow hiring action this is not even 10% of the fields which have to be entered. So the presetting this small number of fields is not a great help especially as you have to check every information anyways. Furthermore PA48 is not very nice and lacks functions to structure the incoming records which makes it difficult to handle in large distributed organizations.
    The other two options require a lot of infrastructure for small functionality. What we discussed with a client was using the new hire integration to preset a full hiring form with eRec data and then send to the candidate as offline form to gather all missing information and use this for hiring. But there were to many issues on data privacy aspects when sending a form with social security data, bank account data, etc. via email. Furthermore they required actual signatures.
    Kind regards
    Roman  

  • Import conversion data table from SAP R/3 into value mapping table in XI

    Hi:
        Somebody knows how to import a table with conversion data that are in SAP R/3 and to take it to a value mapping table in XI?
        The purpose is to use a mapping table that can change in the future. Must I use a ABAP programming that retrieve data and build the value mapping table?
        If so, how I specify in the ABAP programming the group id, the scheme, the agency and the corresponding value?
        Please, help me.
        Regards!!!

    Hi David,
    please refer to this section in the help: http://help.sap.com/saphelp_nw04/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/content.htm
    There is an interface for mass replication of mapping data. The steps you need to carry out to use this are:
    +Activities
    To implement a value-mapping replication scenario, proceed as follows:
           1.      Register the Java (inbound) proxies.
    To do so, call the following URLs in the following order in your Internet browser:
    ¡        http://:/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplication&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplication&method=valueMappingReplication (for the asynchronous replication scenario)
    ¡ http://:/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplicationSynchronous&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplicationSynchronous&method=valueMappingReplicationSynchronous (for the synchronous replication scenario)
    You only need to perform this step once (for each installation).
           2.      Application programming
    The ABAP program must perform the following tasks:
    ¡        Read the value mapping data from the external table
    ¡        Call the outbound proxy used to transfer the data to a message, which is then sent to the Integration Server
           3.      Configuration of the replication scenario in the Integration Directory
    This involves creating all the configuration objects you need to execute the scenario successfully. One special aspect of the value-mapping replication scenario is that the receiver is predefined (it must be on the Integration Server). The sender, however, is not predefined in the replication scenario and can be defined to meet your individual requirements.
    For example, you can use the shipped ABAP proxies.
    In the case of the receiver communication channel, choose the adapter type XI. Ensure that you configure a channel for the Java proxy receiver in this case.
    Enter the path prefix /MessagingSystem/receive/JPR/XI for this purpose.
    +
    Regards
    Christine

  • Data transfer from SAP to SAP

    Hi Gurus,
    I have a scenario where I need to transfer data from SAP to SAP. While the program is ran in source the idoc gets fired successfully and its available in WE02 with the status Green and text as "Sent to SAP port". But while checking in the target system there are no entries respective to the Source Idoc. I tried to fire the idoc on a particular date and time and after some hours I checked for the idoc in target system but no entries were found for the source Idoc in the target system on that date. Please suggest me where ,how and what to check.I guess I have to check the TRFC meant for this process but how and where.
    Please reply.
    Regards,
    Bnay.

    HI
    Check this link
    http://www.thespot4sap.com/articles/SAP_XML_BC_Integration_Benefits.asp
    http://help.sap.com/saphelp_nw04/helpdata/en/00/f01640dc88e769e10000000a155106/frameset.htm
    Sail

  • Data Transfer from SAP to FAS(Financial Accounting System)

    Hi Experts,
         Can u give any methods for transfer of data from SAP to FAS(Financial Accounting System) system, because naming conventions  and data for both the systems are different.
    Thanks and regards
    BalaNarasimman

    You will need to create interface programs.

  • SAP DB recovery data, transfer from SAP to MAX DB

    Hi all
    I have use the SAP DB 7.4 database platform (it is very old, but maybe anyone knows or remember it)
    SAP DB was installed on Windows 2000 server (32 bit DELL),after the server crash I have only backup file (hot backup with database parameters and data about 200GGb), as temporary solution I've recovered it on just desktop PC with good parameters (CORE2DUO, 16GGb RAM...) the recovery continued about 4 hours. I've tried to recovery this backup on new server (IBM) on 32bit Windows 2003 Server, but I was confused because recovery was continued about 16-20 and it still recovering very slow I dont know what the problem, maybe anyone changed OS or server version for SAP DB 7.4?
    One more question, is it possible to transfer database (recovery backup) from SAP DB to MAX DB?
    Thanks.

    Hi,
    SAP DB was installed on Windows 2000 server (32 bit DELL),after the server crash I have only backup file (hot backup with database parameters and data about 200GGb), as temporary solution I've recovered it on just desktop PC with good parameters (CORE2DUO, 16GGb RAM...) the recovery continued about 4 hours
    If your SAP instance running on above platform ? If yes, Whats the SAP release you have.
    I've tried to recovery this backup on new server (IBM) on 32bit Windows 2003 Server, but I was confused because recovery was continued about 16-20 and it still recovering very slow I dont know what the problem, maybe anyone changed OS or server version for SAP DB 7.4?
    What is the server configuration on IBM server. How much RAM and CPU does it have.
    Regards,
    Deepak Kori

  • Data Transfer from SAP R/3 to CRM System

    Hi Experts,
    I need the Busniess Partner Data in CRM system from SAP R/3. Can i do this by ALE or is ther any other way to do it?..If i need to do it by ALE can anyone pls let me know what message type should i use and the steps that i have to follow.
    Thanks & Regards
    Sathish

    Check the links
    Integration between mySAP and CRM using XI
    How to make integration with CRM system with XI
    http://help.sap.com/bp_crmv250/CRM_DE/BBLibrary/html/BBlibrary.htm
    CRM XI Integration
    Regards.

  • Regarding data transfer from SAP system to XI

    Hi Experts,
    I have a program in which a file of type XSTRING is sent to SAP Business Connector through a Function module. Now we want that file to be transferred to third party system through XI as interface instead of SAP BC.
    Can anybody suggest what will be the required steps ?
    Also please mention the required things to be done on ABAP part.
    Thanks in adv.,
    Akash

    Hi Gordon,
    We don't have the idoc creation part in our program so it will be better if we can use xstring file only.
    Can you suggest any function modules for data transfer to XI ?
    Thanks,
    Akash

  • How to download data displayed in a BSP page into Excel sheet

    Hi,
    I'm displaying an internal table data into tableview of a BSP page. I want to provide a feature to download the tableview contents to Excel sheet from Internet Explorer.  How do I do it?  Can someone guide me.
    Kedhar.

    Hi Kedhar,
    welcome to SDN. You should try to use the Search functionality here. Then you will find this Weblog:
    <a href="/people/thomas.jung3/blog/2004/09/02/creating-a-bsp-extension-for-downloading-a-table">Creating a BSP Extension for Downloading a Table</a>.
    You can award points if this answer was helpfull.
    Regards
    Gregor

  • Master Data transfer from SAP R/3 to SAP GTS

    HI,
    Master data like customer master  is transferred  fro R/3 to GTS.  Any customer master in R/3 has many fields like company code, sales area, shipping conditions etc.
    Shipping conditions and other fields are not defined in GTS. So how come  when the customer master which is copied into SAP GTS is not  giving any error since certain fields like shipping conditions are not there in GTS. I mean there are certain validation in R/3 for a customer . So how come these validations are being done in SAP GTS ??
    regards

    Customer/vendor the fields which is passed to GTS from ECC can be found in - (/SAPSLL/MENU_LEGAL - SAP Compliance Management (SPL Screening) - Logistics (Simulation of SPL - Check general address). Here you can see all the details captured for Business Partner in GTS. You can also see the entire field range at (/nbp)
    When you transfer a Customer master record to GTS, in GTS an internal BP number is created to map the stated fields based on number range logic etc as per requirement. The BP's are created in GTS as per the partner role in GTS and also can be retrived using partner role. At document level the validations happen w.r.t to partner functions mapped and created as per the feeder system.

  • Data transfer from SAP R/3 to SQL Server

    Can anybody help me. I will explain the scenario.
    If there is any change or update in the HR master data like creation of new personnel number or deletion of personnel number and change of cost center etc., should immediately get reflected in  the  SQL server. Can you please help me ASAP in solving this. Thanks in advance.
    Best Regards
    Bhagat.

    Hi,
    We had the same scenario here also. You can call .NET code from ABAP program using SAP .Net connector.
    The data can be downloaded to SQL server based on periodic job wise (every Half an hour or 1 Hour) .
    1. Write an ABAP report to get new personnal numbers from HR master tables based on created date.
    2. Create a RFC to pass employees details.
    3. You can create a proxy in .NET server stub code based on the above RFC.
    4. Write code to get data .NET object and establise a connection to SQL server.
    5. Write code to push data into SQL server tables.
    6. After you complete the .NET code, when you generate this code will create an exe file.
    7. You have to execute that exe with few command line arguments.
    8. The command line arguments need to setup in RFC destination (SM59).
    9. In that ABAP report call this RFC with RFC destination as you defined.
    .NET code can be done by .NET person.
    Let me know if you have any clarifications.
    Thanks & Regards,
    Govind.

  • Data transfer from E-recruitment to PA

    Dear All,
    we are Implementing E-recruitment. while transferinf the data from E-recruitment to Personnel administraion, I am getting the error, No data available from the partner system table T752F). We are using the same server for E-rec and PA.
    While doing the data transfer activity in E-recruitment i m getting succfulll. In R/3 while going to the Tcode PA48 i m getting the error.
    Please help me on this.
    Thanks and Regards,
    Revathi.

    An integrated hiring (data transfer) scenario with SAP e-recruitment
    and R/3 starts with creating a "Data Transfer for New Employees"
    activity within e-recruiting for the candidate selected to be hired.
    Data from e-recruitment is transferred to the target HR (via an RFC
    call) and stored there in a holding table (T572F) for processing
    by an appropriate action.  Within the HR system, execute transaction
    PA48 to access the holding table.  Select the candidate you want to
    process and then click the "Hire" button, and continue with the
    appropriate action.
    This message occurs, if you execute PA42 or PA48, in order to perform
    the personnel action RA (Integration with Recruitment in Partner
    Systems) and no data exists on the R/3  or external system.
    You will find all the relevant information in the IMG documents
    available. Please check;
    - Set Up Data transfer from SAP ECC
    - Set Up Data Transfer for New Employees

  • How to downlaod vednor master data into excel sheet in SAP Application ser

    Hi friends
    I want to download SAP vendor master data into excel sheet and the file should be stored in SAP Application server Location with padding zeros.
    Please help me.
    Thanks

    Hi Ramesh,
    You can download the data into application server using the following code. You will have the vendor details in the internal table. Then you will open a file and transfer the data as follows.
    *   Download internal table to Application server file(Unix)
    DATA: e_file like rlgrap-filename value '/usr/sap/tmp/file.txt'.     
      open dataset e_file for output in text mode.
      lOOP AT it_datatab......
        transfer it_datatab to e_file.
      ENDLOOP.
      close dataset e_file.
    In application server you will have only files and not excel sheets.
    Reward points if useful,
    Aleem.

  • How to downlaod vednor master data into excel sheet in SAP Application serv

    Hi friends
    I want to download SAP vendor master data into excel sheet and the file should be stored in SAP Application server Location with padding zeros.
    Please help me.
    Thanks

    Hi Ramesh,
    It is not possible to download data in Excel file on application server. You can better download the same in tab separated text file and then convert that text file to XLS.
    Please do not open multiple threads for same problem.
    Regards,
    Atish

Maybe you are looking for