FM FTP_COMMAND

Does anyone have examples of how to create the variables for 'handle' and 'command' when using the FM FTP_COMMAND to do a 'put' or a 'get'?
CALL FUNCTION 'FTP_COMMAND'
       EXPORTING
            handle        = l_mi_handle
            command    = l_mc_command
       TABLES
            data          = i_data
       EXCEPTIONS
            tcpip_error   = 1
            command_error = 2
            data_error    = 3
            OTHERS        = 4.
Thanks.

Check the below code....
It has everything which has been developed for one of the client....
REPORT zfo_phoenix_acc_reconciliation NO STANDARD PAGE HEADING
                                                MESSAGE-ID zz
                                                LINE-SIZE  255
                                                LINE-COUNT 65.
                     TABLES
TABLES : ADR6.
                     TYPES
Output File - Master COA(Chart of Account)
TYPES : BEGIN OF ty_coacode ,
         coa_code(20),         "COA Code
         coa_description(50),  "COA Description
         field11 TYPE x,       "Line Feed
         END OF ty_coacode.
Output File - Master Account
TYPES : BEGIN OF ty_acctcode ,
         act_code(20),         "GL Account Number
         act_desc(60),         "GL Account Description
         act_act_flag(1),      "Account marked for deletion indicator
         glact_type(1),        "GL Account type
         fi_line(20),          "Corporate Financial Statement Line
         coa_code(20),         "COA Code
         act_defcode(3),       "Account Defination Code
         field11 TYPE x,       "Line Feed
       END OF ty_acctcode.
Output File - Master Entity
TYPES : BEGIN OF ty_entitycode,
         entity_code(12),     "Entity Code
         com_desc(40),        "Company Name
         coa_code(20),        "COA Code
         field11 TYPE x,      "Line Feed
        END OF ty_entitycode.
Output File - Master Attribute
TYPES : BEGIN OF ty_attribcode,
         attrib_code(5),       "Attribute Code
         attrib_value(20),     "Attribute Value
         attrib_desc(60),      "Attribute Description
         field11 TYPE x,       "Line Feed
        END OF ty_attribcode.
Output File - Transaction GL Balance
TYPES : BEGIN OF ty_glbal,
         gl_reccode(2),        "GL Reconciliation Code
         gl_entity(12),        "GL Entity - Company Code
         gl_accnum(20),        "Gl Group Account Number
         site(4),              "Site
         currency_type(6),     "Transaction Currency Code
         year(4) TYPE n,       "Year
         month(2) TYPE n,      "Month
         as_of_date(8),        "Date Account Balance
         tran_cur_amt(21),     "Transaction Currency Amount
         usd_amount(21),       "USD Amount
         racct(20),            "GL Account Number
         zzbewar(20),          "Consolidation Transaction Type
         zzdatsrc(20),         "Data Source
         zzblart(20),          "Document Type
        zzvbund(20),          "Trading Partner
         rassc(20),          "Trading Partner
         field1(20),           "Attribute field1
         field2(20),           "Attribute field2
         field3(20),           "Attribute field3
         field4(20),           "Attribute field4
         field5(20),           "Attribute field5
         field11 TYPE x,       "Line Feed
       END OF ty_glbal.
Output File - Control
TYPES :BEGIN OF ty_globalsap,
        clnt_name(6),          "Client Name
        source_name(12),       "Source Name
        as_of_date(8),         "AS of Date
        time_stamp(6),         "Time Stamp
        time_zone(8),          "Time Zone
        num_of_files(3),       "Number of Files
        num_of_records(9),     "Number of Records
        user_ids(60),          "User ID(s)
        field11 TYPE x,        "Line Feed
       END OF ty_globalsap.
Int'table to hold ZGEIST Data
TYPES : BEGIN OF ty_zgeist_data,
          rldnr    TYPE rldnr,      "Ledger
          rrcty    TYPE rrcty,      "Record Type
          rvers    TYPE rvers,      "Version
          ryear    TYPE gjahr,      "Fiscal Year
          rbukrs   TYPE bukrs,      "Company Code
          racct    TYPE racct,      "Account Number
          robjnr   TYPE gobjnr_r,   "Object Number for objects
          cobjnr   TYPE gobjnr_c,   "Object Number for transaction
          sobjnr   TYPE gobjnr_s,   "Object Number for partner
          rtcur    TYPE rtcur,      "Currency Key
          runit    TYPE meins,      "Base Unit of Measure
          drcrk    TYPE shkzg,      "Debit/Credit Indicator
          rpmax    TYPE rpmax,      "Period
          rzzstagr TYPE stagr,      "Statistical key figure
          zzaltkt  TYPE altkt,      "Account Number in Group
          zzdatsrc TYPE zdatsrc,    "Data Source code
          zzbewar  TYPE rmvct,      "Transaction Type
          zzblart  TYPE blart,      "Document Type
         zzvbund  TYPE rassc,      "Trading Partner
          rassc    TYPE rassc,       "Trading Partner
          zzvbund  TYPE rassc,      "Trading Partner
          tslvt    TYPE tslvt9,     "Transactional Currency
          kslvt    TYPE kslvt9,     "Group Currency
        END   OF ty_zgeist_data.
Int'table to hold ZGEIST Error Data based on conditions
TYPES : BEGIN OF ty_zgeist_error_data,
          rldnr    TYPE rldnr,      "Ledger
          rrcty    TYPE rrcty,      "Record Type
          rvers    TYPE rvers,      "Version
          ryear    TYPE gjahr,      "Fiscal Year
          rbukrs   TYPE bukrs,      "Company Code
          robjnr   TYPE gobjnr_r,   "Object Number for objects
          cobjnr   TYPE gobjnr_c,   "Object Number for transaction
          sobjnr   TYPE gobjnr_s,   "Object Number for partner
          rtcur    TYPE rtcur,      "Currency Key
          runit    TYPE meins,      "Base Unit of Measure
          drcrk    TYPE shkzg,      "Debit/Credit indicator
          rpmax    TYPE rpmax,      "Period
        END   OF ty_zgeist_error_data.
                     FIELD SYMBOLS
FIELD-SYMBOLS : <fs> TYPE ANY.
                     CONSTANTS
DATA : c_selected    TYPE c VALUE 'X',  "Field for constant value 'X'
       c_y           TYPE c VALUE 'Y',  "For Acc marked for deletion
       c_n           TYPE c VALUE 'N',  "For Acc not marked for deletion
       c_a           TYPE c VALUE 'A',  "For GL Account type Asset
       c_l           TYPE c VALUE 'L',  "For GL Account type Liability
       c_q           TYPE c VALUE 'Q',  "For GL Account type Equity
       c_r           TYPE c VALUE 'R',  "For GL Account type Revenue
       c_e           TYPE c VALUE 'E',  "For GL Account type Expense
       c_t           TYPE c VALUE 'T',  "For GL Account type
*Start of change by 501030559 on 11/18/2005  <DR1K908125>
     c_userid(40)  TYPE c VALUE '[email protected]',
       c_userid(60)  TYPE c ,
*End of change by 501030559 on 11/18/2005  <DR1K908125>
       c_curtp       TYPE curtp VALUE '10', "Currency type
       c_curtp1      TYPE curtp VALUE '30', "Currency type
       c_rassc(5)    TYPE c VALUE 'RASSC',  "Trading Partner
       c_dtsrce(6)   TYPE c VALUE 'DTSRC',  "Data Source
       c_sacct(5)    TYPE c VALUE 'SACCT',  "GL Account
       c_docty(5)    TYPE c VALUE 'DOCTY',  "Document Type
       c_trxtp(5)    TYPE c VALUE 'TRXTP',  "Transaction Type
       c_tradptn(15) TYPE c VALUE 'Trading Partner',  "Trading Partner
       c_datsrc(11)  TYPE c VALUE 'Data Source',      "Data Source
       c_glacc(10)   TYPE c VALUE 'GL Account',       "GL Account
       c_doctyp(13)  TYPE c VALUE 'Document Type',    "Document Type
       c_trantyp(16) TYPE c VALUE 'Transaction Type'. "Transaction Type
                     DATA (Simple Fields)
DATA: w_cnt1         TYPE i, "No Of records in output file COA Code
      w_cnt2         TYPE i, "No Of records in output file Account
      w_cnt3         TYPE i, "No Of records in output file Entity
      w_cnt4         TYPE i, "No Of records in output file attribute
      w_cnt5         TYPE i, "No Of records in output file GL Balance
      w_tot_recs     TYPE i, "TOtal number of records downloaded
      w_date         LIKE sy-datum, "System date
      w_timediff     LIKE sy-uzeit, "Time Difference to GMT
      w_timezone(10) TYPE c,       "Time Difference to GMT
      w_file_count(3) TYPE n,       "File Count
      w_period TYPE poper,          "To hold Period Value
      w_year LIKE t009b-bdatj,      "To hold Fiscal Year Value
      w_outfile       TYPE char64,  "FTPed file path
      w_hdl           TYPE i.       "Handle for FTP
                     INTERNAL TABLES
Intenal table for GL Account details
DATA: BEGIN OF it_gl_detail OCCURS 0,
          saknr      TYPE saknr,
          txt50_skat TYPE txt50_skat,
          xloev      TYPE xloev,
      END OF it_gl_detail.
DATA: it_company_list LIKE bapi0014_1  OCCURS 0 WITH HEADER LINE,
      it_coacode TYPE STANDARD TABLE OF ty_coacode  WITH HEADER LINE,
      it_acctcode TYPE STANDARD TABLE OF ty_acctcode WITH HEADER LINE,
      it_entitycode TYPE STANDARD TABLE OF ty_entitycode
                                        WITH HEADER LINE,
      it_attribcode TYPE STANDARD TABLE OF ty_attribcode
                                        WITH HEADER LINE,
      it_glbal TYPE STANDARD TABLE OF ty_glbal WITH HEADER LINE,
      it_globalsap TYPE STANDARD TABLE OF ty_globalsap WITH HEADER LINE,
      it_t001 TYPE STANDARD TABLE OF t001 WITH HEADER LINE,
      it_zdatsrc TYPE STANDARD TABLE OF zdatsrc_t WITH HEADER LINE,
      it_ska1 TYPE STANDARD TABLE OF ska1 WITH HEADER LINE,
      it_t003 TYPE STANDARD TABLE OF t003 WITH HEADER LINE,
      it_t856 TYPE STANDARD TABLE OF t856 WITH HEADER LINE,
      it_zgeist_data    TYPE STANDARD TABLE OF ty_zgeist_data
                             WITH HEADER LINE,
      it_zgeist_data1   TYPE STANDARD TABLE OF ty_zgeist_data
                             WITH HEADER LINE,
      it_zgeist_data_all TYPE STANDARD TABLE OF zgeist,
      wa_it_zgeist_data1 TYPE ty_zgeist_data,
      wa_it_zgeist_data TYPE zgeist,
      it_zgeist_error_data TYPE STANDARD TABLE OF ty_zgeist_error_data,
      wa_it_zgeist_error_data TYPE ty_zgeist_error_data.
Start of Addition bu C.Ramesh Babu on 10/31/2005     "DR1K907751
                     SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-009.
SELECTION-SCREEN : BEGIN OF LINE,
            COMMENT 1(30) TEXT-006,
            POSITION POS_LOW.
PARAMETERS :       P_USER(30) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
            COMMENT 1(30) TEXT-007,
            POSITION POS_LOW.
PARAMETERS :       P_PWD(30) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
            COMMENT 1(30) TEXT-008,
            POSITION POS_LOW.
PARAMETERS :       P_HOST(64) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
Added by C.Ramesh Babu on 01/06/2006   " DR1K908716
SELECTION-SCREEN : BEGIN OF LINE,
            COMMENT 1(30) TEXT-010,
            POSITION POS_LOW.
SELECT-OPTIONS :   S_EMAIL FOR ADR6-SMTP_ADDR NO INTERVALS.
SELECTION-SCREEN : END OF LINE.
End of Addition by C.Ramesh Babu on 01/06/2006   " DR1K908716
SELECTION-SCREEN END OF BLOCK B1.
-- Password not visible--
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-name = 'P_PWD'.
      screen-invisible = '1'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
End of Addition bu C.Ramesh Babu on 10/31/2005    "DR1K907751
I N I T I A L I Z A T I O N                                         *
INITIALIZATION.
  w_date0(2) = sy-datum4(2).
  w_date2(2) = sy-datum6(2).
  w_date4(4) = sy-datum0(4).
  S_EMAIL-SIGN = 'I'.
  S_EMAIL-OPTION = 'EQ'.
  S_EMAIL-LOW = '[email protected]'.
  APPEND S_EMAIL.
  S_EMAIL-SIGN = 'I'.
  S_EMAIL-OPTION = 'EQ'.
  S_EMAIL-LOW = '[email protected]'.
  APPEND S_EMAIL.
                     START - OF - SELECTION
