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

Similar Messages

  • '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

  • 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.

  • 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

  • ALV issue: when save list using Local File command will get run time error!

    help!!!!
    report list using ALV method when to save this list using Local File.
    i will get GETWA_NOT_ASSIGNED run time error information.
    how resolve it?
    source code :
    REPORT   ZIFT0103.
    TABLES :  MARA,MARC,CDHDR,CDPOS,MAKT.
    ******DEVK909212****************
    ****&#21033;&#29992;&#24037;&#21378;&#26469;&#21306;&#20998;&#19981;&#21516;&#30340;SERVER&#30340;FTP ADDRESS ,user ,PASSWORD
    DATA: FTP_WERKS LIKE MARC-WERKS.
    ********&#23450;&#20041;&#19968;&#20010;RANGE&#29992;&#26469;&#25235;&#21462;MARC&#30340;&#20449;&#24687;
    RANGES:R_MATNR FOR MARA-MATNR OCCURS 0.
    ********&#23450;&#20041;&#19968;&#20010;INTERNAL TABLE &#26469;&#25235;&#21462;MARC &#30340;&#20449;&#24687;
    DATA:BEGIN OF IT_MARC OCCURS 0,
          MATNR LIKE MARC-MATNR,
          WERKS LIKE MARC-WERKS,
          USERNAME TYPE CDHDR-USERNAME,
         UDATE    TYPE CDHDR-UDATE,
         FLAG_UI TYPE C,
         END OF IT_MARC.
    *******&#23450;&#20041;&#23384;&#25918;&#21271;&#20140;&#30340;&#25968;&#25454;&#30340;&#21464;&#37327;
    DATA : BEGIN OF FTP_BEIJING OCCURS 0 ,
                  MATNR(25) ,
                  MATNR1(25) ,
                  MAKTX(30) ,
           END OF FTP_BEIJING .
    ******&#23450;&#20041;&#31119;&#28165;&#30340;&#25968;&#25454;&#21464;&#37327;
    DATA : BEGIN OF FTP_FUQING OCCURS 0 ,
                  MATNR(25) ,
                  MATNR1(25) ,
                  MAKTX(30) ,
           END OF FTP_FUQING .
    *******DEVK909212*****************
    DATA : BEGIN OF FTP_ITEMDOC1 OCCURS 0 ,
                  MATNR(25) ,
                  MAKTX(30) ,
           END OF FTP_ITEMDOC1 .
    DATA : BEGIN OF FTP_ITEMDOC OCCURS 0 ,
                  MATNR(25) ,
                  MATNR1(25) ,
                  MAKTX(30) ,
           END OF FTP_ITEMDOC .
    DATA: WA_ZMSGTA TYPE ZMSGTA ,
          l_ersda  like MARA-ERSDA .
    ***********DEVK909553********************
    ****&#29992;&#26469;&#20915;&#23450;&#25191;&#34892;FTP&#36824;&#26159;&#26174;&#31034;LIST**********
    DATA:g_tcode_flag.
    ***********DEVK909553********************
    Error message process ******************************
    DEFINE EXPLAIN_MSG.
       break soe_richard.
      CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
        EXPORTING
          ID                = &1   "SY-MSGID
          NUMBER            = &2   "SY-MSGNO
          LANGUAGE          = SY-LANGU
          TEXTFORMAT        = &3
          LINKPATTERN       =
          MESSAGE_V1        = &4                                "SY-MSGV1
          MESSAGE_V2        = &5                                "SY-MSGV2
          MESSAGE_V3        = &6                                "SY-MSGV3
          MESSAGE_V4        = &7                                "SY-MSGV4
        IMPORTING
          MESSAGE           = &8   "WA_ZMSGTA-MSE1
          RETURN            =
        TABLES
          TEXT              =
    END-OF-DEFINITION.
    DEFINE ERROR_MSG_UPDATA.
      CALL FUNCTION 'ZINSERT_MSG'  "IN UPDATE TASK
        EXPORTING
          XZMSGTA      = &1    "WA_ZMSGTA
        EXCEPTIONS
          UPDATE_ERROR = 1
          OTHERS       = 2.
    END-OF-DEFINITION.
    IF SY-TCODE = 'ZIFT103' .
      g_tcode_flag = 'L'.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          PERCENTAGE = 0
          TEXT       = '&#35831;&#32784;&#24515;&#31561;&#20505;,&#31995;&#32479;&#27491;&#22312;&#25235;&#25968;&#25454;'.
    ENDIF.
    l_ersda = sy-datum - 1 .  "&#21462;&#21069;&#19968;&#22825;&#20135;&#29983;&#30340;&#29289;&#26009;&#21495;&#30721;&#12290;
    DATA:BEGIN OF it_change OCCURS 0,
         OBJECTID TYPE CDHDR-OBJECTID,
         USERNAME TYPE CDHDR-USERNAME,
         UDATE    TYPE CDHDR-UDATE,
         TABKEY   TYPE CDPOS-TABKEY,
         END OF it_change.
    DATA:BEGIN OF it_cDhdr OCCURS 0,
         OBJECTID type CDHDR-OBJECTID,
         CHANGENR TYPE CDHDR-CHANGENR,
         USERNAME TYPE CDHDR-USERNAME,
         UDATE    TYPE CDHDR-UDATE,
         END OF it_cdhdr.
    DATA:search_len TYPE I.
    DATA:BEGIN of it_insert OCCURS 0,
         MATNR TYPE MARA-MATNR,
         WERKS TYPE MARC-WERKS,
         END OF it_insert.
    DATA:BEGIN OF it_MAKT OCCURS 0,
         MATNR TYPE MAKT-MATNR,
         MAKTX TYPE MAKT-MAKTX,
         END OF it_makt.
    DATA IT_MARA TYPE TABLE OF MARA WITH HEADER LINE.
    DATA:BEGIN OF IT_OUT OCCURS 0,
         MATNR TYPE MARA-MATNR,
         WERKS TYPE MARC-WERKS,
         MTART TYPE MARA-MTART,
         MEINS TYPE MARA-MEINS,
         MATKL TYPE MARA-MATKL,
         MAKTX TYPE MAKT-MAKTX,
         PSTAT TYPE MARA-PSTAT,
         BRGEW TYPE MARA-BRGEW,
         NTGEW TYPE MARA-NTGEW,
         GEWEI TYPE MARA-GEWEI,
         FERTH TYPE MARA-FERTH,
         KZUMW TYPE MARA-KZUMW,
         ERNAM TYPE MARA-ERNAM,
         ERSDA TYPE MARA-ERSDA,
         END OF IT_OUT.
    *-- DECLARE DATA FOR ALV
    TYPE-POOLS: slis.
    DATA  : g_variant LIKE disvariant,
            g_save(1) TYPE c,
            g_exit(1) TYPE c,
            gx_variant LIKE disvariant.
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, "
          gt_events   TYPE slis_t_event,
          gt_list_top_of_page TYPE slis_t_listheader,
          gs_print TYPE slis_print_alv,
          gs_layout         TYPE slis_layout_alv .
    ******&#21482;&#33021;&#25235;&#20986;&#31995;&#32479;&#26377;&#20570;&#26356;&#25913;&#30340;&#25968;&#25454;***************
    ******&#32780;&#31532;&#19968;&#27425;INSERT MARA&#30340;&#25968;&#25454;&#25235;&#19981;&#20986;&#26469;********
    START-OF-SELECTION.
    SELECT AOBJECTID AUSERNAME AUDATE BTABKEY
    INTO TABLE it_change
    FROM ( CDPOS AS B INNER JOIN CDHDR AS A ON
         AOBJECTCLAS = BOBJECTCLAS AND
         AOBJECTID   = BOBJECTID   AND
         ACHANGENR   = BCHANGENR )
    WHERE A~OBJECTCLAS = 'MATERIAL'
    AND   A~UDATE = l_ersda
    AND   B~TABNAME = 'MARC'
    AND   B~CHNGIND = 'I'.
    LOOP AT it_change.
       search_len = STRLEN( it_change-TABKEY ).
       search_len = search_len - 4.
       IF search_len > 0.
         IT_MARC-WERKS = it_change-TABKEY+search_len(4).
       ENDIF.
       IT_MARC-MATNR = it_change-objectid+0(18).
       IT_MARC-USERNAME = it_change-username.
       IT_MARC-UDATE    = It_change-udate.
       IT_MARC-FLAG_UI  = 'U'.
       APPEND IT_MARC.
       CLEAR IT_MARC.
       CLEAR R_MATNR.
       R_MATNR-SIGN = 'I'.
       R_MATNR-OPTION = 'EQ'.
       R_MATNR-LOW = IT_MARC-MATNR.
       APPEND R_MATNR.
    ENDLOOP.
    ****CDPOS is Cluster TABLE &#25152;&#20197;&#27809;&#26377;&#21150;&#27861;&#29992;INNER JOIN******
      SELECT OBJECTID CHANGENR USERNAME UDATE
      INTO TABLE it_cdhdr
      FROM CDHDR
      WHERE OBJECTCLAS = 'MATERIAL'
      AND   UDATE = l_ersda.
    AND   TCODE = 'MM02'.
      LOOP AT IT_cdhdr.
        SELECT * FROM CDPOS
        WHERE OBJECTCLAS = 'MATERIAL'
        AND   OBJECTID  = IT_CDHDR-OBJECTID
        AND   CHANGENR  = IT_CDHDR-CHANGENR
        AND   TABNAME   = 'MARC'
        AND   CHNGIND = 'I'.
          search_len = STRLEN( CDPOS-TABKEY ).
          search_len = search_len - 4.
          IF search_len > 0.
            IT_MARC-WERKS = CDPOS-TABKEY+search_len(4).
          ENDIF.
          IT_MARC-MATNR = IT_cdhdr-objectid+0(18).
          IT_MARC-USERNAME = IT_cdhdr-username.
          IT_MARC-UDATE    = IT_cdhdr-udate.
          IT_MARC-FLAG_UI  = 'U'.
          APPEND IT_MARC.
         CLEAR IT_MARC.
          CLEAR R_MATNR.
          R_MATNR-SIGN = 'I'.
          R_MATNR-OPTION = 'EQ'.
          R_MATNR-LOW = IT_MARC-MATNR.
          APPEND R_MATNR.
          CLEAR IT_MARC.
        ENDSELECT.
      ENDLOOP.
      IF g_tcode_flag = 'L'.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
            PERCENTAGE = 20
            TEXT       = '&#22788;&#29702;&#22909;&#24403;&#22825;CHANGE&#30340;&#25968;&#25454;'.
      ENDIF.
    *******&#25235;&#24403;&#22825;&#20570;&#20102;INSERT&#30340;&#25968;&#25454;*************
    *******&#19981;&#38656;&#35201;***********************
    SELECT BMATNR BWERKS INTO TABLE IT_INSERT
    FROM MARC AS B JOIN MARA AS A
    ON   AMATNR = BMATNR
    WHERE A~ERSDA = l_ersda.
    LOOP AT IT_INSERT.
       IT_MARC-MATNR = IT_INSERT-MATNR.
       IT_MARC-WERKS = IT_INSERT-WERKS.
       IT_MARC-FLAG_UI = 'I'.
       APPEND IT_MARC.
       CLEAR IT_MARC.
       CLEAR R_MATNR.
       R_MATNR-SIGN = 'I'.
       R_MATNR-OPTION = 'EQ'.
       R_MATNR-LOW = IT_MARC-MATNR.
       APPEND R_MATNR.
    ENDLOOP.
    IF g_tcode_flag = 'L'.
       CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
           PERCENTAGE = 40
           TEXT       = '&#22788;&#29702;&#22909;&#24403;&#22825;INSERT&#30340;&#25968;&#25454;'.
    ENDIF.
      IF g_tcode_flag = 'L'.
        PERFORM get_MAKTX.
        PERFORM get_mara.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
            PERCENTAGE = 100
            TEXT       = '&#22788;&#29702;&#22909;&#25968;&#25454;,&#24182;&#24320;&#22987;&#26174;&#31034;&#25968;&#25454;'.
        PERFORM do_data.
        PERFORM display_alv.
      ELSE.
        PERFORM get_MAKTX.
        PERFORM do_ftp.
      ENDIF.
    *&      Form  get_marktx
          text
    FORM get_maktx.
      SELECT MATNR MAKTX INTO TABLE IT_MAKT FROM MAKT
      WHERE MATNR IN R_MATNR AND SPRAS = '1'.
    ENDFORM.                    "get_marktx
    *&      Form  get_mara
          text
    FORM get_mara.
      SELECT * INTO TABLE it_mara FROM MARA
      WHERE MATNR IN R_MATNR.
    ENDFORM.                    "get_mara
    *&      Form  do_data
          text
    FORM do_data.
      SORT IT_MARC BY MATNR WERKS.
      DELETE ADJACENT DUPLICATES FROM IT_MARC COMPARING MATNR WERKS.
      LOOP AT IT_MARC.
        CLEAR IT_MAKT.
        CLEAR IT_MARA.
        READ TABLE IT_MAKT WITH KEY MATNR = IT_MARC-MATNR.
        READ TABLE IT_MARA WITH KEY MATNR = IT_MARC-MATNR.
        MOVE-CORRESPONDING IT_MARA TO IT_OUT.
        IT_OUT-MAKTX = IT_MAKT-MAKTX.
        IT_OUT-WERKS = IT_MARC-WERKS.
        IF IT_MARC-FLAG_UI = 'U'.
          IT_OUT-ERNAM = IT_MARC-USERNAME.
        ENDIF.
        APPEND IT_OUT.
        CLEAR IT_OUT.
      ENDLOOP.
    ENDFORM.                    "do_data
    *SELECT AMATNR BMAKTX INTO CORRESPONDING
    *FIELDS OF FTP_ITEMDOC1 FROM MARA AS A JOIN MAKT AS B
    *ON AMATNR = BMATNR WHERE A~ERSDA = l_ersda
    *AND B~SPRAS = '1' . "&#20195;&#34920;&#20026;&#20013;&#25991;&#35828;&#26126;&#12290;
    APPEND FTP_ITEMDOC1.
    *******DEVK909212****************
    *******&#28155;&#21152;RANGE*****************
    CLEAR R_MATNR.
    R_MATNR-SIGN = 'I'.
    R_MATNR-OPTION = 'EQ'.
    R_MATNR-LOW = FTP_ITEMDOC1-MATNR.
    APPEND R_MATNR.
    CLEAR  FTP_ITEMDOC1.
    *******DEVK909212****************
    *ENDSELECT.
    *******DEVK909212****************
    ****get WERKS information from MARC*******
    *SELECT MATNR WERKS INTO TABLE IT_MARC
    *FROM MARC
    *WHERE MATNR IN R_MATNR.
    *******DEVK909212****************
    ******DEVK909212****************
    **MARK**************************
    *LOOP AT FTP_ITEMDOC1 .
    MOVE : FTP_ITEMDOC1-MATNR TO FTP_ITEMDOC-MATNR,
            FTP_ITEMDOC1-MATNR TO FTP_ITEMDOC-MATNR1,
            FTP_ITEMDOC1-MAKTX TO FTP_ITEMDOC-MAKTX.
    APPEND FTP_ITEMDOC.
    CLEAR FTP_ITEMDOC.
    *ENDLOOP.
    ******DEVK909212****************
    ******DEVK909212***********************************
    **&#26681;&#25454;IT_MARC&#20013;&#20449;&#24687;&#65292;&#24448;&#21271;&#20140;&#21644;&#31119;&#28165;&#30340;TABLE&#20889;&#25968;&#25454;*****
    FORM do_ftp.
      LOOP AT IT_MARC.
    ***&#31119;&#28165;&#30340;
        IF IT_MARC-WERKS = '1010' OR IT_MARC-WERKS = '1020'
           OR IT_MARC-WERKS = '1023' .
         READ TABLE FTP_ITEMDOC1 WITH KEY MATNR = IT_MARC-MATNR.
         MOVE : FTP_ITEMDOC1-MATNR TO FTP_FUQING-MATNR,
            FTP_ITEMDOC1-MATNR TO FTP_FUQING-MATNR1,
            FTP_ITEMDOC1-MAKTX TO FTP_FUQING-MAKTX.
          CLEAR IT_MAKT.
          READ TABLE IT_MAKT WITH KEY = IT_MARC-MATNR.
          MOVE : IT_MARC-MATNR TO FTP_FUQING-MATNR,
             IT_MARC-MATNR TO FTP_FUQING-MATNR1,
             IT_MAKT-MAKTX TO FTP_FUQING-MAKTX.
          APPEND FTP_FUQING.
          CLEAR FTP_FUQING.
        ENDIF.
    ***&#21271;&#20140;&#30340;
        IF IT_MARC-WERKS = '1041' OR IT_MARC-WERKS = '1042'.
         READ TABLE FTP_ITEMDOC1 WITH KEY MATNR = IT_MARC-MATNR.
         MOVE : FTP_ITEMDOC1-MATNR TO FTP_BEIJING-MATNR,
            FTP_ITEMDOC1-MATNR TO FTP_BEIJING-MATNR1,
            FTP_ITEMDOC1-MAKTX TO FTP_BEIJING-MAKTX.
          CLEAR IT_MAKT.
          READ TABLE IT_MAKT WITH KEY = IT_MARC-MATNR.
          MOVE : IT_MARC-MATNR TO FTP_BEIJING-MATNR,
                 IT_MARC-MATNR TO FTP_BEIJING-MATNR1,
                 IT_MAKT-MAKTX TO FTP_BEIJING-MAKTX.
          APPEND FTP_BEIJING.
          CLEAR FTP_BEIJING.
        ENDIF.
      ENDLOOP.
    ****&#28165;&#26970;&#37325;&#22797;&#30340;&#25968;&#25454;**********
      SORT FTP_FUQING.
      DELETE ADJACENT DUPLICATES FROM FTP_FUQING.
      SORT FTP_BEIJING.
      DELETE ADJACENT DUPLICATES FROM FTP_BEIJING.
    ***&#20256;&#36865;&#25968;&#25454;********
      REFRESH FTP_ITEMDOC.
      FTP_ITEMDOC[] = FTP_FUQING[].
      FTP_WERKS = '1010'.
      PERFORM ftp_work.
      REFRESH FTP_ITEMDOC.
      FTP_ITEMDOC[] = FTP_BEIJING[].
      FTP_WERKS = '1041'.
      PERFORM ftp_work.
    ******DEVK909212***********************************
    ENDFORM.                    "do_ftp
    *&      Form  ftp_work
         &#25226;&#20197;&#21069;FTP&#30340;&#24037;&#20316;&#20570;&#19968;&#20010;FORM
    *******DEVK909212**************************
    FORM ftp_work.
    *******DEVK909212**************************
      CHECK FTP_ITEMDOC[] IS NOT INITIAL.
    FTP function *****************************************************
      DATA : HDL TYPE I,
             L_SLEN TYPE I ,
             ERROR,
             KEY TYPE I VALUE 26101957,
             DEST TYPE RFCDES-RFCDEST VALUE 'SAPFTPA'.
      DATA: FTP_RESULT TYPE TABLE OF TEXT.
      DATA: P_FILE TYPE RLGRAP-FILENAME.
      DATA: L_USER(16) TYPE C VALUE 'SFIS',
            L_PWD(16) TYPE C VALUE 'SFIS',
            L_HOST(16) TYPE C VALUE '172.16.31.17'.
    *******DEVK909212**************************
    *****&#26681;&#25454;&#19981;&#21516;&#30340;&#24037;&#21378;&#26469;&#25235;FTP&#30340;&#20449;&#24687;
      CALL FUNCTION 'Z_FTP_SFIS'
        EXPORTING
          BLART = 'S'
          WERKS = FTP_WERKS
        IMPORTING
          HOST  = L_HOST
          USER1 = L_USER
          PASS1 = L_PWD.
    *******DEVK909212**************************
      CONCATENATE l_ersda '.KP' INTO P_FILE.
      SET EXTENDED CHECK OFF.
      ERROR = 0.
      CHECK HDL IS INITIAL.
    Connect to server
      L_SLEN = STRLEN( L_PWD ).
      CALL FUNCTION 'HTTP_SCRAMBLE'
        EXPORTING
          SOURCE      = L_PWD
          SOURCELEN   = L_SLEN
          KEY         = KEY
        IMPORTING
          DESTINATION = L_PWD.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
       EXPORTING
         TEXT = 'Connect to FTP Server'.
      CALL FUNCTION 'FTP_CONNECT'
        EXPORTING
          USER            = L_USER
          PASSWORD        = L_PWD
          HOST            = L_HOST
          RFC_DESTINATION = DEST
        IMPORTING
          HANDLE          = HDL
        EXCEPTIONS
          NOT_CONNECTED   = 1
          OTHERS          = 2.
      IF SY-SUBRC <> 0.
        MOVE: 'B' TO WA_ZMSGTA-BLART,
              l_ersda  TO WA_ZMSGTA-REFNUMBER,
              SY-MSGTY TO WA_ZMSGTA-MSGTY,
              'MARA' TO WA_ZMSGTA-TBMA_VAL.
        EXPLAIN_MSG SY-MSGID SY-MSGNO ' ' SY-MSGV1 SY-MSGV2 SY-MSGV3
                    SY-MSGV4 WA_ZMSGTA-MSE1.
        ERROR_MSG_UPDATA WA_ZMSGTA.
        EXIT.
      ENDIF.
      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          HANDLE        = HDL
          COMMAND       = 'ascii'
        TABLES
          DATA          = FTP_RESULT
        EXCEPTIONS
          TCPIP_ERROR   = 1
          COMMAND_ERROR = 2
          DATA_ERROR    = 3.
      IF SY-SUBRC <> 0.
        EXPLAIN_MSG SY-MSGID SY-MSGNO ' ' SY-MSGV1 SY-MSGV2 SY-MSGV3
                    SY-MSGV4 WA_ZMSGTA-MSE1.
        MOVE: 'B' TO WA_ZMSGTA-BLART,
              l_ersda  TO WA_ZMSGTA-REFNUMBER,
              SY-MSGTY TO WA_ZMSGTA-MSGTY,
              'MARA' TO WA_ZMSGTA-TBMA_VAL.
        ERROR_MSG_UPDATA WA_ZMSGTA.
        EXIT.
      ENDIF.
      CALL FUNCTION 'FTP_R3_TO_SERVER'
        EXPORTING
          HANDLE         = HDL
          FNAME          = P_FILE
          CHARACTER_MODE = 'X'
        TABLES
          TEXT           = FTP_ITEMDOC
        EXCEPTIONS
          TCPIP_ERROR    = 1
          COMMAND_ERROR  = 2
          DATA_ERROR     = 3
          OTHERS         = 4.
      IF SY-SUBRC <> 0.
        EXPLAIN_MSG SY-MSGID SY-MSGNO ' ' SY-MSGV1 SY-MSGV2 SY-MSGV3
                    SY-MSGV4 WA_ZMSGTA-MSE1.
        MOVE: 'B' TO WA_ZMSGTA-BLART,
              l_ersda  TO WA_ZMSGTA-REFNUMBER,
              SY-MSGTY TO WA_ZMSGTA-MSGTY,
              'MARA' TO WA_ZMSGTA-TBMA_VAL.
        ERROR_MSG_UPDATA WA_ZMSGTA.
        EXIT.
      ENDIF.
    *******DEVK909212**************************
    *******CLOSE FTP******************
      CHECK NOT HDL IS INITIAL.
      CALL FUNCTION 'FTP_DISCONNECT'
        EXPORTING
          HANDLE = HDL.
      CALL FUNCTION 'RFC_CONNECTION_CLOSE'
        EXPORTING
          DESTINATION = DEST
        EXCEPTIONS
          OTHERS      = 1.
      CLEAR HDL.
    ENDFORM.                    "ftp_work
    *******DEVK909212**************************
    FORM DISPLAY_ALV .
    *-- PREPARE ALV DATA
      PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
      PERFORM COMMENT_BUILD  USING GT_LIST_TOP_OF_PAGE[].
    *-- LAYOUT SETTING
      PERFORM PREPARE_ALV_FIELD USING GT_FIELDCAT[].
    *-- ALV DISPLAY
      PERFORM CALL_REUSE_ALV_GRID_DISPLAY.
    ENDFORM.                    " display_alv
    *&      Form  eventtab_build
          text
         -->P_GT_EVENTS[]  text
    FORM EVENTTAB_BUILD USING PT_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE = 0
        IMPORTING
          ET_EVENTS   = PT_EVENTS.
      READ TABLE PT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        LS_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY PT_EVENTS FROM LS_EVENT INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " eventtab_build
    *&      Form  comment_build
          text
         -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM COMMENT_BUILD  USING PT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
      DATA: LS_LINE TYPE SLIS_LISTHEADER,
            L_DATE(30),
            l_v_BWKEY like T001W-BWKEY,  "Valuation area
            l_v_BUKRS like T001K-BUKRS.  "Firm/Company
    Listen&#57692;erschrift: Typ H
    CLEAR LS_LINE.
    LS_LINE-TYP  = 'H'.
    LS_LINE-KEY:  not used for this type
    select single BWKEY
       into l_v_BWKEY
       from t001w
       where WERKS IN s_WERKS.
    select single BUKRS
       into l_v_BUKRS
       from t001k
       where BWKEY = l_v_BWKEY.
    SELECT SINGLE butxt INTO LS_LINE-INFO
        FROM t001
       WHERE bukrs = l_v_BUKRS.
    APPEND LS_LINE TO PT_TOP_OF_PAGE.
    Kopfinfo: Typ S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = '&#25253;&#34920;&#21517;&#31216;&#65306;'.
      LS_LINE-INFO = SY-TITLE.
      APPEND LS_LINE TO PT_TOP_OF_PAGE.
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = '&#25171;&#21360;&#26085;&#26399;&#65306;'.
      WRITE SY-DATUM TO LS_LINE-INFO.
    ls_line-info = sy-datum.
      APPEND LS_LINE TO PT_TOP_OF_PAGE.
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = '&#25171;&#21360;&#26178;&#38291;&#65306;'.
      WRITE SY-UZEIT TO LS_LINE-INFO.
    ls_line-info = sy-uzeit.
      APPEND LS_LINE TO PT_TOP_OF_PAGE.
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = '&#20351;&#29992;&#32773;&#65306;'.
      LS_LINE-INFO = SY-UNAME.
      APPEND LS_LINE TO PT_TOP_OF_PAGE.
    ENDFORM.                    " comment_build
    *&      Form  prepare_alv_field
          text
         -->P_GT_FIELDCAT[]  text
    FORM PREPARE_ALV_FIELD USING P_FIELDCAT TYPE  SLIS_T_FIELDCAT_ALV.
      DATA: LS_LINE TYPE  SLIS_FIELDCAT_ALV.
    *-- DEFINE MARCO
      DEFINE APPEND_ALV_FIELD.
        CLEAR LS_LINE.
        LS_LINE-FIELDNAME = &1.
        LS_LINE-TABNAME = &2.
        LS_LINE-REPTEXT_DDIC = &3.
        LS_LINE-SELTEXT_L = &3.
        LS_LINE-SELTEXT_M = &3.
        LS_LINE-SELTEXT_S = &3.
        LS_LINE-QFIELDNAME = &4.
        LS_LINE-QTABNAME = &5.
        LS_LINE-NO_OUT    = &6.
        LS_LINE-NO_ZERO   = &7.
        LS_LINE-OUTPUTLEN = &8.
        APPEND LS_LINE TO P_FIELDCAT.
      END-OF-DEFINITION.
      APPEND_ALV_FIELD: 'MATNR' 'IT_OUT' '&#26009;&#21495;'
                      'O' 'X' ''.
      APPEND_ALV_FIELD: 'WERKS' 'IT_OUT' '&#24037;&#21378;'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'MTART' 'IT_OUT' 'MTyp'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'MEINS' 'IT_OUT' 'BUn'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'MATKL' 'IT_OUT' '&#29289;&#26009;&#32452;\&#20998;&#32676;&#30721;'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'MATKX' 'IT_OUT' '&#29289;&#26009;&#25551;&#36848;'
                        'O' 'X' ''.
      APPEND_ALV_FIELD: 'PSTAT' 'IT_OUT' '&#32500;&#25252;&#29366;&#24577;'
                        'O' 'X' ''.
      APPEND_ALV_FIELD: 'BRGEW' 'IT_OUT' '&#27611;&#37325;'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'NTGEW' 'IT_OUT' '&#20928;&#37325;'
                       'O' 'X' ''.
      APPEND_ALV_FIELD: 'GEWEI' 'IT_OUT' 'WUn'
                      'O' 'X' ''.
      APPEND_ALV_FIELD: 'FERTH' 'IT_OUT' '&#23545;&#22806;&#26426;&#31181;&#21517;'
                     'O' 'X' ''.
      APPEND_ALV_FIELD: 'KZUMW' 'IT_OUT' '&#39640;&#20851;&#31246;&#26631;&#35782;'
                   'O' 'X' ''.
      APPEND_ALV_FIELD: 'ERNAM' 'IT_OUT' '&#21019;&#24314;&#32773;'
                 'O' 'X' ''.
      APPEND_ALV_FIELD: 'ERSDA' 'IT_OUT' '&#21019;&#24314;&#26085;&#26399;'
              'O' 'X' ''.
    ENDFORM.                    " prepare_alv_field
    *&      Form  call_reuse_alv_grid_display
          text
    -->  p1        text
    <--  p2        text
    FORM CALL_REUSE_ALV_GRID_DISPLAY .
      gs_layout-f2code              = 'DISPLAY'.
      gs_print-no_print_listinfos   = 'X'.
      gs_layout-colwidth_optimize   = 'X'.       "&#21015;&#23485;&#24230;&#33258;&#21160;&#26681;&#25454;&#20869;&#23481;&#20248;&#21270;
    gs_layout-f2code              = '&ETA'.    "double check&#24377;&#20986;&#35814;&#32454;&#20449;&#24687;
      gs_layout-zebra               = 'X'.       "&#28165;&#21333;&#26465;&#32441;&#26174;&#31034;
      gs_layout-no_vline            = ''.        "&#26159;&#21542;&#26174;&#31034;&#21015;&#38388;&#38548;&#32447;
      gs_layout-box_fieldname       = ''.        "&#26159;&#21542;&#26174;&#31034;checkbox
      gs_layout-confirmation_prompt = ''.        "&#25512;&#20986;&#28165;&#21333;&#26159;&#21542;&#25552;&#31034;
      gs_layout-detail_titlebar     = '&#35814;&#32454;&#20449;&#24687;'."&#35814;&#32454;&#28165;&#21333;&#30340;&#26631;&#39064;
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM                = SY-CPROG
          I_BACKGROUND_ID                   = 'ALV_BACKGROUND'
         I_CALLBACK_PF_STATUS_SET          = 'ALV_PF_STATUS'
         I_CALLBACK_USER_COMMAND           = 'ALV_USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = GT_LIST_TOP_OF_PAGE[]
          IT_FIELDCAT                       = GT_FIELDCAT[]
          IT_EVENTS                         = GT_EVENTS[]
          I_STRUCTURE_NAME                  = 'IT_OUT'
          I_SAVE                            = 'A'
          IS_LAYOUT                         = GS_LAYOUT
          IS_PRINT                          = GS_PRINT
        TABLES
          T_OUTTAB                          = IT_OUT
        EXCEPTIONS
          PROGRAM_ERROR                     = 1
          OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " call_reuse_alv_grid_display
    *&      Form  PREPARE_ALV_FIELD
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
    ENDFORM.                    "TOP_OF_PAGE

    Hi,
    Please check your field catalog and refer field names once again.
    Check spelling, or Check strucutre properly.
    There are something wrong in your catalog definition
    aRs.

  • FTP Adapter errors out while writing a file

    Hi ,
    I am facing this problem while using FTP adapter tries to write a file on a specific remote machine.The Adapter throws this following error:
    Missing class: oracle.tip.adapter.api.TranslationAware
         Dependent class: oracle.tip.adapter.file.outbound.FileInteractionSpec
         Loader: global.libraries:1.0
         Code-Source: /XXX/ias/product/asmt_10131/j2ee/oc4j_soa/applib/fileAdapter.jar
         Configuration: <code-source> in /XXX/ias/product/asmt_10131/j2ee/oc4j_soa/config/server.xml
    The missing class is available from the following locations:
         1. Code-Source: /XXX/ias/product/asmt_10131/bpel/lib/orabpel.jar (from <code-source> in /XXX/ias/product/asmt_10131/j2ee/oc4j_soa/config/server.xml)
         This code-source is available in loader oracle.bpel.common:10.1.3.
    </summary>
    Any Suggestions will be helpful.
    Thanks
    PS

    Hi Rama Krishna
      Are you saying that you are transferring data of your
    internal table to another server using a FM??? Am not
    sure if that can be done.
      How about trying this way????
      Download the data to a file on your application
    server, using open dataset statement. Then transfer this
    file to the other server using FM's FTP_CONNECT, FTP_COMMAND ....
    Kind Regards
    Eswar

  • Error in ftp file transfer

    Hi All,
      I am trying to populate pdf from sap server to different server. when  i am trying to open that pdf in target system , getting the error " root object is missing or invalid "  here is my code :
    CALL FUNCTION 'HTTP_SCRAMBLE'
         EXPORTING
           source      = p_pwd
           sourcelen   = lv_pwd_len
           key         = lc_key
         IMPORTING
           destination = p_pwd.
    * connect to FTP server
       CALL FUNCTION 'FTP_CONNECT'
         EXPORTING
           user                   = p_user
           password               = p_pwd
    *   ACCOUNT                =
           host                   = p_ip
           rfc_destination        = lc_rfc_dest
    *   GATEWAY_USER           =
    *   GATEWAY_PASSWORD       =
    *   GATEWAY_HOST           =
        IMPORTING
          handle                 = lv_handle
    * EXCEPTIONS
    *   NOT_CONNECTED          = 1
    *   OTHERS                 = 2
       IF sy-subrc <> 0.
         l_fail = 'X'.
         WRITE : / 'FTP Connection failed'.
         EXIT.
       ENDIF.
       CALL FUNCTION 'FTP_COMMAND'
         EXPORTING
          handle                = lv_handle
           command               = 'cd /Payadvice         '"lv_cmd
           compress              = 'N'
    *   RFC_DESTINATION       = lc_rfc_dest     "sapftpa
    *   VERIFY                =
    * IMPORTING
    *   FILESIZE              =
    *   FILEDATE              =
    *   FILETIME              =
         TABLES
           data                  = it_output
        EXCEPTIONS
          tcpip_error           = 1
          command_error         = 2
          data_error            = 3
          OTHERS                = 4
       IF sy-subrc NE 0.
         l_fail = 'X'.
         EXIT.
       ENDIF.
       CLEAR l_fail.
    CALL FUNCTION 'FTP_COMMAND'
       EXPORTING
        HANDLE                = lv_handle
         command               = 'binary'
       tables
         data                  = it_lines
      EXCEPTIONS
        TCPIP_ERROR           = 1
        COMMAND_ERROR         = 2
        DATA_ERROR            = 3
        OTHERS                = 4
    IF sy-subrc <> 0.
    * Implement suitable error handling here
    ENDIF.
       CLEAR wa_result.
       CONCATENATE  v_name '.pdf' INTO wa_result.
       DATA: l_count TYPE i.
       CALL FUNCTION 'FTP_R3_TO_SERVER'
         EXPORTING
           handle         = lv_handle
           fname          = wa_result
    *      blob_length    = l_count
           character_mode = 'X'
         TABLES
    *       BLOB           =
           text           = it_lines"it_tmp
         EXCEPTIONS
           tcpip_error    = 1
           command_error  = 2
           data_error     = 3
           OTHERS         = 4.
       IF sy-subrc NE 0.
         l_fail = 'X'.
         EXIT.
         endif.
       clear insfile.
         CONCATENATE 'put' wa_result INTO insfile SEPARATED BY space.
         CALL FUNCTION 'FTP_COMMAND'
           EXPORTING
            HANDLE                = lv_handle
             command               = insfile
    *       COMPRESS              = 'N'
    *       RFC_DESTINATION       =
    *       VERIFY                =
    *     IMPORTING
    *       FILESIZE              =
    *       FILEDATE              =
    *       FILETIME              =
           tables
             data                  = it_lines
          EXCEPTIONS
            TCPIP_ERROR           = 1
            COMMAND_ERROR         = 2
            DATA_ERROR            = 3
            OTHERS                = 4 .
       IF sy-subrc NE 0.
         l_fail = 'X'.
         EXIT.
       ELSE.
         UPDATE zwork_to_sapvenp SET flag1 = 'X' WHERE inv_act_doc = lv_name.
         IF sy-subrc = 0.
         ENDIF.
       ENDIF.
    *ftp disconnect
       CALL FUNCTION 'FTP_DISCONNECT'
         EXPORTING
           handle = lv_handle.
       CALL FUNCTION 'RFC_CONNECTION_CLOSE'
        EXPORTING
          destination                = lc_rfc_dest
    *   TASKNAME                   =
    * EXCEPTIONS
    *   DESTINATION_NOT_OPEN       = 1
    *   OTHERS                     = 2
       IF sy-subrc <> 0.
    * Implement suitable error handling here
       ENDIF.
    here  "put" command is not working properly getting command error .  please help.

    it_lines    TYPE STANDARD TABLE OF tline WITH HEADER LINE.
       insfile          TYPE text ,

  • File open error at ftp even the file is not open.....

    Hi,
    i get the error File open with the fm GUI_UPLOAD while uploading the XML file from FTP server.
    What is interesting is that i did not open the file, furthermore i closed all the windows else that sap window,
    but still i get the file open error.
    We create the xml file when created a new delivery. And this xml file is sent to a bukrs's ftp and they also sent the same xml after some validations done.
    When it arrives to our ftp server i make it post goods issue automatically but from yesterday i got the file open error, it was working fine just before today.
    What could be the problem?
    Hint: Yesterday and previous day files still work fine but files created today are faulty.
    Thanks.

    Thanks for replies.
    My code is that:
    call function 'HTTP_SCRAMBLE'
        EXPORTING
          source      = gv_password
          sourcelen   = slen
          key         = gv_key
        IMPORTING
          destination = gv_password.
      describe field gv_password length gv_pwd_len in character mode.
      call function 'FTP_CONNECT'
        exporting
          user            = 'HHH\GrupMMM'
          password        = gv_password
          host            = '10.10.10.10' "assume that is the host
          rfc_destination = 'SAPFTPA'
        importing
          handle          = gv_handle
        exceptions
          not_connected   = 1
          others          = 2.
      if sy-subrc eq 0.
        "concatenate 'put' ld_full_path '[' ld_full_path ']'
        *gv_com = 'lcd C:\MMM\RETURN_FILES'.*
        clear mtab_data.
        free mtab_data.
        call function 'FTP_COMMAND'
          exporting
            handle        = gv_handle
            command       = gv_com
          tables
            data          = mtab_data
          exceptions
            tcpip_error   = 1
            command_error = 2
            data_error    = 3
            others        = 4.
        if sy-subrc eq 0.
        endif.
    When i get the list of the return files i get data of each file via gui_upload.
    CALL FUNCTION 'GUI_UPLOAD'
            EXPORTING
              filename   = filename
              filetype   = 'BIN'                             
            IMPORTING
              filelength = totalsize
            TABLES
              data_tab   = xml_table[]
            EXCEPTIONS
              FILE_READ_ERROR = 1
              FILE_OPEN_ERROR = 2
              NO_BATCH = 3
              GUI_REFUSE_FILETRANSFER = 4
              INVALID_TYPE = 5
              NO_AUTHORITY = 6
              UNKNOWN_ERROR = 7
              BAD_DATA_FORMAT = 8
              HEADER_NOT_ALLOWED = 9
              SEPARATOR_NOT_ALLOWED = 10
              HEADER_TOO_LONG = 11
              UNKNOWN_DP_ERROR = 12
              ACCESS_DENIED = 13
              DP_OUT_OF_MEMORY = 14
              DISK_FULL = 15
              DP_TIMEOUT = 16.
    However i get the open error for all files created today.
    By the way, how can i use open dataset instead of ftp commands? How can i see the files at apllication server?
    i get the files via IP of the FTP but how can i get files from application server?
    Thanks.

  • 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

  • LKM SAP ERP to Oracle (SQLLDR) - ERROR!!!

    Hi ,
    I have error on the step Extract Data with this error
    oracle.odi.sdk.opentools.OpenToolExecutionException: Error occured in open tool execute methodError in executing ABAP programUnable to connect FTP. Check ABAP program
         at oracle.odi.sap.km._OdiSapAbapExecute.execute(_OdiSapAbapExecute.java:466)
         at com.sunopsis.dwg.function.SnpsOpenToolFunction.actionExecute(SnpsOpenToolFunction.java)
         at com.sunopsis.dwg.function.SnpsOpenToolFunction.execute(SnpsOpenToolFunction.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execIntegratedFunction(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlC.treatTaskTrt(SnpSessTaskSqlC.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.j(e.java)
         at com.sunopsis.dwg.cmd.g.z(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Thread.java:619)
    and the description of ABAB code is ( cut from the whole ABAB code to show you the part of FTP Coding on ABAB language)
    CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
    user = 'odiadmin'
    password = 'odiadmin'
    host = '10.8.61.200'
    rfc_destination = 'SAPFTPA'
    IMPORTING
    handle = lv_hdl
    EXCEPTIONS
    not_connected = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'Unable to connect FTP.'.
    Append et_file_return.
    ELSE.
    IF NOT lc_pasv IS INITIAL.
    REFRESH lt_result.
    lv_cmd = lc_cmd1.
    CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
    handle = lv_hdl
    command = lv_cmd
    TABLES
    data = lt_result
    EXCEPTIONS
    tcpip_error = 1
    command_error = 2
    data_error = 3.
    IF sy-subrc <> 0.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'Error in passing FTP .'.
    Append et_file_return.
    ENDIF.
    CALL FUNCTION 'FTP_R3_TO_CLIENT'
    EXPORTING
    fname = iv_filename
    rfc_destination = lc_dest
    character_mode = lc_pasv
    TABLES
    text = gt_result
    EXCEPTIONS
    command_error = 1
    data_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'Error passing data to FTP .'.
    Append et_file_return.
    ENDIF.
    free : gt_result.
    CONCATENATE lc_cmd2 iv_filename
    INTO lv_cmd SEPARATED BY ' '.
    REFRESH lt_result.
    CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
    handle = lv_hdl
    command = lv_cmd
    TABLES
    data = lt_result
    EXCEPTIONS
    tcpip_error = 1
    command_error = 2
    data_error = 3.
    IF sy-subrc NE 0.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'Error in passing FTP .'.
    Append et_file_return.
    EXIT.
    ELSE.
    clear et_file_return.
    et_file_return-TYPE = gc_success.
    et_file_return-message = 'Data Transfer Successful'.
    Append et_file_return.
    ENDIF.
    ELSE.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'No data Available.'.
    Append et_file_return.
    CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
    handle = lv_hdl.
    CALL FUNCTION 'RFC_CONNECTION_CLOSE'
    EXPORTING
    destination = lc_dest
    EXCEPTIONS
    OTHERS = 1.
    IF sy-subrc <> 0.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message = 'Error in RFC connection.'.
    Append et_file_return.
    ENDIF.
    ENDIF.
    ENDIF.
    ELSE.
    clear et_file_return.
    et_file_return-TYPE = gc_error.
    et_file_return-message =
    'Installed ABAP program does not match interface definition'.
    Append et_file_return.
    ENDIF."
    it seem that the error stop on the first exception that will return the message "Unable to connect FTP Server"
    I don't know why ,
    This SAP is 4.6C
    Thanks
    Edited by: somchai on Sep 16, 2009 11:27 PM

    Hi Somchai,
    r U able to resolve ur issue ..........i'm also struck there at the same point.
    I am using shared folder for file transfer and my error message is
    java.lang.RuntimeException: Error occured in open tool execute method...Error in executing ABAP program...Error in executing ABAP program...Error occurred when creating dataset\\<hostname>\bi-interface$\ZODI_11001_12001_GLOBAL.txt
    Thanks.
    Edited by: Drona on Mar 26, 2012 7:25 AM

  • 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

  • Error: HOST RAISING NOT_CONNECTED

    Hey All Gurus,
    I have a question for all the FTP Experts! I am using FM: FTP_CONNECT and am getting the error - HOST RAISING NOT_CONNECTED. Any clues why this would be happening, has anyone encountered this in the past?
    As always, greatly appreciate your help!
    Thanks Nina.

    HI,
    Check with the connection between ur sap and the remote server that you are trying to connect.
    check this program
    REPORT ZFTPSAP LINE-SIZE 132.
    DATA: BEGIN OF MTAB_DATA OCCURS 0,
    LINE(132) TYPE C,
    END OF MTAB_DATA.
    DATA: MC_PASSWORD(20) TYPE C,
    MI_KEY TYPE I VALUE 26101957,
    MI_PWD_LEN TYPE I,
    MI_HANDLE TYPE I.
    START-OF-SELECTION.
    *-- Your SAP-UNIX FTP password (case sensitive)
    MC_PASSWORD = 'password'.
    DESCRIBE FIELD MC_PASSWORD LENGTH MI_PWD_LEN.
    *-- FTP_CONNECT requires an encrypted password to work
    CALL 'AB_RFC_X_SCRAMBLE_STRING'
         ID 'SOURCE' FIELD MC_PASSWORD ID 'KEY' FIELD MI_KEY
         ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD MC_PASSWORD
         ID 'DSTLEN' FIELD MI_PWD_LEN.
    CALL FUNCTION 'FTP_CONNECT'
         EXPORTING
    *-- Your SAP-UNIX FTP user name (case sensitive)
           USER            = 'userid'
           PASSWORD        = MC_PASSWORD
    *-- Your SAP-UNIX server host name (case sensitive)
           HOST            = 'unix-host'
           RFC_DESTINATION = 'SAPFTP'
         IMPORTING
           HANDLE          = MI_HANDLE
         EXCEPTIONS
           NOT_CONNECTED   = 1
           OTHERS          = 2.
    CHECK SY-SUBRC = 0.
    CALL FUNCTION 'FTP_COMMAND'
         EXPORTING
           HANDLE = MI_HANDLE
           COMMAND = 'dir'
         TABLES
           DATA = MTAB_DATA
         EXCEPTIONS
           TCPIP_ERROR = 1
           COMMAND_ERROR = 2
           DATA_ERROR = 3
           OTHERS = 4.
    IF SY-SUBRC = 0.
      LOOP AT MTAB_DATA.
        WRITE: / MTAB_DATA.
      ENDLOOP.
    ELSE.
    do some error checking.
      WRITE: / 'Error in FTP Command'.
    ENDIF.
    CALL FUNCTION 'FTP_DISCONNECT'
         EXPORTING
           HANDLE = MI_HANDLE
         EXCEPTIONS
           OTHERS = 1.  
    Thanks
    Mahesh

  • Error in starting Adobe Bridge in Photoshop CS2

    I've just installed Photoshop CS2, however upon opening Adobe Bridge this error message appears " The application has failed to start because libagluc28.dll was not found. Reinstalling to application may fix the problem"
    I have reinstalled and click repair but to no avail
    I followed Adobe Support Knowledgebase solution and run CMD and this appears:
    c:Documents and Settings/Jesus M Ferraris>
    then i entered the command
    cacls c:\windows\installer /T /E /C /G administrators:F
    but an error message appears - 'cacls' is not recognized as an internal or external command, operable program or bathc file
    I also entered the next command
    cacls "c:\documents and setting\all users" /Y /E /C /G administrators:F
    still the same error as above appears, Please help, have I miss something or was my procedure correct...
    P4, 512ram, WXP 80gHD

    Very useful.
    Good Luck.
    My
    Si
    tes

  • Windows Vista: Ipod Error Message, no longer read by PCs

    Hello,
    I have a 5th generation black ipod video with 30GB of memory.
    The other day I hooked it up to my laptop (Toshiba, 4 months old) that it's been functioning on with no problems whatsoever. This weird error message flashed twice about it not being able to sync because of some software problem.
    Eversince then, the only thing I can charge my ipod on is the family treadmill in the basement (~_~) as no other computer in the house recognizes it. I can't even charge it through the wall sockets, either.
    I have changed the ipod cord, still no luck. I've also reset the device about 3 or 4 times and uninstalled, restarted the laptop then reinstalled itunes. I would like to reset it back to factory settings but that's impossible as computers/laptops don't pick it up. I live very far from a Mac store...
    What's a girl to do? I can't live without my Busta Rhymes and Wu-Tang Clan!
    Any advice would be greatly appreciated! Thanks!

    you have to update Vista go to this site and up-date http://windowsupdate.microsoft.com

  • Error while offsetting a variable

    Hello Experts
    I want to display the data for last 5 years in my query. So I tried using the SAP exit variable Current Calendar Year (0CYEAR) and the offset it by 5. However, I am getting the following error message for the query "System error in program SAPLRR12 and form REP_ASSIGN_INITIAL_OPT-01"
    Any Help on this is appreciated and points will be assigned.
    Thanks

    Thanks Chetan for your prompt reply. I have assigned points.
    But I would appreciate if you help me clear my understanding of offseting a variable.
    Say if the Current Calendar Year variable returns 2008, then will offseting that variable by 5 return me the data for years 2008, 2007, 2006, 2005 , 2004. Or, will it just return me the data for 2008 - 5 = 2004 only.
    Thanks
    Rishi

Maybe you are looking for

  • How to display char code properly?

    Hi all,   I am trying to convert the decimal numebr (0 to 127) to a char (ASCII code). I found the code here http://digital.ni.com/public.nsf/allkb/894CF5FE064​971BF8625758400014993 I try with several numbers but it doesn't shown the same character a

  • MOVED: what do i need to be able to watch HDTV .. tv?!?!?!?!?!?

    This topic has been moved to Anything Under The Sun. what do i need to be able to watch HDTV .. tv?!?!?!?!?!?

  • View disappeared from menu bar in word and i don't know how to get back

    I clicked the wrong button and view disappeared from menu bar in word and I can't get it back.  I've tried to reinstate it from system preferences and I've tried everything in the help menu. Please help

  • 0langu for master data

    Hi Experts, I am loading master data -text into BW . the thing is i want english language data to be loaded into BW out of other texts, for that i want 0langu to be in dataselection part of infopackage. Its there in RSA3 of R/3 system, its been selec

  • Is it possible to deploy a EJB in runtime?

    I wanna develope a program in java wich deploy a bean at runtime, having the .ear, and all the other files, the container running on, and so on. Are API's available for performing this func ?