SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Transfer a file using FTP



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Connect to External system, Unix и Perl
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1640

PostPosted: Sat Oct 27, 2007 2:44 pm    Post subject: Transfer a file using FTP Reply with quote

Code:
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_date+0(2) = sy-datum+4(2).
  w_date+2(2) = sy-datum+6(2).
  w_date+4(4) = sy-datum+0(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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Connect to External system, Unix и Perl All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.