START-OF-SELECTION.
Geting Company Details
  PERFORM get_company_list.
Geting GL Account Details
  PERFORM get_gl_acc_detail.
Geting GL Balance Details
  PERFORM get_zgeist_data.
                     END - OF - SELECTION
  PERFORM process_coacode.
  PERFORM process_acctcode.
  PERFORM process_entitycode.
  PERFORM process_attribcode.
  PERFORM process_glbal.
  PERFORM process_ftp_file.
  IF NOT it_zgeist_error_data[] IS INITIAL.
    PERFORM write_error_report.
  ENDIF.
*&      Form  GET_COMPANY_LIST
           Form to get Company List                                 *
FORM get_company_list.
  CALL FUNCTION 'BAPI_COMPANY_GETLIST'
    TABLES
      company_list = it_company_list.
ENDFORM.                    "GET_COMPANY_LIST
*&      Form  GET_GL_ACC_DETAIL
      Form to get the GL Account details                            *
FORM get_gl_acc_detail.
  DATA : l_txt50 LIKE skat-txt50,
         l_tabix LIKE sy-tabix.
  SELECT saknr xloev
    INTO TABLE it_gl_detail
    FROM ska1
    WHERE ktopl = 'G001'
Start of Change by C.Ramesh Babu on 11/04/2005   "DR1K907900
   AND   ( saknr GE '1000000000' AND saknr LE '4000000000' ).
    AND   ( saknr GE '1000000000' AND saknr LE '4500000000' ).
End of Change by C.Ramesh Babu on 11/04/2005   "DR1K907900
  LOOP AT it_gl_detail.
    l_tabix = sy-tabix.
    SELECT SINGLE txt50
      INTO l_txt50
      FROM skat
      WHERE spras = 'EN'
      AND   ktopl = 'G001'
      AND   saknr = it_gl_detail-saknr.
    it_gl_detail-txt50_skat = l_txt50.
    MODIFY it_gl_detail INDEX l_tabix.
    CLEAR l_txt50.
  ENDLOOP.
ENDFORM.                    "GET_GL_ACC_DETAIL
*&      Form  PROCESS_COACODE
Form to Populate COA data to Output internal table  IT_COACODE *
FORM process_coacode.
  it_coacode-coa_code          =  text-023.     "GLOBAL.
  it_coacode-coa_description   =  text-022.     "Global SAP for ERC
  it_coacode-field11           =  '11'.
  APPEND it_coacode.
  CLEAR it_coacode.
ENDFORM.                    "PROCESS_COACODE
*&      Form  PROCESS_ACCTCODE
Form to Populate Account data to Output Internal table IT_ACCTCODE *
FORM process_acctcode.
  DATA:l_saknr(10).
  DATA : it_gl_detail2 LIKE it_gl_detail OCCURS 0 WITH HEADER LINE.
  IF NOT it_gl_detail[] IS INITIAL.
    it_gl_detail2[] = it_gl_detail[].
    SORT it_gl_detail2 BY saknr.
    DELETE ADJACENT DUPLICATES FROM it_gl_detail2 COMPARING saknr.
  ENDIF.
  IF NOT it_gl_detail2[] IS INITIAL.
    LOOP AT it_gl_detail2.
      MOVE it_gl_detail2-saknr      TO it_acctcode-act_code.
      MOVE it_gl_detail2-txt50_skat TO it_acctcode-act_desc.
Check GL Account is marked for deletion or not
      IF it_gl_detail2-xloev     = c_selected.
        it_acctcode-act_act_flag = c_n.
      ELSE.
        it_acctcode-act_act_flag = c_y.
      ENDIF.
Determine GL Account type based on GL account number
      l_saknr = it_gl_detail2-saknr.
      SHIFT l_saknr LEFT DELETING LEADING '0'.
      IF l_saknr CP '1*'.
        it_acctcode-glact_type = c_a.
      ELSEIF l_saknr CP '2*'.
        it_acctcode-glact_type = c_l.
      ELSEIF l_saknr CP '3*'.
        it_acctcode-glact_type = c_q.
Start of Addition by C.Ramesh Babu on 11/04/2005   "DR1K907900
      ELSEIF l_saknr CP '4*'.
        it_acctcode-glact_type = c_l.
End of Addition by C.Ramesh Babu on 11/04/2005   "DR1K907900
      ELSEIF l_saknr CP '5*'.
        it_acctcode-glact_type = c_r.
      ELSEIF l_saknr CP '6*'.
        it_acctcode-glact_type = c_e.
      ELSEIF l_saknr CP '7*'.
        it_acctcode-glact_type = c_t.
      ENDIF.
      it_acctcode-fi_line      = 'CDR'.
      it_acctcode-coa_code     = 'GLOBAL'.
      it_acctcode-act_defcode  = '001'.
      it_acctcode-field11      = '11'.
      APPEND :it_acctcode.
      CLEAR  :it_acctcode,it_gl_detail2.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "PROCESS_ACCTCODE
*&      Form  PROCESS_ENTITYCODE
  Form to Populate Entiti data to Output file internal table        *
FORM process_entitycode.
  IF NOT it_company_list[] IS INITIAL.
    LOOP AT it_company_list.
      SHIFT it_company_list-company LEFT DELETING LEADING '0'.
      MOVE it_company_list-company TO it_entitycode-entity_code.
      MOVE it_company_list-name1   TO it_entitycode-com_desc.
      it_entitycode-coa_code    = 'GLOBAL'.
      it_entitycode-field11     = '11'.
      APPEND it_entitycode.
      CLEAR : it_company_list,it_entitycode.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "PROCESS_ENTITYCODE
*&      Form  PROCESS_ATTRIBCODE
    Form to Populate Attribute data to output file internal table   *
FORM process_attribcode.
Getting data from T001.
  SELECT * FROM t001 INTO TABLE it_t001.
  LOOP AT it_t001.
    MOVE c_rassc TO it_attribcode-attrib_code.
    MOVE it_t001-bukrs TO  it_attribcode-attrib_value.
    MOVE c_tradptn TO it_attribcode-attrib_desc.
    it_attribcode-field11 = '11'.
    APPEND it_attribcode.
    CLEAR it_attribcode.
  ENDLOOP.
Getting data from table ZDATSRC_T.
  SELECT * FROM zdatsrc_t INTO TABLE it_zdatsrc.
  LOOP AT it_zdatsrc.
    MOVE c_dtsrce TO it_attribcode-attrib_code.
    MOVE it_zdatsrc-zdatsrc TO  it_attribcode-attrib_value.
    MOVE c_datsrc TO it_attribcode-attrib_desc.
    it_attribcode-field11 = '11'.
    APPEND it_attribcode.
    CLEAR it_attribcode.
  ENDLOOP.
Getting data from table SKA1.
  SELECT * FROM ska1 INTO TABLE it_ska1.
  LOOP AT it_ska1.
    MOVE c_sacct TO it_attribcode-attrib_code.
    MOVE it_ska1-saknr TO  it_attribcode-attrib_value.
    MOVE c_glacc TO it_attribcode-attrib_desc.
    it_attribcode-field11 = '11'.
    APPEND it_attribcode.
    CLEAR it_attribcode.
  ENDLOOP.
Getting data from table T003.
  SELECT * FROM t003 INTO TABLE it_t003.
  LOOP AT it_t003.
    MOVE c_docty TO it_attribcode-attrib_code.
    MOVE it_t003-blart TO  it_attribcode-attrib_value.
    MOVE c_doctyp TO it_attribcode-attrib_desc.
    it_attribcode-field11 = '11'.
    APPEND it_attribcode.
    CLEAR it_attribcode.
  ENDLOOP.
Getting data from table T856.
  SELECT * FROM t856 INTO TABLE it_t856.
  LOOP AT it_t856.
    MOVE c_trxtp TO it_attribcode-attrib_code.
    MOVE it_t856-trtyp TO  it_attribcode-attrib_value.
    MOVE c_trantyp TO it_attribcode-attrib_desc.
    it_attribcode-field11 = '11'.
    APPEND it_attribcode.
    CLEAR it_attribcode.
  ENDLOOP.
ENDFORM.                    "PROCESS_ATTRIBCODE
*&      Form  PROCESS_GLBAL
  Form to Populate GL Balance data to Output file internal table    *
FORM process_glbal.
  DATA : l_ctran_amt(21),
         l_cusd_amt(21).
  LOOP AT it_zgeist_data INTO wa_it_zgeist_data1.
*Start of change by 501030559 on 11/04/2005
   it_glbal-gl_reccode = '04'.
     it_glbal-gl_reccode = '05'.
*End of change by 501030559 on11/04/2005
    it_glbal-gl_entity  = wa_it_zgeist_data1-rbukrs.
    it_glbal-gl_accnum  = wa_it_zgeist_data1-zzaltkt.
    it_glbal-site       = 'ERC'.
    it_glbal-currency_type = wa_it_zgeist_data1-rtcur.
    it_glbal-year = w_year.
    it_glbal-month = w_period.
    it_glbal-as_of_date = w_date.
    l_ctran_amt = wa_it_zgeist_data1-tslvt.
Put sign to left side of the value
    IF l_ctran_amt LT 0.
      TRANSLATE l_ctran_amt USING ' 0'.
      CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
        CHANGING
          value = l_ctran_amt.
    ELSE.
Trailing Zero's to the value
      SHIFT l_ctran_amt RIGHT DELETING TRAILING space.
      TRANSLATE l_ctran_amt USING ' 0'.
      REPLACE '0' WITH '' INTO l_ctran_amt.
    ENDIF.
    it_glbal-tran_cur_amt = l_ctran_amt.
    l_cusd_amt = wa_it_zgeist_data1-kslvt.
Put Sign to leftside of the value
    IF l_cusd_amt LT 0.
      TRANSLATE l_cusd_amt USING ' 0'.
      CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
        CHANGING
          value = l_cusd_amt.
    ELSE.
Trailing Zero's to the value
      SHIFT l_cusd_amt RIGHT DELETING  TRAILING space.
      TRANSLATE l_cusd_amt USING ' 0'.
      REPLACE '0' WITH '' INTO l_cusd_amt.
    ENDIF.
    it_glbal-usd_amount = l_cusd_amt.
    it_glbal-racct   = wa_it_zgeist_data1-racct.
    it_glbal-zzbewar = wa_it_zgeist_data1-zzbewar.
    it_glbal-zzdatsrc = wa_it_zgeist_data1-zzdatsrc.
    it_glbal-zzblart  = wa_it_zgeist_data1-zzblart.
   it_glbal-zzvbund  = wa_it_zgeist_data1-zzvbund.
    it_glbal-rassc  = wa_it_zgeist_data1-rassc.
    it_glbal-field11 = '11'.
    APPEND it_glbal.
    CLEAR : wa_it_zgeist_data1, it_glbal.
  ENDLOOP.
ENDFORM.                    "PROCESS_GLBAL
*&      Form  PROCESS_GLOBALSAP
   Form to Populate COntrol data to Output file internal table      *
FORM process_globalsap.
  DATA :l_total(9),
Added by C.Ramesh Babu on 01/06/2006   " DR1K908716
        l_len(3) type c.
End of Addition by C.Ramesh Babu on 01/06/2006   " DR1K908716
Logic to get Time Zone
  w_timediff  = sy-tzone.
  IF sy-tzone LT '0'.
    w_timediff = sy-tzone * -1.
    CONCATENATE 'GMT-' w_timediff(4) INTO w_timezone.
  ELSE.
    w_timediff = sy-tzone.
    CONCATENATE 'GMT+' w_timediff(4) INTO w_timezone.
  ENDIF.
Commented by C.Ramesh Babu on 01/06/2006   " DR1K908716
**Start of change by 501030559 on 11/18/2005  <DR1K908125>
CONCATENATE '[email protected]' ',' '[email protected]'
                                 INTO c_userid .
**End of change by 501030559 on 11/18/2005  <DR1K908125>
End of Comment by C.Ramesh Babu on 01/06/2006   " DR1K908716
Added by C.Ramesh Babu on 01/06/2006   " DR1K908716
  LOOP AT S_EMAIL.
    CONCATENATE C_USERID S_EMAIL-LOW ',' INTO C_USERID.
  ENDLOOP.
  l_len = strlen( c_userid ).
  l_len = l_len - 1.
  c_userid = c_userid+0(l_len).
End of Addition by C.Ramesh Babu on 01/06/2006   " DR1K908716
  it_globalsap-clnt_name    = 'ERC'.
  it_globalsap-source_name  = 'GLOBALSAP'.
  it_globalsap-as_of_date   = w_date.
  it_globalsap-time_stamp   = sy-uzeit.
  it_globalsap-time_zone    = w_timezone.
  it_globalsap-num_of_files = w_file_count.
  MOVE w_tot_recs TO l_total.
  SHIFT l_total RIGHT DELETING TRAILING space.
  TRANSLATE l_total USING ' 0'.
  it_globalsap-num_of_records = l_total.
  it_globalsap-user_ids = c_userid.
  it_globalsap-field11  = '11'.
  APPEND it_globalsap.
  CLEAR it_globalsap.
ENDFORM.                  "PROCESS_GLOBALSAP
*&      Form  COUNT_RECORDS
Form to count total number of records Downlaoded                   *
FORM count_records.
  DESCRIBE TABLE it_coacode    LINES w_cnt1.
  DESCRIBE TABLE it_acctcode   LINES w_cnt2.
  DESCRIBE TABLE it_entitycode LINES w_cnt3.
  DESCRIBE TABLE it_attribcode LINES w_cnt4.
  DESCRIBE TABLE it_glbal      LINES w_cnt5.
  w_tot_recs = w_cnt1 + w_cnt2 + w_cnt3 + w_cnt4 + w_cnt5.
ENDFORM.                    "COUNT_RECORDS
*&      Form  get_zgeist_data
Form used to fetch data from ZGEIST table for the GL BAL file
FORM get_zgeist_data .
  PERFORM get_period_year.
  SELECT * INTO TABLE it_zgeist_data_all
           FROM zgeist
           WHERE rldnr  EQ 'GG'
           AND   ryear  EQ w_year
           AND   rrcty  EQ 0
           AND   rpmax  EQ '016'
Start of Change by C.Ramesh Babu on 11/04/2005   "DR1K907900
          AND  ( zzaltkt GE '1000000000' AND zzaltkt LE '4000000000' )
           AND  ( zzaltkt GE '1000000000' AND zzaltkt LE '4500000000' )
End of Change by C.Ramesh Babu on 11/04/2005   "DR1K907900
           AND   rzzstagr = space.
  sort it_zgeist_data_all by rbukrs rldnr zzaltkt racct
                            zzdatsrc zzbewar zzblart rtcur zzvbund.
                             zzdatsrc zzbewar zzblart rtcur rassc.
  LOOP AT it_zgeist_data_all INTO wa_it_zgeist_data.
    IF wa_it_zgeist_data-zzaltkt EQ space.
      wa_it_zgeist_error_data-rldnr = wa_it_zgeist_data-rldnr.
      wa_it_zgeist_error_data-rrcty = wa_it_zgeist_data-rrcty.
      wa_it_zgeist_error_data-rvers = wa_it_zgeist_data-rvers.
      wa_it_zgeist_error_data-ryear = wa_it_zgeist_data-ryear.
      wa_it_zgeist_error_data-rbukrs = wa_it_zgeist_data-rbukrs.
      wa_it_zgeist_error_data-robjnr = wa_it_zgeist_data-robjnr.
      wa_it_zgeist_error_data-cobjnr = wa_it_zgeist_data-cobjnr.
      wa_it_zgeist_error_data-sobjnr = wa_it_zgeist_data-sobjnr.
      wa_it_zgeist_error_data-rtcur = wa_it_zgeist_data-rtcur.
      wa_it_zgeist_error_data-runit = wa_it_zgeist_data-runit.
      wa_it_zgeist_error_data-drcrk = wa_it_zgeist_data-drcrk.
      wa_it_zgeist_error_data-rpmax = wa_it_zgeist_data-rpmax.
      APPEND wa_it_zgeist_error_data TO it_zgeist_error_data.
    ELSE.
      it_zgeist_data1-rbukrs   = wa_it_zgeist_data-rbukrs.
      it_zgeist_data1-rldnr    = wa_it_zgeist_data-rldnr.
      it_zgeist_data1-zzaltkt  = wa_it_zgeist_data-zzaltkt.
      it_zgeist_data1-racct    = wa_it_zgeist_data-racct.
      it_zgeist_data1-zzdatsrc = wa_it_zgeist_data-zzdatsrc.
      it_zgeist_data1-zzbewar  = wa_it_zgeist_data-zzbewar.
      it_zgeist_data1-zzblart  = wa_it_zgeist_data-zzblart.
     it_zgeist_data1-zzvbund  = wa_it_zgeist_data-zzvbund.
      it_zgeist_data1-rassc  = wa_it_zgeist_data-rassc.
      it_zgeist_data1-rtcur    = wa_it_zgeist_data-rtcur.
      PERFORM get_tslvt_kslvt_values USING w_period.
      COLLECT it_zgeist_data1.
    ENDIF.
    CLEAR : wa_it_zgeist_data, wa_it_zgeist_error_data,
            it_zgeist_data1.
  ENDLOOP.
  it_zgeist_data[] = it_zgeist_data1[].
ENDFORM.                    " get_zgeist_data
*&      Form  write_error_report
Form used to display error data for the GL BAL fetched data
FORM write_error_report .
  DATA : l_text(80) TYPE c.
  CASE w_period.
    WHEN '001' OR '01'.
      l_text = text-e01.
    WHEN '002' OR '02'.
      l_text = text-e02.
    WHEN '003' OR '03'.
      l_text = text-e03.
    WHEN '004' OR '04'.
      l_text = text-e04.
    WHEN '005' OR '05'.
      l_text = text-e05.
    WHEN '006' OR '06'.
      l_text = text-e06.
    WHEN '007' OR '07'.
      l_text = text-e07.
    WHEN '008' OR '08'.
      l_text = text-e08.
    WHEN '009' OR '09'.
      l_text = text-e09.
    WHEN '010' OR '10'.
      l_text = text-e10.
    WHEN '011' OR '11'.
      l_text = text-e11.
    WHEN '012' OR '12'.
      l_text = text-e12.
    WHEN '013' OR '13'.
      l_text = text-e13.
    WHEN '014' OR '14'.
      l_text = text-e14.
    WHEN '015' OR '15'.
      l_text = text-e15.
    WHEN '016' OR '16'.
      l_text = text-e16.
  ENDCASE.
  SKIP 2.
  WRITE:/45 text-h01 COLOR COL_HEADING.
  SKIP 2.
  FORMAT COLOR 4.
  WRITE:/(234) sy-uline.
  WRITE:/1   sy-vline,
         2   text-h02,
         9   sy-vline,
         10  text-h03,
         19  sy-vline,
         20  text-h04,
         28  sy-vline,
         29  text-h05,
         41  sy-vline,
         42  text-h06,
         49  sy-vline,
         50  text-h07,
         69  sy-vline,
         70  text-h08,
         89  sy-vline,
         90  text-h09,
         109 sy-vline,
         110 text-h10,
         119 sy-vline,
         120 text-h11,
         130 sy-vline,
         131 text-h12,
         144 sy-vline,
         145 text-h13,
         152 sy-vline,
         153 text-h14,
         234 sy-vline.
  WRITE:/(234) sy-uline.
  FORMAT COLOR OFF.
  LOOP AT it_zgeist_error_data INTO wa_it_zgeist_error_data.
    FORMAT COLOR 2.
    WRITE:/1   sy-vline,
           4   wa_it_zgeist_error_data-rldnr,
           9   sy-vline,
           13  wa_it_zgeist_error_data-rrcty,
           19  sy-vline,
           22  wa_it_zgeist_error_data-rvers,
           28  sy-vline,
           32  wa_it_zgeist_error_data-ryear,
           41  sy-vline,
           42  wa_it_zgeist_error_data-rbukrs,
           49  sy-vline,
           50  wa_it_zgeist_error_data-robjnr,
           69  sy-vline,
           70  wa_it_zgeist_error_data-cobjnr,
           89  sy-vline,
           90  wa_it_zgeist_error_data-sobjnr,
           109 sy-vline,
           112 wa_it_zgeist_error_data-rtcur,
           119 sy-vline,
           123 wa_it_zgeist_error_data-runit,
           130 sy-vline,
           135 wa_it_zgeist_error_data-drcrk,
           144 sy-vline,
           147 wa_it_zgeist_error_data-rpmax,
           152 sy-vline,
           153 l_text,
           234 sy-vline.
    FORMAT COLOR OFF.
  ENDLOOP.
  WRITE:/(234) sy-uline.
ENDFORM.                    " write_error_report
*&      Form  get_tslvt_kslvt_values
Form used to get TSLxx & KSLxx values for the period fetched
FORM get_tslvt_kslvt_values USING period.
FIELD-SYMBOLS : <f1> TYPE ANY,
                 <f2> TYPE ANY.
DATA : l_tslvt_val(25) VALUE 'wa_it_zgeist_data-tsl',
        l_kslvt_val(25) VALUE 'wa_it_zgeist_data-ksl',
        l_tslvt TYPE tslvt9,
        l_kslvt TYPE kslvt9,
        l_period TYPE poper.
  clear l_period.
  l_period = period.
  DO l_period TIMES.
*-Start of Change on 10/28/2005
   IF l_period(2) = '00'.
*-End of Change on 10/28/2005
      CONCATENATE  l_tslvt_val  l_period+1(2) INTO  l_tslvt_val.
      CONCATENATE   l_kslvt_val l_period+1(2) INTO  l_kslvt_val.
*-Start of Change on 10/28/2005
   ELSE.
     CONCATENATE   l_tslvt_val  l_period INTO  l_tslvt_val.
     CONCATENATE   l_kslvt_val  l_period INTO  l_kslvt_val.
   ENDIF.
*-End of Change on 10/28/2005
    ASSIGN (l_tslvt_val) TO <f1>.
    l_tslvt = <f1>.
    it_zgeist_data1-tslvt = it_zgeist_data1-tslvt + l_tslvt.
    ASSIGN (l_kslvt_val) TO <f2>.
    l_kslvt = <f2>.
    it_zgeist_data1-kslvt = it_zgeist_data1-kslvt + l_kslvt.
    l_period = l_period - 1.
    clear : l_tslvt, l_kslvt, l_tslvt_val, l_kslvt_val.
    l_tslvt_val = 'wa_it_zgeist_data-tsl'.
    l_kslvt_val = 'wa_it_zgeist_data-ksl'.
    if l_period = 0.
      exit.
    endif.
  ENDDO.
ENDFORM.                    "get_tslvt_kslvt_values
*&      Form  process_ftp_file
Form used to connect & disconnect to Informatica Server using FTP
Also, used to transfer files to the Informatica location
-->  p1        text
<--  p2        text
FORM process_ftp_file .
Start of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
DATA: l_user(30) TYPE c VALUE 'Phoenix',
       l_pwd(30)  TYPE c VALUE 'resurr3c7',
       l_host(64) TYPE c VALUE '3.177.39.54',
End of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
  DATA: l_slen     TYPE i,
        l_error,
        l_pwd(30)  TYPE c.
  CONSTANTS: c_dest TYPE rfcdes-rfcdest VALUE 'SAPFTP',
             c_key  TYPE i              VALUE 26101957.
  l_error = 0.
connect to ftp server
  l_pwd = p_pwd.
  l_slen = STRLEN( l_pwd ).
  CALL FUNCTION 'HTTP_SCRAMBLE'
    EXPORTING
      SOURCE      = l_pwd
      sourcelen   = l_slen
      key         = c_key
    IMPORTING
      destination = l_pwd.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      text = 'Connect to FTP Server'.
To Connect to the Server using FTP
  CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
Start of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
     user            = l_user
End of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
      user            = p_user
      password        = l_pwd
Start of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
     host            = l_host
End of Comment by C.Ramesh Babu on 10/31/2005   "DR1K907751
      host            = p_host
      rfc_destination = c_dest
    IMPORTING
      handle          = w_hdl
    EXCEPTIONS
      OTHERS          = 1.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CLEAR : w_outfile, w_file_count.
  MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_COACODE' TO w_outfile.
  PERFORM download_to_ftp TABLES it_coacode USING w_outfile.
  w_file_count = w_file_count + 1.
  CLEAR : w_outfile.
  MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ACCTCODE' TO w_outfile.
  PERFORM download_to_ftp TABLES it_acctcode USING w_outfile.
  w_file_count = w_file_count + 1.
  CLEAR : w_outfile.
  MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ENTITYCODE' TO w_outfile.
  PERFORM download_to_ftp TABLES it_entitycode USING w_outfile.
  w_file_count = w_file_count + 1.
  CLEAR : w_outfile.
  MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ATTRIBCODE' TO w_outfile.
  PERFORM download_to_ftp TABLES it_attribcode USING w_outfile.
  w_file_count = w_file_count + 1.
  CLEAR : w_outfile.
  MOVE 'ERC/GLOBALSAP/ERC_GLOBALSAP_GLBAL' TO w_outfile.
  PERFORM download_to_ftp TABLES it_glbal USING w_outfile.
  w_file_count = w_file_count + 1.
  CLEAR : w_outfile, w_tot_recs.
  PERFORM count_records.
  PERFORM process_globalsap.
  MOVE 'ERC/GLOBALSAP/C_ERC_GLOBALSAP' TO w_outfile.
  PERFORM download_to_ftp TABLES it_globalsap USING w_outfile.
To disconnect the FTP
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle = w_hdl.
To disconnect the RFC Connection
  CALL FUNCTION 'RFC_CONNECTION_CLOSE'
    EXPORTING
      destination = c_dest
    EXCEPTIONS
      OTHERS      = 1.
ENDFORM.                    " process_ftp_file
*&      Form  download_to_ftp
Form to put the files in the Informatica Location using FTP
Path is ERC\GLOBALSAP\<filename>
FORM download_to_ftp TABLES it_tab
                     USING l_string TYPE char64.
  CALL FUNCTION 'FTP_R3_TO_SERVER'
    EXPORTING
      handle         = w_hdl
      fname          = l_string
      character_mode = 'X'
    TABLES
      text           = it_tab[]
    EXCEPTIONS
      tcpip_error    = 1
      command_error  = 2
      data_error     = 3
      OTHERS         = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
            RAISING invalid_output_file.
  ENDIF.
ENDFORM.                    " download_to_ftp
*&      Form  get_period_year
Form to fill the Period & Year based on the Sy-datum
FORM get_period_year .
  DATA : l_month(2) TYPE c,
         l_day(2)   TYPE c,
         l_year(4)  TYPE c.
  l_year  = sy-datum+0(4).
  l_month = sy-datum+4(2).
  l_day   = sy-datum+6(2).
  CASE l_month.
    WHEN '01'.
      IF l_day <= '15'.
        w_period = '12'.
        w_year = l_year - 1.
      ELSE.
        w_period = '1'.
        w_year = l_year.
      ENDIF.
    WHEN '02'.
      IF l_day <= '15'.
        w_period = '1'.
        w_year = l_year.
      ELSE.
        w_period = '2'.
        w_year = l_year.
      ENDIF.
    WHEN '03'.
      IF l_day <= '15'.
        w_period = '2'.
        w_year = l_year.
      ELSE.
        w_period = '3'.
        w_year = l_year.
      ENDIF.
    WHEN '04'.
      IF l_day <= '15'.
        w_period = '3'.
        w_year = l_year.
      ELSE.
        w_period = '4'.
        w_year = l_year.
      ENDIF.
    WHEN '05'.
      IF l_day <= '15'.
        w_period = '4'.
        w_year = l_year.
      ELSE.
        w_period = '5'.
        w_year = l_year.
      ENDIF.
    WHEN '06'.
      IF l_day <= '15'.
        w_period = '5'.
        w_year = l_year.
      ELSE.
        w_period = '6'.
        w_year = l_year.
      ENDIF.
    WHEN '07'.
      IF l_day <= '15'.
        w_period = '6'.
        w_year = l_year.
      ELSE.
        w_period = '7'.
        w_year = l_year.
      ENDIF.
    WHEN '08'.
      IF l_day <= '15'.
        w_period = '7'.
        w_year = l_year.
      ELSE.
        w_period = '8'.
        w_year = l_year.
      ENDIF.
    WHEN '09'.
      IF l_day <= '15'.
        w_period = '8'.
        w_year = l_year.
      ELSE.
        w_period = '9'.
        w_year = l_year.
      ENDIF.
    WHEN '10'.
      IF l_day <= '15'.
        w_period = '9'.
        w_year = l_year.
      ELSE.
        w_period = '10'.
        w_year = l_year.
      ENDIF.
    WHEN '11'.
      IF l_day <= '15'.
        w_period = '10'.
        w_year = l_year.
      ELSE.
        w_period = '11'.
        w_year = l_year.
      ENDIF.
    WHEN '12'.
      IF l_day <= '15'.
        w_period = '11'.
        w_year = l_year.
      ELSE.
        w_period = '12'.
        w_year = l_year.
      ENDIF.
  ENDCASE.
ENDFORM.                    " get_period_year

Similar Messages

  • How to use FTP_COMMAND to put a file in the target system

    Hi All,
    I have the requirement to put an excel file from apllication server to another remote system for this i am using the function modules
    1) FTP_CONNECT to connect to the sourece as well as the destination systems  --- Here i am able to hit the both systems.
    2) for sending the data to the target system i am using FTP_COMMAND by passing the 'put' statement along with the soruce and destinations  for the command parameter.
    See the bellow code
    CONCATENATE 'put' v_fname '
    ' 'wbrs1\' folder
    into cmd separated by space.
    CALL FUNCTION 'FTP_COMMAND'
      EXPORTING
       HANDLE                = dhdl
        command              = cmd
       COMPRESS              = 'N'
      VERIFY                =
      RFC_DESTINATION       =
    IMPORTING
      FILESIZE              =
      FILEDATE              =
      FILETIME              =
      tables
        data                  = result
    EXCEPTIONS
       TCPIP_ERROR           = 1
       COMMAND_ERROR         = 2
       DATA_ERROR            = 3
       OTHERS                = 4
    Here v_name is the file path and name in the application server suppose say :
    /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS
    and wbrs1 is the target system and 'Waynesboro DFS' is the folder name i ma passing to the command .
    Also I tried with the following statement
    CONCATENATE 'put' v_fname '
    ' dhost  folder
    into cmd separated by space.
    Here v_name is the file path and name in the application server suppose say :
    /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS,
    Dhost is wbrs1.wb.na.webdti.com
    And Waynesboro DFS is the folder .
    Here i am getting the error as invalid argument.
    See the bellow messages from result internal table.
    put /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS
    wbrs1\ Waynesboro DFS
    open /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS errno 22: Invalid argument
    Please let me know how i can resolve this problem and how can I put this file in the destination system.
    Thanks in advance.
    Regards,
    Venkat

    check this code....here data is transferred from SAP to Informatica box..
    REPORT zfo_phoenix_acc_reconciliation NO STANDARD PAGE HEADING
                                                    MESSAGE-ID zz
                                                    LINE-SIZE  255
                                                    LINE-COUNT 65.
                            PROGRAM DECLARATION
    PROGRAM ID            : ZFO_PHOENIX_ACC_RECONCILIATION
    DESCRIPTION           : Phoneix Account Reconcilation Program-Feed
                            Balance sheet account balances from GL
                            3 files needed to be enhanced. The files are " Master
                  Attribute File" & "Transaction File(GL Balance)". For
                  Master Attribute File, data needs to be retrieved from
                  T001, ZDATSRC_T, SKA1, T003, T856. The corresponding
                  data from all the tables is downloaded into file
                  according to the condition specified. For Transaction
                  File, data needs to be retrieved from ZGEIST based on
                  Ledger(GG), Record Type(0), Fiscal Year, Period(016).
                  Then the current period is used to determine which TSLxx
                  & KSLxx needs to be used. Also, the conditions are
                  specified in specs which have been used accordingly.
                  The final data fetched will need to processed as files
                  which neednot be downloaded to Presentation/Application
                  server. Instead the files are been FTPed to the
                  Informatica Server using FTP. The location where the
                  files need to be located is ERC\GLOBALSAP.
                         TABLES
    TABLES : ADR6.
                         TYPES
    Output File - Master COA(Chart of Account)
    TYPES : BEGIN OF ty_coacode ,
             coa_code(20),         "COA Code
             coa_description(50),  "COA Description
             field11 TYPE x,       "Line Feed
             END OF ty_coacode.
    Output File - Master Account
    TYPES : BEGIN OF ty_acctcode ,
             act_code(20),         "GL Account Number
             act_desc(60),         "GL Account Description
             act_act_flag(1),      "Account marked for deletion indicator
             glact_type(1),        "GL Account type
             fi_line(20),          "Corporate Financial Statement Line
             coa_code(20),         "COA Code
             act_defcode(3),       "Account Defination Code
             field11 TYPE x,       "Line Feed
           END OF ty_acctcode.
    Output File - Master Entity
    TYPES : BEGIN OF ty_entitycode,
             entity_code(12),     "Entity Code
             com_desc(40),        "Company Name
             coa_code(20),        "COA Code
             field11 TYPE x,      "Line Feed
            END OF ty_entitycode.
    Output File - Master Attribute
    TYPES : BEGIN OF ty_attribcode,
             attrib_code(5),       "Attribute Code
             attrib_value(20),     "Attribute Value
             attrib_desc(60),      "Attribute Description
             field11 TYPE x,       "Line Feed
            END OF ty_attribcode.
    Output File - Transaction GL Balance
    TYPES : BEGIN OF ty_glbal,
             gl_reccode(2),        "GL Reconciliation Code
             gl_entity(12),        "GL Entity - Company Code
             gl_accnum(20),        "Gl Group Account Number
             site(4),              "Site
             currency_type(6),     "Transaction Currency Code
             year(4) TYPE n,       "Year
             month(2) TYPE n,      "Month
             as_of_date(8),        "Date Account Balance
             tran_cur_amt(21),     "Transaction Currency Amount
             usd_amount(21),       "USD Amount
             racct(20),            "GL Account Number
             zzbewar(20),          "Consolidation Transaction Type
             zzdatsrc(20),         "Data Source
             zzblart(20),          "Document Type
             rassc(20),          "Trading Partner
             field1(20),           "Attribute field1
             field2(20),           "Attribute field2
             field3(20),           "Attribute field3
             field4(20),           "Attribute field4
             field5(20),           "Attribute field5
             field11 TYPE x,       "Line Feed
           END OF ty_glbal.
    Output File - Control
    TYPES :BEGIN OF ty_globalsap,
            clnt_name(6),          "Client Name
            source_name(12),       "Source Name
            as_of_date(8),         "AS of Date
            time_stamp(6),         "Time Stamp
            time_zone(8),          "Time Zone
            num_of_files(3),       "Number of Files
            num_of_records(9),     "Number of Records
            user_ids(60),          "User ID(s)
            field11 TYPE x,        "Line Feed
           END OF ty_globalsap.
    Int'table to hold ZGEIST Data
    TYPES : BEGIN OF ty_zgeist_data,
              rldnr    TYPE rldnr,      "Ledger
              rrcty    TYPE rrcty,      "Record Type
              rvers    TYPE rvers,      "Version
              ryear    TYPE gjahr,      "Fiscal Year
              rbukrs   TYPE bukrs,      "Company Code
              racct    TYPE racct,      "Account Number
              robjnr   TYPE gobjnr_r,   "Object Number for objects
              cobjnr   TYPE gobjnr_c,   "Object Number for transaction
              sobjnr   TYPE gobjnr_s,   "Object Number for partner
              rtcur    TYPE rtcur,      "Currency Key
              runit    TYPE meins,      "Base Unit of Measure
              drcrk    TYPE shkzg,      "Debit/Credit Indicator
              rpmax    TYPE rpmax,      "Period
              rzzstagr TYPE stagr,      "Statistical key figure
              zzaltkt  TYPE altkt,      "Account Number in Group
              zzdatsrc TYPE zdatsrc,    "Data Source code
              zzbewar  TYPE rmvct,      "Transaction Type
              zzblart  TYPE blart,      "Document Type
              rassc    TYPE rassc,       "Trading Partner
              zzvbund  TYPE rassc,      "Trading Partner
              tslvt    TYPE tslvt9,     "Transactional Currency
              kslvt    TYPE kslvt9,     "Group Currency
            END   OF ty_zgeist_data.
    Int'table to hold ZGEIST Error Data based on conditions
    TYPES : BEGIN OF ty_zgeist_error_data,
              rldnr    TYPE rldnr,      "Ledger
              rrcty    TYPE rrcty,      "Record Type
              rvers    TYPE rvers,      "Version
              ryear    TYPE gjahr,      "Fiscal Year
              rbukrs   TYPE bukrs,      "Company Code
              robjnr   TYPE gobjnr_r,   "Object Number for objects
              cobjnr   TYPE gobjnr_c,   "Object Number for transaction
              sobjnr   TYPE gobjnr_s,   "Object Number for partner
              rtcur    TYPE rtcur,      "Currency Key
              runit    TYPE meins,      "Base Unit of Measure
              drcrk    TYPE shkzg,      "Debit/Credit indicator
              rpmax    TYPE rpmax,      "Period
            END   OF ty_zgeist_error_data.
                         FIELD SYMBOLS
    FIELD-SYMBOLS : <fs> TYPE ANY.
                         CONSTANTS
    DATA : c_selected    TYPE c VALUE 'X',  "Field for constant value 'X'
           c_y           TYPE c VALUE 'Y',  "For Acc marked for deletion
           c_n           TYPE c VALUE 'N',  "For Acc not marked for deletion
           c_a           TYPE c VALUE 'A',  "For GL Account type Asset
           c_l           TYPE c VALUE 'L',  "For GL Account type Liability
           c_q           TYPE c VALUE 'Q',  "For GL Account type Equity
           c_r           TYPE c VALUE 'R',  "For GL Account type Revenue
           c_e           TYPE c VALUE 'E',  "For GL Account type Expense
           c_t           TYPE c VALUE 'T',  "For GL Account type
           c_userid(60)  TYPE c ,
           c_curtp       TYPE curtp VALUE '10', "Currency type
           c_curtp1      TYPE curtp VALUE '30', "Currency type
           c_rassc(5)    TYPE c VALUE 'RASSC',  "Trading Partner
           c_dtsrce(6)   TYPE c VALUE 'DTSRC',  "Data Source
           c_sacct(5)    TYPE c VALUE 'SACCT',  "GL Account
           c_docty(5)    TYPE c VALUE 'DOCTY',  "Document Type
           c_trxtp(5)    TYPE c VALUE 'TRXTP',  "Transaction Type
           c_tradptn(15) TYPE c VALUE 'Trading Partner',  "Trading Partner
           c_datsrc(11)  TYPE c VALUE 'Data Source',      "Data Source
           c_glacc(10)   TYPE c VALUE 'GL Account',       "GL Account
           c_doctyp(13)  TYPE c VALUE 'Document Type',    "Document Type
           c_trantyp(16) TYPE c VALUE 'Transaction Type'. "Transaction Type
                         DATA (Simple Fields)
    DATA: w_cnt1         TYPE i, "No Of records in output file COA Code
          w_cnt2         TYPE i, "No Of records in output file Account
          w_cnt3         TYPE i, "No Of records in output file Entity
          w_cnt4         TYPE i, "No Of records in output file attribute
          w_cnt5         TYPE i, "No Of records in output file GL Balance
          w_tot_recs     TYPE i, "TOtal number of records downloaded
          w_date         LIKE sy-datum, "System date
          w_timediff     LIKE sy-uzeit, "Time Difference to GMT
          w_timezone(10) TYPE c,       "Time Difference to GMT
          w_file_count(3) TYPE n,       "File Count
          w_period TYPE poper,          "To hold Period Value
          w_year LIKE t009b-bdatj,      "To hold Fiscal Year Value
          w_outfile       TYPE char64,  "FTPed file path
          w_hdl           TYPE i.       "Handle for FTP
                         INTERNAL TABLES
    Intenal table for GL Account details
    DATA: BEGIN OF it_gl_detail OCCURS 0,
              saknr      TYPE saknr,
              txt50_skat TYPE txt50_skat,
              xloev      TYPE xloev,
          END OF it_gl_detail.
    DATA: it_company_list LIKE bapi0014_1  OCCURS 0 WITH HEADER LINE,
          it_coacode TYPE STANDARD TABLE OF ty_coacode  WITH HEADER LINE,
          it_acctcode TYPE STANDARD TABLE OF ty_acctcode WITH HEADER LINE,
          it_entitycode TYPE STANDARD TABLE OF ty_entitycode
                                            WITH HEADER LINE,
          it_attribcode TYPE STANDARD TABLE OF ty_attribcode
                                            WITH HEADER LINE,
          it_glbal TYPE STANDARD TABLE OF ty_glbal WITH HEADER LINE,
          it_globalsap TYPE STANDARD TABLE OF ty_globalsap WITH HEADER LINE,
          it_t001 TYPE STANDARD TABLE OF t001 WITH HEADER LINE,
          it_zdatsrc TYPE STANDARD TABLE OF zdatsrc_t WITH HEADER LINE,
          it_ska1 TYPE STANDARD TABLE OF ska1 WITH HEADER LINE,
          it_t003 TYPE STANDARD TABLE OF t003 WITH HEADER LINE,
          it_t856 TYPE STANDARD TABLE OF t856 WITH HEADER LINE,
          it_zgeist_data    TYPE STANDARD TABLE OF ty_zgeist_data
                                 WITH HEADER LINE,
          it_zgeist_data1   TYPE STANDARD TABLE OF ty_zgeist_data
                                 WITH HEADER LINE,
          it_zgeist_data_all TYPE STANDARD TABLE OF zgeist,
          wa_it_zgeist_data1 TYPE ty_zgeist_data,
          wa_it_zgeist_data TYPE zgeist,
          it_zgeist_error_data TYPE STANDARD TABLE OF ty_zgeist_error_data,
          wa_it_zgeist_error_data TYPE ty_zgeist_error_data.
                         SELECTION-SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-009.
    SELECTION-SCREEN : BEGIN OF LINE,
                COMMENT 1(30) TEXT-006,
                POSITION POS_LOW.
    PARAMETERS :       P_USER(30) TYPE C LOWER CASE OBLIGATORY.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE,
                COMMENT 1(30) TEXT-007,
                POSITION POS_LOW.
    PARAMETERS :       P_PWD(30) TYPE C LOWER CASE OBLIGATORY.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE,
                COMMENT 1(30) TEXT-008,
                POSITION POS_LOW.
    PARAMETERS :       P_HOST(64) TYPE C LOWER CASE OBLIGATORY.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE,
                COMMENT 1(30) TEXT-010,
                POSITION POS_LOW.
    SELECT-OPTIONS :   S_EMAIL FOR ADR6-SMTP_ADDR NO INTERVALS.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN END OF BLOCK B1.
    -- Password not visible--
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF screen-name = 'P_PWD'.
          screen-invisible = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    I N I T I A L I Z A T I O N                                         *
    INITIALIZATION.
      w_date0(2) = sy-datum4(2).
      w_date2(2) = sy-datum6(2).
      w_date4(4) = sy-datum0(4).
      S_EMAIL-SIGN = 'I'.
      S_EMAIL-OPTION = 'EQ'.
      S_EMAIL-LOW = '[email protected]'.
      APPEND S_EMAIL.
      S_EMAIL-SIGN = 'I'.
      S_EMAIL-OPTION = 'EQ'.
      S_EMAIL-LOW = '[email protected]'.
      APPEND S_EMAIL.
                         START - OF - SELECTION
    START-OF-SELECTION.
    Geting Company Details
      PERFORM get_company_list.
    Geting GL Account Details
      PERFORM get_gl_acc_detail.
    Geting GL Balance Details
      PERFORM get_zgeist_data.
                         END - OF - SELECTION
      PERFORM process_coacode.
      PERFORM process_acctcode.
      PERFORM process_entitycode.
      PERFORM process_attribcode.
      PERFORM process_glbal.
      PERFORM process_ftp_file.
      IF NOT it_zgeist_error_data[] IS INITIAL.
        PERFORM write_error_report.
      ENDIF.
    *&      Form  GET_COMPANY_LIST
               Form to get Company List                                 *
    FORM get_company_list.
      CALL FUNCTION 'BAPI_COMPANY_GETLIST'
        TABLES
          company_list = it_company_list.
    ENDFORM.                    "GET_COMPANY_LIST
    *&      Form  GET_GL_ACC_DETAIL
          Form to get the GL Account details                            *
    FORM get_gl_acc_detail.
      DATA : l_txt50 LIKE skat-txt50,
             l_tabix LIKE sy-tabix.
      SELECT saknr xloev
        INTO TABLE it_gl_detail
        FROM ska1
        WHERE ktopl = 'G001'
        AND   ( saknr GE '1000000000' AND saknr LE '4500000000' ).
      LOOP AT it_gl_detail.
        l_tabix = sy-tabix.
        SELECT SINGLE txt50
          INTO l_txt50
          FROM skat
          WHERE spras = 'EN'
          AND   ktopl = 'G001'
          AND   saknr = it_gl_detail-saknr.
        it_gl_detail-txt50_skat = l_txt50.
        MODIFY it_gl_detail INDEX l_tabix.
        CLEAR l_txt50.
      ENDLOOP.
    ENDFORM.                    "GET_GL_ACC_DETAIL
    *&      Form  PROCESS_COACODE
    Form to Populate COA data to Output internal table  IT_COACODE *
    FORM process_coacode.
      it_coacode-coa_code          =  text-023.     "GLOBAL.
      it_coacode-coa_description   =  text-022.     "Global SAP for ERC
      it_coacode-field11           =  '11'.
      APPEND it_coacode.
      CLEAR it_coacode.
    ENDFORM.                    "PROCESS_COACODE
    *&      Form  PROCESS_ACCTCODE
    Form to Populate Account data to Output Internal table IT_ACCTCODE *
    FORM process_acctcode.
      DATA:l_saknr(10).
      DATA : it_gl_detail2 LIKE it_gl_detail OCCURS 0 WITH HEADER LINE.
      IF NOT it_gl_detail[] IS INITIAL.
        it_gl_detail2[] = it_gl_detail[].
        SORT it_gl_detail2 BY saknr.
        DELETE ADJACENT DUPLICATES FROM it_gl_detail2 COMPARING saknr.
      ENDIF.
      IF NOT it_gl_detail2[] IS INITIAL.
        LOOP AT it_gl_detail2.
          MOVE it_gl_detail2-saknr      TO it_acctcode-act_code.
          MOVE it_gl_detail2-txt50_skat TO it_acctcode-act_desc.
    Check GL Account is marked for deletion or not
          IF it_gl_detail2-xloev     = c_selected.
            it_acctcode-act_act_flag = c_n.
          ELSE.
            it_acctcode-act_act_flag = c_y.
          ENDIF.
    Determine GL Account type based on GL account number
          l_saknr = it_gl_detail2-saknr.
          SHIFT l_saknr LEFT DELETING LEADING '0'.
          IF l_saknr CP '1*'.
            it_acctcode-glact_type = c_a.
          ELSEIF l_saknr CP '2*'.
            it_acctcode-glact_type = c_l.
          ELSEIF l_saknr CP '3*'.
            it_acctcode-glact_type = c_q.
    Start of Addition by C.Ramesh Babu on 11/04/2005   "DR1K907900
          ELSEIF l_saknr CP '4*'.
            it_acctcode-glact_type = c_l.
    End of Addition by C.Ramesh Babu on 11/04/2005   "DR1K907900
          ELSEIF l_saknr CP '5*'.
            it_acctcode-glact_type = c_r.
          ELSEIF l_saknr CP '6*'.
            it_acctcode-glact_type = c_e.
          ELSEIF l_saknr CP '7*'.
            it_acctcode-glact_type = c_t.
          ENDIF.
          it_acctcode-fi_line      = 'CDR'.
          it_acctcode-coa_code     = 'GLOBAL'.
          it_acctcode-act_defcode  = '001'.
          it_acctcode-field11      = '11'.
          APPEND :it_acctcode.
          CLEAR  :it_acctcode,it_gl_detail2.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "PROCESS_ACCTCODE
    *&      Form  PROCESS_ENTITYCODE
      Form to Populate Entiti data to Output file internal table        *
    FORM process_entitycode.
      IF NOT it_company_list[] IS INITIAL.
        LOOP AT it_company_list.
          SHIFT it_company_list-company LEFT DELETING LEADING '0'.
          MOVE it_company_list-company TO it_entitycode-entity_code.
          MOVE it_company_list-name1   TO it_entitycode-com_desc.
          it_entitycode-coa_code    = 'GLOBAL'.
          it_entitycode-field11     = '11'.
          APPEND it_entitycode.
          CLEAR : it_company_list,it_entitycode.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "PROCESS_ENTITYCODE
    *&      Form  PROCESS_ATTRIBCODE
        Form to Populate Attribute data to output file internal table   *
    FORM process_attribcode.
    Getting data from T001.
      SELECT * FROM t001 INTO TABLE it_t001.
      LOOP AT it_t001.
        MOVE c_rassc TO it_attribcode-attrib_code.
        MOVE it_t001-bukrs TO  it_attribcode-attrib_value.
        MOVE c_tradptn TO it_attribcode-attrib_desc.
        it_attribcode-field11 = '11'.
        APPEND it_attribcode.
        CLEAR it_attribcode.
      ENDLOOP.
    Getting data from table ZDATSRC_T.
      SELECT * FROM zdatsrc_t INTO TABLE it_zdatsrc.
      LOOP AT it_zdatsrc.
        MOVE c_dtsrce TO it_attribcode-attrib_code.
        MOVE it_zdatsrc-zdatsrc TO  it_attribcode-attrib_value.
        MOVE c_datsrc TO it_attribcode-attrib_desc.
        it_attribcode-field11 = '11'.
        APPEND it_attribcode.
        CLEAR it_attribcode.
      ENDLOOP.
    Getting data from table SKA1.
      SELECT * FROM ska1 INTO TABLE it_ska1.
      LOOP AT it_ska1.
        MOVE c_sacct TO it_attribcode-attrib_code.
        MOVE it_ska1-saknr TO  it_attribcode-attrib_value.
        MOVE c_glacc TO it_attribcode-attrib_desc.
        it_attribcode-field11 = '11'.
        APPEND it_attribcode.
        CLEAR it_attribcode.
      ENDLOOP.
    Getting data from table T003.
      SELECT * FROM t003 INTO TABLE it_t003.
      LOOP AT it_t003.
        MOVE c_docty TO it_attribcode-attrib_code.
        MOVE it_t003-blart TO  it_attribcode-attrib_value.
        MOVE c_doctyp TO it_attribcode-attrib_desc.
        it_attribcode-field11 = '11'.
        APPEND it_attribcode.
        CLEAR it_attribcode.
      ENDLOOP.
    Getting data from table T856.
      SELECT * FROM t856 INTO TABLE it_t856.
      LOOP AT it_t856.
        MOVE c_trxtp TO it_attribcode-attrib_code.
        MOVE it_t856-trtyp TO  it_attribcode-attrib_value.
        MOVE c_trantyp TO it_attribcode-attrib_desc.
        it_attribcode-field11 = '11'.
        APPEND it_attribcode.
        CLEAR it_attribcode.
      ENDLOOP.
    ENDFORM.                    "PROCESS_ATTRIBCODE
    *&      Form  PROCESS_GLBAL
      Form to Populate GL Balance data to Output file internal table    *
    FORM process_glbal.
      DATA : l_ctran_amt(21),
             l_cusd_amt(21).
      LOOP AT it_zgeist_data INTO wa_it_zgeist_data1.
    *Start of change by 501030559 on 11/04/2005
       it_glbal-gl_reccode = '04'.
         it_glbal-gl_reccode = '05'.
    *End of change by 501030559 on11/04/2005
        it_glbal-gl_entity  = wa_it_zgeist_data1-rbukrs.
        it_glbal-gl_accnum  = wa_it_zgeist_data1-zzaltkt.
        it_glbal-site       = 'ERC'.
        it_glbal-currency_type = wa_it_zgeist_data1-rtcur.
        it_glbal-year = w_year.
        it_glbal-month = w_period.
        it_glbal-as_of_date = w_date.
        l_ctran_amt = wa_it_zgeist_data1-tslvt.
    Put sign to left side of the value
        IF l_ctran_amt LT 0.
          TRANSLATE l_ctran_amt USING ' 0'.
          CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
            CHANGING
              value = l_ctran_amt.
        ELSE.
    Trailing Zero's to the value
          SHIFT l_ctran_amt RIGHT DELETING TRAILING space.
          TRANSLATE l_ctran_amt USING ' 0'.
          REPLACE '0' WITH '' INTO l_ctran_amt.
        ENDIF.
        it_glbal-tran_cur_amt = l_ctran_amt.
        l_cusd_amt = wa_it_zgeist_data1-kslvt.
    Put Sign to leftside of the value
        IF l_cusd_amt LT 0.
          TRANSLATE l_cusd_amt USING ' 0'.
          CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
            CHANGING
              value = l_cusd_amt.
        ELSE.
    Trailing Zero's to the value
          SHIFT l_cusd_amt RIGHT DELETING  TRAILING space.
          TRANSLATE l_cusd_amt USING ' 0'.
          REPLACE '0' WITH '' INTO l_cusd_amt.
        ENDIF.
        it_glbal-usd_amount = l_cusd_amt.
        it_glbal-racct   = wa_it_zgeist_data1-racct.
        it_glbal-zzbewar = wa_it_zgeist_data1-zzbewar.
        it_glbal-zzdatsrc = wa_it_zgeist_data1-zzdatsrc.
        it_glbal-zzblart  = wa_it_zgeist_data1-zzblart.
        it_glbal-rassc  = wa_it_zgeist_data1-rassc.
        it_glbal-field11 = '11'.
        APPEND it_glbal.
        CLEAR : wa_it_zgeist_data1, it_glbal.
      ENDLOOP.
    ENDFORM.                    "PROCESS_GLBAL
    *&      Form  PROCESS_GLOBALSAP
       Form to Populate COntrol data to Output file internal table      *
    FORM process_globalsap.
      DATA :l_total(9),
            l_len(3) type c.
    Logic to get Time Zone
      w_timediff  = sy-tzone.
      IF sy-tzone LT '0'.
        w_timediff = sy-tzone * -1.
        CONCATENATE 'GMT-' w_timediff(4) INTO w_timezone.
      ELSE.
        w_timediff = sy-tzone.
        CONCATENATE 'GMT+' w_timediff(4) INTO w_timezone.
      ENDIF.
      LOOP AT S_EMAIL.
        CONCATENATE C_USERID S_EMAIL-LOW ',' INTO C_USERID.
      ENDLOOP.
      l_len = strlen( c_userid ).
      l_len = l_len - 1.
      c_userid = c_userid+0(l_len).
      it_globalsap-clnt_name    = 'ERC'.
      it_globalsap-source_name  = 'GLOBALSAP'.
      it_globalsap-as_of_date   = w_date.
      it_globalsap-time_stamp   = sy-uzeit.
      it_globalsap-time_zone    = w_timezone.
      it_globalsap-num_of_files = w_file_count.
      MOVE w_tot_recs TO l_total.
      SHIFT l_total RIGHT DELETING TRAILING space.
      TRANSLATE l_total USING ' 0'.
      it_globalsap-num_of_records = l_total.
      it_globalsap-user_ids = c_userid.
      it_globalsap-field11  = '11'.
      APPEND it_globalsap.
      CLEAR it_globalsap.
    ENDFORM.                  "PROCESS_GLOBALSAP
    *&      Form  COUNT_RECORDS
    Form to count total number of records Downlaoded                   *
    FORM count_records.
      DESCRIBE TABLE it_coacode    LINES w_cnt1.
      DESCRIBE TABLE it_acctcode   LINES w_cnt2.
      DESCRIBE TABLE it_entitycode LINES w_cnt3.
      DESCRIBE TABLE it_attribcode LINES w_cnt4.
      DESCRIBE TABLE it_glbal      LINES w_cnt5.
      w_tot_recs = w_cnt1 + w_cnt2 + w_cnt3 + w_cnt4 + w_cnt5.
    ENDFORM.                    "COUNT_RECORDS
    *&      Form  get_zgeist_data
    Form used to fetch data from ZGEIST table for the GL BAL file
    FORM get_zgeist_data .
      PERFORM get_period_year.
      SELECT * INTO TABLE it_zgeist_data_all
               FROM zgeist
               WHERE rldnr  EQ 'GG'
               AND   ryear  EQ w_year
               AND   rrcty  EQ 0
               AND   rpmax  EQ '016'
               AND  ( zzaltkt GE '1000000000' AND zzaltkt LE '4500000000' )
               AND   rzzstagr = space.
      sort it_zgeist_data_all by rbukrs rldnr zzaltkt racct
                                 zzdatsrc zzbewar zzblart rtcur rassc.
      LOOP AT it_zgeist_data_all INTO wa_it_zgeist_data.
        IF wa_it_zgeist_data-zzaltkt EQ space.
          wa_it_zgeist_error_data-rldnr = wa_it_zgeist_data-rldnr.
          wa_it_zgeist_error_data-rrcty = wa_it_zgeist_data-rrcty.
          wa_it_zgeist_error_data-rvers = wa_it_zgeist_data-rvers.
          wa_it_zgeist_error_data-ryear = wa_it_zgeist_data-ryear.
          wa_it_zgeist_error_data-rbukrs = wa_it_zgeist_data-rbukrs.
          wa_it_zgeist_error_data-robjnr = wa_it_zgeist_data-robjnr.
          wa_it_zgeist_error_data-cobjnr = wa_it_zgeist_data-cobjnr.
          wa_it_zgeist_error_data-sobjnr = wa_it_zgeist_data-sobjnr.
          wa_it_zgeist_error_data-rtcur = wa_it_zgeist_data-rtcur.
          wa_it_zgeist_error_data-runit = wa_it_zgeist_data-runit.
          wa_it_zgeist_error_data-drcrk = wa_it_zgeist_data-drcrk.
          wa_it_zgeist_error_data-rpmax = wa_it_zgeist_data-rpmax.
          APPEND wa_it_zgeist_error_data TO it_zgeist_error_data.
        ELSE.
          it_zgeist_data1-rbukrs   = wa_it_zgeist_data-rbukrs.
          it_zgeist_data1-rldnr    = wa_it_zgeist_data-rldnr.
          it_zgeist_data1-zzaltkt  = wa_it_zgeist_data-zzaltkt.
          it_zgeist_data1-racct    = wa_it_zgeist_data-racct.
          it_zgeist_data1-zzdatsrc = wa_it_zgeist_data-zzdatsrc.
          it_zgeist_data1-zzbewar  = wa_it_zgeist_data-zzbewar.
          it_zgeist_data1-zzblart  = wa_it_zgeist_data-zzblart.
          it_zgeist_data1-rassc  = wa_it_zgeist_data-rassc.
          it_zgeist_data1-rtcur    = wa_it_zgeist_data-rtcur.
          PERFORM get_tslvt_kslvt_values USING w_period.
          COLLECT it_zgeist_data1.
        ENDIF.
        CLEAR : wa_it_zgeist_data, wa_it_zgeist_error_data,
                it_zgeist_data1.
      ENDLOOP.
      it_zgeist_data[] = it_zgeist_data1[].
    ENDFORM.                    " get_zgeist_data
    *&      Form  write_error_report
    Form used to display error data for the GL BAL fetched data
    FORM write_error_report .
      DATA : l_text(80) TYPE c.
      CASE w_period.
        WHEN '001' OR '01'.
          l_text = text-e01.
        WHEN '002' OR '02'.
          l_text = text-e02.
        WHEN '003' OR '03'.
          l_text = text-e03.
        WHEN '004' OR '04'.
          l_text = text-e04.
        WHEN '005' OR '05'.
          l_text = text-e05.
        WHEN '006' OR '06'.
          l_text = text-e06.
        WHEN '007' OR '07'.
          l_text = text-e07.
        WHEN '008' OR '08'.
          l_text = text-e08.
        WHEN '009' OR '09'.
          l_text = text-e09.
        WHEN '010' OR '10'.
          l_text = text-e10.
        WHEN '011' OR '11'.
          l_text = text-e11.
        WHEN '012' OR '12'.
          l_text = text-e12.
        WHEN '013' OR '13'.
          l_text = text-e13.
        WHEN '014' OR '14'.
          l_text = text-e14.
        WHEN '015' OR '15'.
          l_text = text-e15.
        WHEN '016' OR '16'.
          l_text = text-e16.
      ENDCASE.
      SKIP 2.
      WRITE:/45 text-h01 COLOR COL_HEADING.
      SKIP 2.
      FORMAT COLOR 4.
      WRITE:/(234) sy-uline.
      WRITE:/1   sy-vline,
             2   text-h02,
             9   sy-vline,
             10  text-h03,
             19  sy-vline,
             20  text-h04,
             28  sy-vline,
             29  text-h05,
             41  sy-vline,
             42  text-h06,
             49  sy-vline,
             50  text-h07,
             69  sy-vline,
             70  text-h08,
             89  sy-vline,
             90  text-h09,
             109 sy-vline,
             110 text-h10,
             119 sy-vline,
             120 text-h11,
             130 sy-vline,
             131 text-h12,
             144 sy-vline,
             145 text-h13,
             152 sy-vline,
             153 text-h14,
             234 sy-vline.
      WRITE:/(234) sy-uline.
      FORMAT COLOR OFF.
      LOOP AT it_zgeist_error_data INTO wa_it_zgeist_error_data.
        FORMAT COLOR 2.
        WRITE:/1   sy-vline,
               4   wa_it_zgeist_error_data-rldnr,
               9   sy-vline,
               13  wa_it_zgeist_error_data-rrcty,
               19  sy-vline,
               22  wa_it_zgeist_error_data-rvers,
               28  sy-vline,
               32  wa_it_zgeist_error_data-ryear,
               41  sy-vline,
               42  wa_it_zgeist_error_data-rbukrs,
               49  sy-vline,
               50  wa_it_zgeist_error_data-robjnr,
               69  sy-vline,
               70  wa_it_zgeist_error_data-cobjnr,
               89  sy-vline,
               90  wa_it_zgeist_error_data-sobjnr,
               109 sy-vline,
               112 wa_it_zgeist_error_data-rtcur,
               119 sy-vline,
               123 wa_it_zgeist_error_data-runit,
               130 sy-vline,
               135 wa_it_zgeist_error_data-drcrk,
               144 sy-vline,
               147 wa_it_zgeist_error_data-rpmax,
               152 sy-vline,
               153 l_text,
               234 sy-vline.
        FORMAT COLOR OFF.
      ENDLOOP.
      WRITE:/(234) sy-uline.
    ENDFORM.                    " write_error_report
    *&      Form  get_tslvt_kslvt_values
    Form used to get TSLxx & KSLxx values for the period fetched
    FORM get_tslvt_kslvt_values USING period.
    FIELD-SYMBOLS : <f1> TYPE ANY,
                     <f2> TYPE ANY.
    DATA : l_tslvt_val(25) VALUE 'wa_it_zgeist_data-tsl',
            l_kslvt_val(25) VALUE 'wa_it_zgeist_data-ksl',
            l_tslvt TYPE tslvt9,
            l_kslvt TYPE kslvt9,
            l_period TYPE poper.
      clear l_period.
      l_period = period.
      DO l_period TIMES.
          CONCATENATE  l_tslvt_val  l_period+1(2) INTO  l_tslvt_val.
          CONCATENATE   l_kslvt_val l_period+1(2) INTO  l_kslvt_val.
        ASSIGN (l_tslvt_val) TO <f1>.
        l_tslvt = <f1>.
        it_zgeist_data1-tslvt = it_zgeist_data1-tslvt + l_tslvt.
        ASSIGN (l_kslvt_val) TO <f2>.
        l_kslvt = <f2>.
        it_zgeist_data1-kslvt = it_zgeist_data1-kslvt + l_kslvt.
        l_period = l_period - 1.
        clear : l_tslvt, l_kslvt, l_tslvt_val, l_kslvt_val.
        l_tslvt_val = 'wa_it_zgeist_data-tsl'.
        l_kslvt_val = 'wa_it_zgeist_data-ksl'.
        if l_period = 0.
          exit.
        endif.
      ENDDO.
    ENDFORM.                    "get_tslvt_kslvt_values
    *&      Form  process_ftp_file
    Form used to connect & disconnect to Informatica Server using FTP
    Also, used to transfer files to the Informatica location
    -->  p1        text
    <--  p2        text
    FORM process_ftp_file .
      DATA: l_slen     TYPE i,
            l_error,
            l_pwd(30)  TYPE c.
      CONSTANTS: c_dest TYPE rfcdes-rfcdest VALUE 'SAPFTP',
                 c_key  TYPE i              VALUE 26101957.
      l_error = 0.
    connect to ftp server
      l_pwd = p_pwd.
      l_slen = STRLEN( l_pwd ).
      CALL FUNCTION 'HTTP_SCRAMBLE'
        EXPORTING
          SOURCE      = l_pwd
          sourcelen   = l_slen
          key         = c_key
        IMPORTING
          destination = l_pwd.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          text = 'Connect to FTP Server'.
    To Connect to the Server using FTP
      CALL FUNCTION 'FTP_CONNECT'
        EXPORTING
          user            = p_user
          password        = l_pwd
          host            = p_host
          rfc_destination = c_dest
        IMPORTING
          handle          = w_hdl
        EXCEPTIONS
          OTHERS          = 1.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CLEAR : w_outfile, w_file_count.
      MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_COACODE' TO w_outfile.
      PERFORM download_to_ftp TABLES it_coacode USING w_outfile.
      w_file_count = w_file_count + 1.
      CLEAR : w_outfile.
      MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ACCTCODE' TO w_outfile.
      PERFORM download_to_ftp TABLES it_acctcode USING w_outfile.
      w_file_count = w_file_count + 1.
      CLEAR : w_outfile.
      MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ENTITYCODE' TO w_outfile.
      PERFORM download_to_ftp TABLES it_entitycode USING w_outfile.
      w_file_count = w_file_count + 1.
      CLEAR : w_outfile.
      MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ATTRIBCODE' TO w_outfile.
      PERFORM download_to_ftp TABLES it_attribcode USING w_outfile.
      w_file_count = w_file_count + 1.
      CLEAR : w_outfile.
      MOVE 'ERC/GLOBALSAP/ERC_GLOBALSAP_GLBAL' TO w_outfile.
      PERFORM download_to_ftp TABLES it_glbal USING w_outfile.
      w_file_count = w_file_count + 1.
      CLEAR : w_outfile, w_tot_recs.
      PERFORM count_records.
      PERFORM process_globalsap.
      MOVE 'ERC/GLOBALSAP/C_ERC_GLOBALSAP' TO w_outfile.
      PERFORM download_to_ftp TABLES it_globalsap USING w_outfile.
    To disconnect the FTP
      CALL FUNCTION 'FTP_DISCONNECT'
        EXPORTING
          handle = w_hdl.
    To disconnect the RFC Connection
      CALL FUNCTION 'RFC_CONNECTION_CLOSE'
        EXPORTING
          destination = c_dest
        EXCEPTIONS
          OTHERS      = 1.
    ENDFORM.                    " process_ftp_file
    *&      Form  download_to_ftp
    Form to put the files in the Informatica Location using FTP
    Path is ERC\GLOBALSAP\<filename>
    FORM download_to_ftp TABLES it_tab
                         USING l_string TYPE char64.
      CALL FUNCTION 'FTP_R3_TO_SERVER'
        EXPORTING
          handle         = w_hdl
          fname          = l_string
          character_mode = 'X'
        TABLES
          text           = it_tab[]
        EXCEPTIONS
          tcpip_error    = 1
          command_error  = 2
          data_error     = 3
          OTHERS         = 4.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
                RAISING invalid_output_file.
      ENDIF.
    ENDFORM.                    " download_to_ftp
    *&      Form  get_period_year
    Form to fill the Period & Year based on the Sy-datum
    FORM get_period_year .
      DATA : l_month(2) TYPE c,
             l_day(2)   TYPE c,
             l_year(4)  TYPE c.
      l_year  = sy-datum+0(4).
      l_month = sy-datum+4(2).
      l_day   = sy-datum+6(2).
      CASE l_month.
        WHEN '01'.
          IF l_day <= '15'.
            w_period = '12'.
            w_year = l_year - 1.
          ELSE.
            w_period = '1'.
            w_year = l_year.
          ENDIF.
        WHEN '02'.
          IF l_day <= '15'.
            w_period = '1'.
            w_year = l_year.
          ELSE.
            w_period = '2'.
            w_year = l_year.
          ENDIF.
        WHEN '03'.
          IF l_day <= '15'.
            w_period = '2'.
            w_year = l_year.
          ELSE.
            w_period = '3'.
            w_year = l_year.
          ENDIF.
        WHEN '04'.
          IF l_day <= '15'.
            w_period = '3'.
            w_year = l_year.
          ELSE.
            w_period = '4'.
            w_year = l_year.
          ENDIF.
        WHEN '05'.
          IF l_day <= '15'.
            w_period = '4'.
            w_year = l_year.
          ELSE.
            w_period = '5'.
            w_year = l_year.
          ENDIF.
        WHEN '06'.
          IF l_day <= '15'.
            w_period = '5'.
            w_year = l_year.
          ELSE.
            w_period = '6'.
            w_year = l_year.
          ENDIF.
        WHEN '07'.
          IF l_day <= '15'.
            w_period = '6'.
            w_year = l_year.
          ELSE.
            w_period = '7'.
            w_year = l_year.
          ENDIF.
        WHEN '08'.
          IF l_day <= '15'.
            w_period = '7'.
            w_year = l_year.
          ELSE.
            w_period = '8'.
            w_year = l_year.
          ENDIF.
        WHEN '09'.
          IF l_day <= '15'.
            w_period = '8'.
            w_year = l_year.
          ELSE.
            w_period = '9'.
            w_year = l_year.
          ENDIF.
        WHEN '10'.
          IF l_day <= '15'.
            w_period = '9'.
            w_year = l_year.
          ELSE.
            w_period = '10'.
            w_year = l_year.
          ENDIF.
        WHEN '11'.
          IF l_day <= '15'.
            w_period = '10'.
            w_year = l_year.
          ELSE.
            w_period = '11'.
            w_year = l_year.
          ENDIF.
        WHEN '12'.
          IF l_day <= '15'.
            w_period = '11'.
            w_year = l_year.
          ELSE.
            w_period = '12'.
            w_year = l_year.
          ENDIF.
      ENDCASE.
    ENDFORM.                    " get_period_year

  • Problem with GET File using FTP_COMMAND

    Hi,
    I have the follow situation:
    concatenate 'cd' '/interfaz/DM/data_in/comm' into w_cmd separated by ' '.
    call function 'FTP_COMMAND'
      EXPORTING
        handle  = L_HANDLE
        command = w_cmd
      TABLES
        data    = result.
    w_cmd = 'nlist'.
    call function 'FTP_COMMAND'
      EXPORTING
        handle  = L_HANDLE
        command = w_cmd
      TABLES
        data    = result.
    **.. Create ftp-command
        CONCATENATE 'get' '"SM201002230002.txt"'
        INTO w_cmd SEPARATED BY ' '.
    call function 'FTP_COMMAND'
      EXPORTING
        handle  = L_HANDLE
        command = w_cmd
      TABLES
        data    = result.
    call function 'FTP_DISCONNECT'
      EXPORTING
        handle = L_HANDLE.
    But I don´t have to take the file.
    The result that i have in internal table result is:
    nlist
    200 PORT command successful.
    150 Opening data connection for ..
    .sh_history
    SM201002230002.txt
    SM201002230001.txt
    226 Transfer complete.
    get "SM201002230002.txt"
    200 PORT command successful.
    150 Opening data connection for SM201002230002.txt (152 bytes).
    226 Transfer complete.
    152 bytes received in 0.00 seconds (0.15 Kbytes/s)
    Why i Can´t take the File?

    Send the solution.
      CONCATENATE 'cd' '/interfaz/DM/data_in/comm' into w_cmd separated by ' '.
      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle  = L_HANDLE
          command = w_cmd
        TABLES
          data    = result.
      w_cmd = 'ls'.
      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle  = L_HANDLE
          command = w_cmd
        TABLES
          data    = result.
      TYPES: BEGIN OF ty_files,
                file TYPE char200,
              END OF ty_files.
      DATA: it_files TYPE STANDARD TABLE OF ty_files,
            wa_files TYPE ty_files.
      LOOP AT result.
        check result-line+72(4) = '.txt'.
        IF sy-subrc = 0.
          W_CMD = result-LINE+58(18).
          CALL FUNCTION 'FTP_SERVER_TO_R3'
            EXPORTING
              HANDLE               = L_HANDLE
              FNAME                = W_CMD " SM201002230001.txt
              CHARACTER_MODE       = 'X'
    IMPORTING
      BLOB_LENGTH          =
            TABLES
      BLOB                 =
              TEXT                 = I_FTP
           EXCEPTIONS
             TCPIP_ERROR          = 1
             COMMAND_ERROR        = 2
             DATA_ERROR           = 3
             OTHERS               = 4.
        ENDIF.
      ENDLOOP.

  • Problem with rename command in ftp_command

    hi all ,
    i am facing a problem in renaming a file by rename command...
    this is how i am calling the fm ftp_command
    CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle        = g_handle
          command       = 'RENAME l_templine_file l_templine_file1'
        TABLES
          data          = l_i_temp_line
        EXCEPTIONS
          tcpip_error   = 1
          command_error = 2
          data_error    = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
    here l_templine_file   - dev00227.header.tmp  
    l_templine_file1 - dev00227.header.txt
    the fm is failing that the error meassage is FTP subcommand  error
    can u suggest where i am going wrong in this...

    hi,
    May be the command you are passing is incorrect syntax..
    Pass the values like this..
    l_templine_file =  'c:\dev00227.header.tmp' " this should be with path'
    l_templine_file1 = 'dev00227.header.txt'" this is just the name of file
    If not worked..then Try writing in small letters//
    write
    command = 'rename l_templinefile l_templine1'.
    rewards if useful
    Hope this solves..
    regards,
    nazeer
    Message was edited by:
            nazeer shaik
    Message was edited by:
            nazeer shaik
    Message was edited by:
            nazeer shaik

  • FTP_COMMAND in order to get files list at FTP address

    Hi all.
    I want to get a list of files exist at a specific FTP address.
    For that I'm using FTP_CONNECT (OK) and after I want to execute FTP_COMMAND with parameter command = 'ls' in order to recievce the files list in output table data[].
    I keep on getting an exception 3 (data_error).
    Anyone can help please ?
    Thanks,
    Rebeka

    Hello,
    I know by experience the ABAP programmers learn most based on examples.
    In every SAP system you have the following FTP example programs, analyze the source code and check how function modules like FTP_CONNECT and FTP_COMMAND work :
    RSFTP002                         Execute FTP Command
    RSFTP003                         FTP put / get Test
    RSFTP004                         FTP Copy
    RSFTP007                         Test FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER
    RSFTP008                         Test FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT
    RSFTP009                         Test FTP put with Verify
    RSFTP011                         FTP Copy
    Success.
    Wim

  • FM "FTP_COMMAND" ERROR

    Hi all,
    I am usinf FM "FTP_COMMAND"
    i am getting the following error
    *put hb_file.txt*
    *open hb_file.txt errno 22: Invalid argument*
    Thanks & Regards,
    vallamuthu>

    Hi
    See the below thread.
    How to transfer file from one sap to other using program RSFTP004???
    Reward if helpful.
    thanks,
    Krishna

  • 'FTP_COMMAND'   error

    HI Friends,
       I want to download sme txt file to ftp server.
       i am using the FM "FTP_CONNECT" & "FTP_COMMAND".
      here "FTP_CONNECT" is working fine  but "FTP_COMMAND" gives the following error. "open hb_file.txt errno 22: Invalid argument "                              <
    The code is given below.
    CALL FUNCTION 'FTP_COMMAND' 
      EXPORTING                 
        HANDLE        = HDL       ==> 1
        COMMAND       = CMD   ==> put hub_file.txt  
      TABLES                    
        DATA          = F2_RESULT
      EXCEPTIONS                
        COMMAND_ERROR = 1       
        TCPIP_ERROR   = 2.      
    Thanks & Regards,
    Vallamuthu.M

    The Comments box while closing your thread is NOT mandatory. Please skip that box and close your threads. This will stop bumping your old threads back into the queue.
    pk

  • FTP_COMMAND MGET doesnt transfer UNICODE special Charecters

    Hi there, we have a program that FTP's files from a server to R/3 using the MGET command with SAP function FTP_COMMAND. We are on the latest release of SAP and I have UNICODE checked on the SAP destination.  Does anyone know why a properly save Unicode UTF-8 file with special characters gets scramble when thye mare moved?
    Here is the call
      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle        = h_handle
          command       = h_cmd
          COMPRESS      = 'X'
        TABLES
          data          = ftab
        EXCEPTIONS
          tcpip_error   = 1
          command_error = 2
          data_error    = 3
          OTHERS        = 4.

    ls -l /var/run/lighttpd/
    And how are you spawning the php instances? I don't see that in the daemons array anywhere.
    EDIT: It looks like the info in that page is no longer using pre-spawned instances, but lighttpd adaptive-spawn. The documentation has been made inconsistent it looks like.
    You will note that with pre-spawned information, the config looks different[1].
    You need to do one or the other, not both (eg. choose adaptive-spawn, or pre-spawn..not both).
    [1]: http://wiki.archlinux.org/index.php?tit … oldid=8051 "change"

  • FTP_COMMAND: creating sub folders

    Hi groups
    Iam using FTP_Connect, FTP_command , FTP_R3_TO_SERVER and FTP_disconnect to transfer dat file to FTP server.
    to create sub folder in ftp server
          CONCATENATE 'mkdir'
                     p_filpth
                     INTO l_dir
                     SEPARATED BY space.
          CALL FUNCTION 'FTP_COMMAND'
            EXPORTING
              handle        = g_handle
              command       = l_dir
            TABLES
              data          = i_result
            EXCEPTIONS
              tcpip_error   = 1
              command_error = 2
              data_error    = 3.
    using FTP_COMMAND can we creater 2 or more subfolders at a time? 
    Ex: In p_filpth let the file path be like this 1/2/3. 1 and 2 subfolders already exist.now by using the above code iam able to create folder '3'.
    but if the filepath is 1/2/3/4. then iam not able to create subfolders 3 and 4. At a time only one sub folder is created.
    please suggest me how to create 2 or more subfolders at a time? it's urgent

    thank u for the response  
    let p_filpath be '/new/efmp/filo/fi/'
    Already folders new, efmp are present in the server.
    Now  iam trying to created two new folder 'filo' and 'fi' at a time.
    CONCATENATE 'ls'
                     p_filpth
                     INTO l_dir
                     SEPARATED BY space.
    CONCATENATE l_dir 'struct' into l_dir.
          CALL FUNCTION 'FTP_COMMAND'
            EXPORTING
              handle        = g_handle
              command       = l_dir
            TABLES
              data          = i_result
            EXCEPTIONS
              tcpip_error   = 1
              command_error = 2
              data_error    = 3.
    if sy-subrc eq 0.
    ***l_fname = '/new/efmp/filo/fi/test.csv'
      CALL FUNCTION 'FTP_R3_TO_SERVER'
        EXPORTING
          handle               = g_handle
          fname                = l_fname
      BLOB_LENGTH          =
         character_mode       = c_x
       TABLES
      BLOB                 =
         text                 = p_i_final_csv
       EXCEPTIONS
         tcpip_error          = 1
         command_error        = 2
         data_error           = 3
         OTHERS               = 4
    endif.
    after using ftp_command, filepath('/new/efmp/filo/fi/) is being created (i.e 2 new folders 'filo' and 'fi' are created but  CALL FUNCTION 'FTP_R3_TO_SERVER' is failing.

  • FM "FTP_COMMAND" generates ftptmpfile*-Files

    Hi,
    I have an issue with an unchanged program (developed by myself). I am using FM "FTP_COMMAND" to transfer files from application server to a webserver. Everything worked fine - til the moment when the update to EHP7 was done. Since that moment, this FM generates files on my application server with the name pattern 'ftptmpfilexxxxxx' (with 'x' = random character). The content of the file is the lcd-command (local change directory), which has been done by the FM. Because every lcd-command generates a file, we are flooding in masses of this files.
    The system administrator is hurrying me to solve the problem, but I don't know, how. Does anyone know, where this f.... files are coming from? As I said: I did not change the program.
    Thanks for helping me!

    SAP replied to me:
    We also have other customers reporting the same issue and the problem
    only happens in Microsoft windows platforms.To analyse further the
    problem together with micorsoft,Pls help provide below details.
    1. Account which is running the executable.
    2. ACL of the directory where the files are being created. (Access
    Control List - ACL)
    3. Resulting ACL of the file which cannot be deleted.
    4. If 1..3 are showing an environment, where  the account should be
    able to delete the file I additionally need a procmon.exe (
    www.sysinternals.com) trace
    If you are not aware of these things, please contact your local
    Microsoft support, they will be able to help you in this.

  • OPEN upload.xlsx error22: Invalid arguement error in FTP_Command.

    Hi All,
    I have the requirement to put an excel file from presentation server to another remote system for this i am using the function modules
    1) FTP_CONNECT to connect to the sourece as well as the destination systems --- Here i am able to hit the both systems.
    2) for sending the data to the target system i am using FTP_COMMAND by passing the 'put' statement along with the soruce and destinations for the command parameter.
    See the bellow code
    CONCATENATE 'put'(t39) wa_file-pathname
                      INTO lv_cmd
                      SEPARATED BY space.        " Forming the Command for data Transfer
          CALL FUNCTION 'FTP_COMMAND'
            EXPORTING
              handle        = lv_handle  " Handle or Instance
              command       = lv_cmd     " ASCII Command
              compress      = 'N'        " No Compress
            TABLES
              data          = gt_data
            EXCEPTIONS
              tcpip_error   = 1
              command_error = 2
              data_error    = 3
              OTHERS        = 4.
    open C:\usr\desktop\upload.xlsx  errno 22: Invalid argument
    Please let me know how i can resolve this problem and how can I put this file in the destination system.

    Check the function by trying with an excel file of format .xls.

  • Non English characters in FTP transport

    Hi gurus,
    I have this kind of problem: I need to create text file from internal table (table of 10000 charactes lines) , the file should be created in given ftp server (currently using FM FTP_R3_TO_SERVER).
    But, and here is the problem, the text file contains some non English character (Czech to be specific) and after the file is created in ftp server the non English character are replaced by #, characters are fine in the table, even after creating the file on local system everything is fine.
    I checked rfc connections, their are Unicode, file is sending in bin mode of ftp (ascii mode had no change, only acsii mode cuts the line to 256 character which is not enough) and parameter of fm FTP_R3_TO_SERVER character_mode is checked.
    I will appreciate any help or "kick" in right direction.
    Thanks
    Martin

    Hi Salehashaikh,
    I'm not using the FM 'FTP_R3_TO_SERVER' any more to transfer the internal table to ftp, so I do not have the code.  Sorry,
    but i will try to answer the question.
    when you are using function module  'FTP_R3_TO_SERVER' to transfer internal data to ftp the parameter fname should be the name or path of the file you are creating. If you only put file name there for example:
         CALL FUNCTION 'FTP_R3_TO_SERVER'
           EXPORTING
           handle = w_hdl
           fname = 'test_file.txt'
         character_mode = 'X'
    this will create file test_file.txt in root directory on ftp.
    You could also put there whole path on the ftp for example
          fname = '/directory/test_file.txt'
    Other approach will be to change to the directory with function module 'FTP_COMMAND' with parameter command set to cd /directory/ code will look like this:
    data: lv_command type string,
             lv_path type string.
    constants: lc_change_dir type string value 'cd'.
    *body of the program including calls of FM to connect to ftp
    concatenate lc_change_dir lv_path into lv_command sepparated by space.
    CALL FUNCTION 'FTP_COMMAND'               "this FM will execute any ftp command on ftp server
      EXPORTING
       HANDLE                = lv_handle
        COMMAND               = lv_command
      TABLES
        DATA                  = lt_result
    CALL FUNCTION 'FTP_R3_TO_SERVER'
           EXPORTING
           handle = w_hdl
           fname = 'test_file.txt'
          character_mode = 'X'.
    this "code" will create file test_file.txt in the ftp server on given directory from internal table passed to fm ftp_r3_to_server.
    list of ftp commands could be found http://www.cs.colostate.edu/helpdocs/ftp.html
    good explanation of ftp is here http://wiki.sdn.sap.com/wiki/display/Snippets/ABAPsolutiontoimplementFTP+transactions
    I hope this is understandable and helps to solve your problem
    Martin
    Edited by: Martin Gabris on Feb 3, 2011 1:38 PM

  • Problem while reading the file from FTP server

    Hi Friends,
    I have a problem while fetching files from FTP server.
    I used FTP_Connect, FTP_COMMAND function modules. I can able to put the files into FTP server.
    but I cant able to pick the files from FTP server.
    anyone have faced similar issues kindly let me know.
    Thanks
    Gowrishankar

    Hi,
    try this way..
    for reading the file using FTP you need to use different unix command ..
    Prabhuda

  • How to read XL file from FTP server

    Hi all,
    I have a requirement like to read file from FTP server using path
    ftp:
    10.212......\DTR\DTR_ Accounted_Out
    and again save  other file in same location ,
    to doing this RFC connection is required?
    give a  procedure or program to do this requirement ..
    To create rfc for FTP which connection type can i use ?
    Give complete settings to create rfc destination

    Hi Rakhi,
    Use the below code to check if you have received the proper data.
    call function 'FTP_SERVER_TO_R3' "Get data as character instead of BLOB
        exporting
          handle         = hdl
          fname          = docid
          character_mode = 'X'
        tables
          text           = chardata.
    If the data is incorrect, it is possible that you are in the wrong directory.
    Use
    call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = 'cd mydir\mysubdir' "cd <space> your path
        tables
          data          = result
        exceptions
          tcpip_error   = 1
          command_error = 2
          data_error    = 3.
    Regards,
    Jovito.

  • Downloading excel file from FTP Server to Application Server

    Hi,
    I have to get data from an excel file available on FTP server into an Internal table.Can I use FTP_SERVER_TO_R3 to do so.
    Please let me know if there are any function modules available to do this.
    Thanks,
    Prasuna.

    Dear Gayatri,
    You can get the file from FTP to internal table...
    I am sending you the code with inline comments ....Hope this will be helpful to you.
    Data: lv_key           TYPE i VALUE 26101957.
    Data: lv_password(30)  TYPE c.
      i_rfc_destination = 'SAPFTP'.
      lv_length = STRLEN( i_password ).
    CALL FUNCTION 'HTTP_SCRAMBLE'
        EXPORTING
          SOURCE      = i_password "give ftp server pwd
          sourcelen   = lv_length
          key         = lv_key
        IMPORTING
          destination = lv_password.
      CALL FUNCTION 'FTP_CONNECT'
        EXPORTING
          user            = i_user "give ftp user name
          password        = lv_password
          host            = i_host
          rfc_destination = i_rfc_destination
        IMPORTING
          handle          = lv_ftp_handle
        EXCEPTIONS
          not_connected   = 1
          OTHERS          = 2.
        CONCATENATE 'cd' i_folder_path INTO lv_cmd SEPARATED BY space.
    *i_folder path is the path in ftp server where file is  stored
        CALL FUNCTION 'FTP_COMMAND'
          EXPORTING
            handle        = lv_ftp_handle
            command       = lv_cmd
          TABLES
            data          = result
          EXCEPTIONS
            command_error = 1
            tcpip_error   = 2.
         lv_blob_length = 392.
         TRANSLATE i_filename TO LOWER CASE.
          CALL FUNCTION 'FTP_SERVER_TO_R3'
            EXPORTING
              handle      = lv_ftp_handle
              fname       = i_filename          "give required file name
            IMPORTING
              blob_length = lv_blob_length
            TABLES
              blob        = lt_dummy.
    Regards
    Sajid

Maybe you are looking for