<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: learn abap object in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212564#M474104</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;shweta.ahlawat@gmail.com&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks !!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 May 2007 11:55:45 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-05-03T11:55:45Z</dc:date>
    <item>
      <title>learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212556#M474096</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hallow&lt;/P&gt;&lt;P&gt;i wont to learn how to use classes and perform &lt;/P&gt;&lt;P&gt;in abap, any document will help&lt;/P&gt;&lt;P&gt;regards &lt;/P&gt;&lt;P&gt;i wont document that not in help.sap.com.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 06:46:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212556#M474096</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T06:46:08Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212557#M474097</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi antonio,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Give me ur mail id i will send it to u.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ravi G&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 06:54:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212557#M474097</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T06:54:51Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212558#M474098</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt" target="test_blank"&gt;http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt" target="test_blank"&gt;http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf" target="test_blank"&gt;http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt" target="test_blank"&gt;http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf" target="test_blank"&gt;http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw2004s/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw2004s/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regds&lt;/P&gt;&lt;P&gt;anjali&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 06:59:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212558#M474098</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T06:59:54Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212559#M474099</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;go through this,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapbrain.com/TUTORIALS/TECHNICAL/OBJECTS_tutorial.html" target="test_blank"&gt;http://www.sapbrain.com/TUTORIALS/TECHNICAL/OBJECTS_tutorial.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.abap4.it/" target="test_blank"&gt;http://www.abap4.it/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt; Naresh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 07:03:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212559#M474099</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T07:03:01Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212560#M474100</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Anto,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check these links also..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.erpgenie.com/abap/OO/eg.htm" target="test_blank"&gt;http://www.erpgenie.com/abap/OO/eg.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/victorav15/sapr3/abap_ood.html" target="test_blank"&gt;http://www.geocities.com/victorav15/sapr3/abap_ood.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.brabandt.de/html/abap_oo.html" target="test_blank"&gt;http://www.brabandt.de/html/abap_oo.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt" target="test_blank"&gt;http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt" target="test_blank"&gt;http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this will help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Thasneem.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 07:23:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212560#M474100</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T07:23:11Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212561#M474101</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Antonio, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please browse this site to learn more on ABAP Objects. Also, you can try the transaction ABAPDOCU. It contains numerous examples about ABAP Objects. I also have pasted one of my reports that I did using ABAP Objects.Hope it helps...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;P.S. Please award points if it helps...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
*==================================================================
* Program Name : ZFR_FOREX_REV_ACCTG
* Author       : Aris Hidalgo
* Date Created : August 3, 2006
* Description  : Show the exchange rate for a given range of 7 years
*==================================================================
REPORT zfr_forex_rev_acctg
       NO STANDARD PAGE HEADING
       LINE-SIZE 500
       LINE-COUNT 0
       MESSAGE-ID zz.

*---------------------------------------------*
* Data dictionary table/s                     *
*---------------------------------------------*
TABLES: bsis,
        bsas,
        tcurr,
        t001.

*---------------------------------------------*
* Global Structure/s                          *
*---------------------------------------------*
TYPES: BEGIN OF t_bsis_bsas,
        hkont    TYPE bsis-hkont,   "General ledger account
        year_dum TYPE bsis-gjahr,
        belnr    TYPE bsis-belnr,   "Accounting document number
        bldat    TYPE bsis-bldat,   "Document date in document
        waers    TYPE bsis-waers,   "Currency Key
        dmbtr    TYPE bsis-dmbtr,   "Amount in local currency
        wrbtr    TYPE bsis-wrbtr,   "Amount in document currency
        shkzg    TYPE bsis-shkzg,   "Debit/credit indicator
        zuonr    TYPE bsis-zuonr,   "Assignment number
        gjahr    TYPE bsis-gjahr,   "Fiscal year
        blart    TYPE bsis-blart,   "Document type
       END OF t_bsis_bsas.

TYPES: BEGIN OF t_summary,
        hkont    TYPE bsis-hkont,
        year_dum TYPE bsis-gjahr,
        waers    TYPE bsis-waers,
        rate     TYPE tcurr-ukurs,
        wrbtr    TYPE bsis-wrbtr,
        dmbtr    TYPE bsis-dmbtr,
        gl_bal   TYPE bsis-wrbtr,
        unrealized TYPE bsis-wrbtr,
       END OF t_summary.

TYPES: BEGIN OF t_exch,
        year      TYPE bsis-gjahr,
        rate      TYPE bapi1093_1-rate_type,
        from_curr TYPE bapi1093_1-from_curr,
        exch_rate TYPE bapi1093_0-exch_rate_v,
       END OF t_exch.

*---------------------------------------------*
* Global Data                                 *
*---------------------------------------------*
DATA: gv_hkont TYPE bsis-hkont,
      it_bsis_bsas TYPE STANDARD TABLE OF t_bsis_bsas,
      it_exch      TYPE SORTED   TABLE OF t_exch WITH UNIQUE
                                     KEY year rate from_curr,
      it_summary   TYPE STANDARD TABLE OF t_summary,
      wa_summary   LIKE LINE OF it_summary,
      wa_exch      LIKE LINE OF it_exch,
      t_rate_type  TYPE bapi1093_1-rate_type  VALUE 'ME',
      t_from_curr  TYPE bapi1093_1-from_curr,
      t_to_curr    TYPE bapi1093_1-to_currncy VALUE 'USD',
      t_date       TYPE bapi1093_2-trans_date,
      t_date_out   TYPE bapi1093_2-trans_date,
      t_exch_rate  TYPE bapi1093_0,
      t_message    TYPE bapireturn1.

FIELD-SYMBOLS: &amp;lt;fs_asof&amp;gt;      TYPE bsis-gjahr,
               &amp;lt;fs_bsis_bsas&amp;gt; LIKE LINE OF it_bsis_bsas.

*----------------------------------------------*
* Selection screen                             *
*----------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE t001-bukrs OBLIGATORY,
            p_asof  TYPE bsis-budat OBLIGATORY,
            p_year  TYPE bsis-gjahr OBLIGATORY.
SELECT-OPTIONS: s_hkont FOR bsis-hkont NO INTERVALS. "OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

*/ CLASS DEFINITIONS

*---------------------------------------------------------------------*
*       CLASS lcl_main DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_main DEFINITION.
  PUBLIC SECTION.
    METHODS: get_data,
             get_diff,
             display_subheader,
             display_rate
                IMPORTING
                   rate TYPE tcurr-ukurs
                   pos  TYPE i,
             display_header,
             top_of_page,
             get_rate_and_show
                EXPORTING
                   ex_bsis_bsas LIKE it_bsis_bsas
                   ex_exch      LIKE it_exch,
             conversion
                IMPORTING
                   year      TYPE bsis-gjahr
                   rate_type TYPE bapi1093_1-rate_type
                   from_curr TYPE bapi1093_1-from_curr
                   to_curr   TYPE bapi1093_1-to_currncy
                EXPORTING
                   exch_rate TYPE bapi1093_0
                   t_date    TYPE bapi1093_2-trans_date.

    EVENTS: no_data EXPORTING value(hkont) TYPE bsis-hkont.

  PRIVATE SECTION.
    TYPES: BEGIN OF t_waers,
            waers TYPE bsis-waers,
           END OF t_waers.

    TYPES: BEGIN OF t_local,
            year      TYPE bsis-gjahr,
            rate      TYPE tcurr-ukurs,
           END OF t_local.

    DATA: it_waers     TYPE SORTED TABLE OF t_waers WITH UNIQUE
                            KEY waers,
          it_local     TYPE SORTED TABLE OF t_local WITH UNIQUE
                            KEY year,
          wa_waers     LIKE LINE OF it_waers,
          wa_local     LIKE LINE OF it_local,
          lv_counter   TYPE i,
          lv_asof      TYPE bsis-gjahr,
          lv_year      TYPE bsis-gjahr,
          lv_check     TYPE i,
          lv_7years    TYPE i,
          lv_date      TYPE pc226-endda,
          lv_pos       TYPE i,
          lv_pos2      TYPE i,
          lv_vline     TYPE i,
          lv_rate      TYPE p DECIMALS 5,
          lv_givendate TYPE syst-datum.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS lcl_summary DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_summary DEFINITION INHERITING FROM lcl_main.
  PUBLIC SECTION.
    METHODS: display_summary_header,
             display_summary
                IMPORTING
                   im_bsis_bsas LIKE it_bsis_bsas
                   im_exch      LIKE it_exch.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS lcl_handler DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_handler DEFINITION.
  PUBLIC SECTION.
    METHODS handle_event FOR EVENT no_data OF lcl_main
    IMPORTING hkont.
ENDCLASS.


*/ CLASS IMPLEMENTATIONS

*---------------------------------------------------------------------*
*       CLASS lcl_main IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_main IMPLEMENTATION.

*----------------------------------------------*
* METHOD get_data                              *
*----------------------------------------------*
  METHOD get_data.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*     PERCENTAGE       = 0
       text             = 'Getting data. Please wait...'
              .
*   get records from BSIS
    SELECT hkont zuonr gjahr belnr waers bldat blart dmbtr wrbtr shkzg
    FROM bsis
    INTO  CORRESPONDING FIELDS OF TABLE it_bsis_bsas
    WHERE bukrs = p_bukrs
      AND hkont IN s_hkont
      AND budat &amp;lt;= p_asof.

*   get records from BSAS
    SELECT hkont zuonr gjahr belnr waers bldat blart dmbtr wrbtr shkzg
    FROM bsas
    APPENDING CORRESPONDING FIELDS OF TABLE it_bsis_bsas
    WHERE bukrs = p_bukrs
      AND hkont IN s_hkont
      AND budat &amp;lt;= p_asof
      AND augdt &amp;gt; p_asof.

*   if itab has no records, raise event
    IF it_bsis_bsas[] IS INITIAL.
      RAISE EVENT no_data EXPORTING hkont = s_hkont-low.
    ENDIF.
  ENDMETHOD.

*----------------------------------------------*
* METHOD get_diff                              *
*----------------------------------------------*
  METHOD get_diff.
    DATA: lv_sub7 TYPE i.

    lv_asof = p_year + 6.
    IF lv_asof &amp;gt; p_asof+0(4).
      lv_asof = p_asof+0(4).
    ENDIF.
    lv_year = p_year.

*   determine how many years will be displayed
    lv_counter = lv_asof - lv_year.
    ADD 1 TO lv_counter.

    lv_sub7   = lv_asof - 6.
    lv_7years = lv_asof - lv_sub7.
    ADD 1 TO lv_7years.
  ENDMETHOD.

*----------------------------------------------*
* METHOD display_subheader                     *
*----------------------------------------------*
  METHOD display_subheader.
    DATA: lv_date(10)  TYPE c,
          lv_gdatu     TYPE tcurr-gdatu,
          lv_flag(1)   TYPE c,
          lv_pos_dum   TYPE i.

    FIELD-SYMBOLS: &amp;lt;fs_bsis_bsas&amp;gt; LIKE LINE OF it_bsis_bsas.

*   pre-defined length of uline and vline depending on the
*   number of years to be displayed
    CASE lv_counter.
      WHEN 1.
        lv_pos   = 24.
        lv_pos2  = 37.
        lv_vline = 126.
      WHEN 2.
        lv_pos   = 45.
        lv_pos2  = 58.
        lv_vline = 147.
      WHEN 3.
        lv_pos   = 66.
        lv_pos2  = 79.
        lv_vline = 168.
      WHEN 4.
        lv_pos   = 87.
        lv_pos2  = 100.
        lv_vline = 189.
      WHEN 5.
        lv_pos   = 108.
        lv_pos2  = 121.
        lv_vline = 210.
      WHEN 6.
        lv_pos   = 128.
        lv_pos2  = 141.
        lv_vline = 230.
      WHEN 7.
        lv_pos   = 148.
        lv_pos2  = 161.
        lv_vline = 250.
    ENDCASE.

*  get currency
    IF NOT lv_check = 1.
      LOOP AT it_bsis_bsas ASSIGNING &amp;lt;fs_bsis_bsas&amp;gt;.
        MOVE &amp;lt;fs_bsis_bsas&amp;gt;-waers TO wa_waers.
        INSERT wa_waers INTO TABLE it_waers.
        &amp;lt;fs_bsis_bsas&amp;gt;-year_dum = &amp;lt;fs_bsis_bsas&amp;gt;-bldat+0(4).
      ENDLOOP.
    ENDIF.

    ASSIGN lv_asof TO &amp;lt;fs_asof&amp;gt;.

    IF NOT lv_check = 1.
      SORT it_bsis_bsas BY hkont year_dum belnr bldat waers dmbtr wrbtr.
      IF &amp;lt;fs_bsis_bsas&amp;gt; IS ASSIGNED.
        UNASSIGN &amp;lt;fs_bsis_bsas&amp;gt;.
        READ TABLE it_bsis_bsas INDEX 1 ASSIGNING &amp;lt;fs_bsis_bsas&amp;gt;.
        IF sy-subrc = 0 AND &amp;lt;fs_bsis_bsas&amp;gt; IS ASSIGNED.
          gv_hkont = &amp;lt;fs_bsis_bsas&amp;gt;-hkont.
        ENDIF.
      ENDIF.
    ENDIF.

*   write sub-header
    DESCRIBE TABLE it_waers LINES sy-tfill.
    LOOP AT it_waers INTO wa_waers.
      IF sy-tfill = 1 AND wa_waers-waers = 'PHP'.
        lv_flag = 1 .
      ENDIF.
      IF NOT lv_flag = 1.
        IF lv_check IS INITIAL.
          WRITE: AT /103 sy-uline(lv_pos),
                 AT /103 sy-vline.
        ENDIF.

*       write the years in the sub-header
        IF NOT lv_check = 1.
          lv_pos_dum = 110.
          FORMAT COLOR COL_HEADING.
          DO lv_counter TIMES.
            IF sy-index = 6.
              WRITE: AT lv_pos_dum(14) &amp;lt;fs_asof&amp;gt; RIGHT-JUSTIFIED.
            ELSEIF sy-index = 7.
              WRITE: AT lv_pos_dum(13) &amp;lt;fs_asof&amp;gt; RIGHT-JUSTIFIED.
            ELSE.
              WRITE: AT lv_pos_dum(15) &amp;lt;fs_asof&amp;gt; RIGHT-JUSTIFIED.
            ENDIF.
            ADD 21 TO lv_pos_dum.
            SUBTRACT 1 FROM &amp;lt;fs_asof&amp;gt;.
          ENDDO.
          WRITE sy-vline.
          FORMAT COLOR OFF.
        ENDIF.

        IF sy-tabix = 1 AND wa_waers-waers = 'PHP'.
          WRITE: AT /90 sy-uline(lv_pos2).
        ENDIF.

        IF wa_waers-waers &amp;lt;&amp;gt; 'PHP'.
          IF lv_check IS INITIAL.
            WRITE: AT /90 sy-uline(lv_pos2).
            WRITE: AT /90 sy-vline.
          ELSE.
            WRITE: AT /90 sy-vline.
          ENDIF.
        ENDIF.

        FORMAT COLOR COL_NORMAL.
        IF NOT wa_waers-waers = 'PHP'.
         WRITE: AT 91(10) wa_waers-waers CENTERED.   "write the currency
        ENDIF.
      ENDIF.
      lv_asof = p_year + 6.
      IF lv_asof &amp;gt; p_asof+0(4).
        lv_asof = p_asof+0(4).
      ENDIF.

*     get exchange rate from PHP to USD
      IF lv_check IS INITIAL.
        t_from_curr = 'PHP'.
        DO lv_counter TIMES.
*         use BAPI to get exchange rate
          CALL METHOD me-&amp;gt;conversion EXPORTING
                                       year      = &amp;lt;fs_asof&amp;gt;
                                       rate_type = t_rate_type
                                       from_curr = t_from_curr
                                       to_curr   = t_to_curr
                                      IMPORTING
                                       exch_rate = t_exch_rate
                                       t_date    = t_date_out.
*         if no exchange rate was fetched, get directly from TCURR
*         using given date
          IF t_exch_rate-exch_rate_v IS INITIAL.
            WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
            CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
                 EXPORTING
                      input  = lv_date
                 IMPORTING
                      output = lv_date.

            SELECT SINGLE ukurs FROM tcurr
            INTO t_exch_rate-exch_rate_v
            WHERE kurst = 'ME'
              AND fcurr = 'PHP'
              AND tcurr = 'USD'
              AND gdatu = lv_date.
          ENDIF.
          IF NOT t_exch_rate-exch_rate_v IS INITIAL.
            t_exch_rate-exch_rate_v = abs( t_exch_rate-exch_rate_v ).
            wa_local-year = &amp;lt;fs_asof&amp;gt;.
            wa_local-rate = t_exch_rate-exch_rate_v.
            INSERT wa_local INTO TABLE it_local.
          ENDIF.
          SUBTRACT 1 FROM &amp;lt;fs_asof&amp;gt;.
          CLEAR: t_exch_rate, wa_local, t_date_out, lv_date.
        ENDDO.
      ENDIF.

      lv_pos = 106.
*     get exchange rate from itab to USD
      CLEAR: t_exch_rate, lv_gdatu.
      t_from_curr = wa_waers-waers.
      lv_asof = p_year + 6.
      IF lv_asof &amp;gt; p_asof+0(4).
        lv_asof = p_asof+0(4).
      ENDIF.
      DO lv_counter TIMES.
        IF t_from_curr = 'USD'.
          READ TABLE it_local WITH KEY year = &amp;lt;fs_asof&amp;gt;
                                       INTO wa_local TRANSPORTING rate.
          lv_rate = wa_local-rate.
        ELSEIF t_from_curr = 'PHP'.
          READ TABLE it_local WITH KEY year = &amp;lt;fs_asof&amp;gt;
                                       INTO wa_local TRANSPORTING rate.
          lv_rate = wa_local-rate.
        ELSE.
*         use BAPI to get exchange rate for currencies that is
*         not 'PHP' and 'USD'
          CALL METHOD me-&amp;gt;conversion EXPORTING
                                      year      = &amp;lt;fs_asof&amp;gt;
                                      rate_type = t_rate_type
                                      from_curr = t_from_curr
                                      to_curr   = t_to_curr
                                     IMPORTING
                                      exch_rate = t_exch_rate
                                      t_date    = t_date_out.
*         if no exchange rate was fetched, get directly from TCURR
*         using given date
          IF t_exch_rate-exch_rate_v IS INITIAL.
            WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
            CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
                 EXPORTING
                      input  = lv_date
                 IMPORTING
                      output = lv_date.

            SELECT SINGLE ukurs FROM tcurr
            INTO t_exch_rate-exch_rate_v
            WHERE kurst = 'ME'
              AND fcurr = wa_waers-waers
              AND tcurr = 'USD'
              AND gdatu = lv_date.
          ENDIF.
          IF NOT t_exch_rate-exch_rate_v IS INITIAL.
            READ TABLE it_local WITH KEY year = &amp;lt;fs_asof&amp;gt;
                                        INTO wa_local TRANSPORTING rate.
            IF sy-subrc = 0.
              IF t_exch_rate-exch_rate_v &amp;lt;&amp;gt; wa_local-rate.
                lv_rate = 1 / t_exch_rate-exch_rate_v * wa_local-rate.
              ELSE.
                lv_rate = t_exch_rate-exch_rate_v.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.

        IF NOT lv_rate IS INITIAL.
          lv_rate = abs( lv_rate ).
          wa_exch-year      = &amp;lt;fs_asof&amp;gt;.
          wa_exch-rate      = t_rate_type.
          wa_exch-from_curr = t_from_curr.
          wa_exch-exch_rate = lv_rate.
          INSERT wa_exch INTO TABLE it_exch.
          IF NOT lv_flag = 1.
            IF NOT wa_waers-waers = 'PHP'.
              CALL METHOD me-&amp;gt;display_rate
                 EXPORTING
                    rate = wa_exch-exch_rate
                    pos  = lv_pos.
              CLEAR wa_exch.
            ENDIF.
          ENDIF.
        ENDIF.
        ADD 21 TO lv_pos.
        SUBTRACT 1 FROM &amp;lt;fs_asof&amp;gt;.
        CLEAR: t_exch_rate, wa_local, t_date_out,
               lv_date,lv_rate.
      ENDDO.

      IF NOT lv_flag = 1.
        WRITE: AT lv_vline sy-vline.
      ENDIF.
      FORMAT COLOR OFF.

      lv_asof = p_year + 6.
      IF lv_asof &amp;gt; p_asof+0(4).
        lv_asof = p_asof+0(4).
      ENDIF.
      lv_check = 1.
      CLEAR lv_flag.
    ENDLOOP.
  ENDMETHOD.

*----------------------------------------------*
* METHOD display_rate                          *
*----------------------------------------------*
  METHOD display_rate.
    WRITE: AT pos(15) rate RIGHT-JUSTIFIED.
  ENDMETHOD.

*----------------------------------------------*
* METHOD display_header                        *
*----------------------------------------------*
  METHOD display_header.
    CLEAR lv_pos.
    lv_asof = p_year + 6.
    IF lv_asof &amp;gt; p_asof+0(4).
      lv_asof = p_asof+0(4).
    ENDIF.

    CLEAR lv_pos2.
    CASE lv_counter.
      WHEN 1.
        lv_pos2 = 126.
      WHEN 2.
        lv_pos2 = 147.
      WHEN 3.
        lv_pos2 = 168.
      WHEN 4.
        lv_pos2 = 189.
      WHEN 5.
        lv_pos2 = 210.
      WHEN 6.
        lv_pos2 = 230.
      WHEN 7.
        lv_pos2 = 250.
    ENDCASE.

    lv_pos = 110.
    FORMAT COLOR COL_HEADING.
    WRITE: /   sy-uline(lv_pos2),
           /   sy-vline,
         (18) 'Allocation'         CENTERED,
         (04) 'DT'                 CENTERED,
         (11) 'Doc. No.'           CENTERED,
         (11) 'Doc. Date'          LEFT-JUSTIFIED,
         (06) 'Cur.'               LEFT-JUSTIFIED,
         (20) 'Transaction Curr.'  CENTERED,
         (20) 'Local Curr. (PHP)'  CENTERED.

    DO lv_counter TIMES.
      WRITE: AT lv_pos(14) &amp;lt;fs_asof&amp;gt; RIGHT-JUSTIFIED.
      SUBTRACT 1 FROM &amp;lt;fs_asof&amp;gt;.
      ADD 21 TO lv_pos.
    ENDDO.

    WRITE: AT lv_pos2 sy-vline,
           /  sy-uline(lv_pos2).
    FORMAT COLOR OFF.
  ENDMETHOD.

*----------------------------------------------*
* METHOD top_of_page                           *
*----------------------------------------------*
  METHOD top_of_page.
    DATA: text1         TYPE string,
          text2         TYPE string,
          lv_asof       TYPE bsis-budat,
          lv_pageno(03) TYPE n,
          lv_date(10)   TYPE c.

*   get company code description
    SELECT SINGLE butxt FROM t001
    INTO t001-butxt
    WHERE bukrs = p_bukrs.

    WRITE: / t001-butxt,
           / sy-title.

*   write account code(HKONT)
    CONCATENATE: gv_hkont '/' p_bukrs
                 INTO text1.
    CONCATENATE: 'Account:' text1
                 INTO text2
                 SEPARATED BY space.
    WRITE: / text2.
    CLEAR: text1, text2.

*   write as of date
    WRITE p_asof TO lv_date USING EDIT MASK '__/__/____'.
    CONCATENATE: 'As of' lv_date
                   INTO text1
                   SEPARATED BY space.
    WRITE: / text1.
    CLEAR: text1, lv_date.

*   from year to as of year
    lv_asof = p_asof+0(4).
    CONCATENATE: 'Year:' p_year 'to' lv_asof
                 INTO text1
                 SEPARATED BY space.
    WRITE: / text1.
    CLEAR text1.

*   page number
    lv_pageno = sy-pagno.
    CONCATENATE: 'Page No:' lv_pageno
                 INTO text1
                 SEPARATED BY space.
    WRITE: / text1.
    CLEAR text1.
    SKIP 2.
  ENDMETHOD.

*----------------------------------------------*
* METHOD get_rate_and_show                     *
*----------------------------------------------*
  METHOD get_rate_and_show.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*       PERCENTAGE       = 0
       text             = 'Combining data.Please wait... '
              .
    DATA: lv_amount(15)    TYPE p DECIMALS 2,
          lv_color(1)      TYPE n VALUE 1,
          lv_index1(15)    TYPE p DECIMALS 2,
          lv_index2(15)    TYPE p DECIMALS 2,
          lv_index3(15)    TYPE p DECIMALS 2,
          lv_index4(15)    TYPE p DECIMALS 2,
          lv_index5(15)    TYPE p DECIMALS 2,
          lv_index6(15)    TYPE p DECIMALS 2,
          lv_index7(15)    TYPE p DECIMALS 2,
          lv_total1(15)    TYPE p DECIMALS 2,
          lv_total2(15)    TYPE p DECIMALS 2,
          lv_total3(15)    TYPE p DECIMALS 2,
          lv_total4(15)    TYPE p DECIMALS 2,
          lv_total5(15)    TYPE p DECIMALS 2,
          lv_total6(15)    TYPE p DECIMALS 2,
          lv_total7(15)    TYPE p DECIMALS 2,
          lv_dmbtr(15)     TYPE p DECIMALS 2,
          lv_dmbtr_tot(15) TYPE p DECIMALS 2,
          lv_old           TYPE bsis-hkont,
          lv_new           TYPE bsis-hkont.

    lv_asof = p_year + 6.
    IF lv_asof &amp;gt; p_asof+0(4).
      lv_asof = p_asof+0(4).
    ENDIF.

    CLEAR lv_check.
    ADD 1 TO lv_check.
    SORT it_bsis_bsas BY hkont year_dum belnr bldat waers dmbtr wrbtr.

*   write details
    LOOP AT it_bsis_bsas ASSIGNING &amp;lt;fs_bsis_bsas&amp;gt;.
      IF lv_color = 1.
        lv_color = 2.
      ELSE.
        lv_color = 1.
      ENDIF.

*     if &amp;lt;fs_bsis_bsas&amp;gt;-shkzg = 'H', multiply WRBTR and
*     DMBTR by -1
      IF &amp;lt;fs_bsis_bsas&amp;gt;-shkzg = 'H'.
        &amp;lt;fs_bsis_bsas&amp;gt;-wrbtr = &amp;lt;fs_bsis_bsas&amp;gt;-wrbtr * -1.
        &amp;lt;fs_bsis_bsas&amp;gt;-dmbtr = &amp;lt;fs_bsis_bsas&amp;gt;-dmbtr * -1.
      ENDIF.

*     for every new account no.(HKONT), create a new page
      lv_new = &amp;lt;fs_bsis_bsas&amp;gt;-hkont.
      gv_hkont = &amp;lt;fs_bsis_bsas&amp;gt;-hkont.
      IF lv_new &amp;lt;&amp;gt; lv_old AND NOT lv_old IS INITIAL.
        NEW-PAGE.
        CALL METHOD me-&amp;gt;display_subheader.
        CALL METHOD me-&amp;gt;display_header.
      ENDIF.
      lv_old = lv_new.

*     write details
      FORMAT INTENSIFIED OFF COLOR = lv_color.
      WRITE: /   sy-vline,
            (18) &amp;lt;fs_bsis_bsas&amp;gt;-zuonr   CENTERED,
            (04) &amp;lt;fs_bsis_bsas&amp;gt;-blart   CENTERED,
            (10) &amp;lt;fs_bsis_bsas&amp;gt;-belnr   CENTERED,
            (10) &amp;lt;fs_bsis_bsas&amp;gt;-bldat   RIGHT-JUSTIFIED,
            (05) &amp;lt;fs_bsis_bsas&amp;gt;-waers   RIGHT-JUSTIFIED,
            (20) &amp;lt;fs_bsis_bsas&amp;gt;-wrbtr   RIGHT-JUSTIFIED,
            (20) &amp;lt;fs_bsis_bsas&amp;gt;-dmbtr   RIGHT-JUSTIFIED.

      ADD &amp;lt;fs_bsis_bsas&amp;gt;-dmbtr TO: lv_dmbtr, lv_dmbtr_tot.

*     write the converted amount for a given year
      WHILE lv_check &amp;lt;= lv_counter.
        IF &amp;lt;fs_asof&amp;gt; &amp;gt;= &amp;lt;fs_bsis_bsas&amp;gt;-bldat+0(4).
          t_from_curr = &amp;lt;fs_bsis_bsas&amp;gt;-waers.
          READ TABLE it_exch WITH KEY year      = &amp;lt;fs_asof&amp;gt;
                                      rate      = t_rate_type
                                      from_curr = t_from_curr
                                    INTO wa_exch TRANSPORTING exch_rate.
          IF sy-subrc = 0.
            IF &amp;lt;fs_bsis_bsas&amp;gt;-waers = 'PHP'.
              lv_amount = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
              lv_amount = &amp;lt;fs_bsis_bsas&amp;gt;-wrbtr * lv_amount.
            ELSE.
              lv_amount = &amp;lt;fs_bsis_bsas&amp;gt;-wrbtr * wa_exch-exch_rate.
            ENDIF.
            WRITE: (20) lv_amount RIGHT-JUSTIFIED.

            CASE sy-index.
              WHEN 1.
                ADD lv_amount TO lv_index1.
                ADD lv_amount TO lv_total1.
              WHEN 2.
                ADD lv_amount TO lv_index2.
                ADD lv_amount TO lv_total2.
              WHEN 3.
                ADD lv_amount TO lv_index3.
                ADD lv_amount TO lv_total3.
              WHEN 4.
                ADD lv_amount TO lv_index4.
                ADD lv_amount TO lv_total4.
              WHEN 5.
                ADD lv_amount TO lv_index5.
                ADD lv_amount TO lv_total5.
              WHEN 6.
                ADD lv_amount TO lv_index6.
                ADD lv_amount TO lv_total6.
              WHEN 7.
                ADD lv_amount TO lv_index7.
                ADD lv_amount TO lv_total7.
            ENDCASE.
          ENDIF.
        ENDIF.
        CLEAR: lv_amount, wa_exch.
        SUBTRACT 1 FROM &amp;lt;fs_asof&amp;gt;.
        ADD 1 TO lv_check.
      ENDWHILE.
      WRITE AT lv_pos2 sy-vline.

*     write sub-total for every year for the same account code(HKONT)
      AT END OF year_dum.
        FORMAT COLOR COL_TOTAL.
        WRITE: / sy-vline,
               &amp;lt;fs_bsis_bsas&amp;gt;-year_dum,
               'Sub-total:'.

        IF NOT lv_dmbtr IS INITIAL.
          WRITE: AT 76(20) lv_dmbtr RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index1 IS INITIAL.
          WRITE: (20) lv_index1     RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index2 IS INITIAL.
          WRITE (20) lv_index2      RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index3 IS INITIAL.
          WRITE (20) lv_index3      RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index4 IS INITIAL.
          WRITE (20) lv_index4      RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index5 IS INITIAL.
          WRITE (20) lv_index5      RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index6 IS INITIAL.
          WRITE: (20) lv_index6     RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_index7 IS INITIAL.
          WRITE: (20) lv_index7      RIGHT-JUSTIFIED.
        ENDIF.
        WRITE: AT lv_pos2 sy-vline.
        FORMAT COLOR OFF.
        CLEAR: lv_index1, lv_index2, lv_index3,
               lv_index4, lv_index5, lv_index6,
               lv_index7, lv_dmbtr.
      ENDAT.

*     write total for a given account code(HKONT)
      AT END OF hkont.
        FORMAT COLOR COL_TOTAL INTENSIFIED.
        WRITE: / sy-vline,
                 'Total', &amp;lt;fs_bsis_bsas&amp;gt;-hkont, 'GI'.

        IF NOT lv_dmbtr_tot IS INITIAL.
          WRITE: AT 76(20) lv_dmbtr_tot RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total1 IS INITIAL.
          WRITE: (20) lv_total1         RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total2 IS INITIAL.
          WRITE (20) lv_total2          RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total3 IS INITIAL.
          WRITE (20) lv_total3          RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total4 IS INITIAL.
          WRITE (20) lv_total4          RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total5 IS INITIAL.
          WRITE (20) lv_total5          RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total6 IS INITIAL.
          WRITE: (20) lv_total6         RIGHT-JUSTIFIED.
        ENDIF.

        IF NOT lv_total7 IS INITIAL.
          WRITE: (20) lv_total7         RIGHT-JUSTIFIED.
        ENDIF.
        WRITE: AT lv_pos2 sy-vline.
        FORMAT COLOR OFF.
        CLEAR: lv_total1, lv_total2, lv_total3,
               lv_total4, lv_total5, lv_total6,
               lv_total7, lv_dmbtr_tot.
        WRITE: / sy-uline(lv_pos2).
      ENDAT.

      lv_asof = p_year + 6.
      IF lv_asof &amp;gt; p_asof+0(4).
        lv_asof = p_asof+0(4).
      ENDIF.
      CLEAR lv_check.
      ADD 1 TO lv_check.
      FORMAT COLOR OFF.
    ENDLOOP.
    SKIP 5.
    ex_bsis_bsas[] = it_bsis_bsas[].
    ex_exch[]      = it_exch[].
  ENDMETHOD.

*----------------------------------------------*
* METHOD conversion                            *
*----------------------------------------------*
  METHOD conversion.
    IF year = p_asof+0(4).
*     get last date of a given month and year
      CALL FUNCTION 'LAST_DAY_OF_MONTHS'
       EXPORTING
         day_in                  = p_asof
       IMPORTING
         last_day_of_month       = lv_givendate
*     EXCEPTIONS
*       DAY_IN_NO_DATE          = 1
*       OTHERS                  = 2
                .
      IF sy-subrc &amp;lt;&amp;gt; 0.
*       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ELSE.
*   get last date of a given year
      CALL FUNCTION 'HR_E_GET_FISC_YEAR_DATES'
        EXPORTING
          fisc_year         = year
      IMPORTING
*      FISC_FECINI       =
         fisc_fecfin       = lv_date
*    EXCEPTIONS
*      ERROR             = 1
*      OTHERS            = 2
                .
      IF sy-subrc &amp;lt;&amp;gt; 0.
*       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDIF.

    IF lv_date IS INITIAL.
      t_date = lv_givendate.
      CLEAR lv_givendate.
    ELSE.
      t_date = lv_date.
      CLEAR lv_date.
    ENDIF.
*   get exchange rate from a given currency to US dollars
    CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
      EXPORTING
        rate_type        = rate_type
        from_curr        = from_curr
        to_currncy       = to_curr
        date             = t_date
      IMPORTING
        exch_rate        = t_exch_rate
*      RETURN           =
              .
  ENDMETHOD.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS lcl_summary IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_summary IMPLEMENTATION.

*----------------------------------------------*
* METHOD display_summary                       *
*----------------------------------------------*
  METHOD display_summary.
    TYPES: BEGIN OF t_total,
            hkont      TYPE bsis-hkont,
            waers      TYPE bsis-waers,
            wrbtr      TYPE bsis-wrbtr,
            dmbtr      TYPE bsis-dmbtr,
            gl_bal     TYPE bsis-wrbtr,
            unrealized TYPE bsis-wrbtr,
           END OF t_total.

    DATA: lv_balance        TYPE bsis-wrbtr,
          lv_date(10)       TYPE c,
          lv_color(1)       TYPE n VALUE '1',
          lv_wrbtr          TYPE bsis-wrbtr,
          lv_dmbtr          TYPE bsis-dmbtr,
          lv_gl_bal         TYPE bsis-wrbtr,
          lv_unrealized     TYPE bsis-wrbtr,
          lv_old_year       TYPE bsis-gjahr,
          lv_new_year       TYPE bsis-gjahr,
          lv_flag(1)        TYPE n,
          lt_bsis_bsas_dum  TYPE STANDARD TABLE OF t_bsis_bsas,
          lt_total          TYPE STANDARD TABLE OF t_total,
          wa_total          LIKE LINE OF lt_total.

    FIELD-SYMBOLS: &amp;lt;fs_dum&amp;gt; LIKE LINE OF lt_bsis_bsas_dum.

    it_bsis_bsas[] = im_bsis_bsas[].
    it_exch[]      = im_exch[].
    CLEAR wa_exch.
    SORT it_bsis_bsas BY hkont year_dum DESCENDING waers.
    lt_bsis_bsas_dum[] = it_bsis_bsas[].
    LOOP AT it_bsis_bsas ASSIGNING &amp;lt;fs_bsis_bsas&amp;gt;.
      AT NEW hkont.
        MOVE &amp;lt;fs_bsis_bsas&amp;gt;-hkont TO wa_summary-hkont.
      ENDAT.
      AT NEW year_dum.
        MOVE &amp;lt;fs_bsis_bsas&amp;gt;-year_dum TO wa_summary-year_dum.
      ENDAT.
      AT NEW waers.
        MOVE &amp;lt;fs_bsis_bsas&amp;gt;-waers TO wa_summary-waers.
        t_from_curr = wa_summary-waers.
        READ TABLE it_exch WITH KEY year      = wa_summary-year_dum
                                    rate      = t_rate_type
                                    from_curr = t_from_curr
                                    INTO wa_exch TRANSPORTING exch_rate.
        IF sy-subrc = 0.
          MOVE wa_exch-exch_rate TO wa_summary-rate.
        ELSE.
          CALL METHOD me-&amp;gt;conversion
             EXPORTING
                year      = wa_summary-year_dum
                rate_type = t_rate_type
                from_curr = t_from_curr
                to_curr   = t_to_curr
             IMPORTING
                exch_rate = t_exch_rate
                t_date    = t_date_out.

          IF t_exch_rate-exch_rate_v IS INITIAL.
            WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
            CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
                 EXPORTING
                      input  = lv_date
                 IMPORTING
                      output = lv_date.

            SELECT SINGLE ukurs FROM tcurr
            INTO t_exch_rate-exch_rate_v
            WHERE kurst = 'ME'
              AND fcurr = 'PHP'
              AND tcurr = 'USD'
              AND gdatu = lv_date.
          ENDIF.
          IF NOT t_exch_rate-exch_rate_v IS INITIAL.
            t_exch_rate-exch_rate_v = abs( t_exch_rate-exch_rate_v ).
            MOVE t_exch_rate-exch_rate_v TO wa_summary-rate.
          ENDIF.
        ENDIF.
      ENDAT.

      LOOP AT lt_bsis_bsas_dum ASSIGNING &amp;lt;fs_dum&amp;gt;
         WHERE hkont    = wa_summary-hkont
           AND year_dum = wa_summary-year_dum
           AND waers    = wa_summary-waers.

        ADD &amp;lt;fs_dum&amp;gt;-wrbtr TO wa_summary-wrbtr.
        ADD &amp;lt;fs_dum&amp;gt;-dmbtr TO wa_summary-dmbtr.
        IF NOT wa_exch-exch_rate IS INITIAL.
          IF &amp;lt;fs_dum&amp;gt;-waers = 'PHP'.
            lv_balance = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
            lv_balance = &amp;lt;fs_dum&amp;gt;-wrbtr * lv_balance.
            ADD lv_balance TO wa_summary-gl_bal.
          ELSE.
            lv_balance = &amp;lt;fs_dum&amp;gt;-wrbtr * wa_exch-exch_rate.
            ADD lv_balance TO wa_summary-gl_bal.
          ENDIF.
        ENDIF.
        CLEAR lv_balance.
        DELETE lt_bsis_bsas_dum.
      ENDLOOP.
      DELETE it_bsis_bsas WHERE hkont    = wa_summary-hkont
                            AND year_dum = wa_summary-year_dum
                            AND waers    = wa_summary-waers.
      wa_summary-unrealized = wa_summary-dmbtr - wa_summary-gl_bal.
      APPEND wa_summary TO it_summary.
      CLEAR wa_summary.
    ENDLOOP.

    IF NOT it_summary[] IS INITIAL.
      CALL METHOD me-&amp;gt;display_summary_header.
      CLEAR wa_summary.
      SORT it_summary BY hkont year_dum DESCENDING waers.
*/     WRITE SUMMARY
      LOOP AT it_summary INTO wa_summary.
        IF lv_color = 1.
          lv_color = 2.
        ELSE.
          lv_color = 1.
        ENDIF.

        MOVE: wa_summary-hkont     TO wa_total-hkont,
              wa_summary-waers     TO wa_total-waers.
        READ TABLE lt_total WITH KEY hkont = wa_summary-hkont
                                     waers = wa_summary-waers
                                     INTO wa_total.
        IF sy-subrc = 0.
          ADD: wa_summary-wrbtr      TO wa_total-wrbtr,
               wa_summary-dmbtr      TO wa_total-dmbtr,
               wa_summary-gl_bal     TO wa_total-gl_bal,
               wa_summary-unrealized TO wa_total-unrealized.

          MODIFY lt_total FROM wa_total TRANSPORTING
           wrbtr dmbtr gl_bal unrealized
              WHERE hkont = wa_summary-hkont
                AND waers = wa_summary-waers.
          CLEAR wa_total.
          lv_flag = 1.
        ELSE.
          ADD: wa_summary-wrbtr      TO wa_total-wrbtr,
               wa_summary-dmbtr      TO wa_total-dmbtr,
               wa_summary-gl_bal     TO wa_total-gl_bal,
               wa_summary-unrealized TO wa_total-unrealized.
        ENDIF.

*       write sub-total for every end of a year
        lv_new_year = wa_summary-year_dum.
        IF lv_new_year &amp;lt;&amp;gt; lv_old_year AND NOT lv_old_year IS INITIAL.
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE: /    sy-vline,
                 (42) 'Subtotal',
                 (18) lv_wrbtr      RIGHT-JUSTIFIED,
                 (18) lv_dmbtr      RIGHT-JUSTIFIED,
                 (18) lv_gl_bal     RIGHT-JUSTIFIED,
                 (18) lv_unrealized RIGHT-JUSTIFIED,
                      sy-vline.
          FORMAT COLOR OFF.
          CLEAR: lv_wrbtr, lv_dmbtr, lv_gl_bal, lv_unrealized.
        ENDIF.
        lv_old_year = lv_new_year.
        ADD: wa_summary-wrbtr      TO lv_wrbtr,
             wa_summary-dmbtr      TO lv_dmbtr,
             wa_summary-gl_bal     TO lv_gl_bal,
             wa_summary-unrealized TO lv_unrealized.

        FORMAT INTENSIFIED OFF COLOR = lv_color.
        WRITE: /    sy-vline,
               (15) wa_summary-hkont,
               (04) wa_summary-year_dum,
               (05) wa_summary-waers,
               (15) wa_summary-rate,
               (18) wa_summary-wrbtr,
               (18) wa_summary-dmbtr,
               (18) wa_summary-gl_bal,
               (18) wa_summary-unrealized,
                    sy-vline.
        FORMAT COLOR OFF.
        IF NOT lv_flag = 1.
          APPEND wa_total TO lt_total.
          CLEAR wa_total.
        ENDIF.

        AT END OF hkont.
*         write the last sub-total
          FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
          WRITE: /    sy-vline,
                 (37) 'Subtotal', wa_summary-year_dum,
                 (18) lv_wrbtr      RIGHT-JUSTIFIED,
                 (18) lv_dmbtr      RIGHT-JUSTIFIED,
                 (18) lv_gl_bal     RIGHT-JUSTIFIED,
                 (18) lv_unrealized RIGHT-JUSTIFIED,
                      sy-vline.
          FORMAT COLOR OFF.
          CLEAR: lv_wrbtr, lv_dmbtr, lv_gl_bal, lv_unrealized.

*         write the total for a given account code(HKONT)
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          LOOP AT lt_total INTO wa_total
             WHERE hkont = wa_summary-hkont.
            WRITE: /    sy-vline.
            IF sy-tabix = 1.
              WRITE: (25) 'Total', wa_summary-hkont.
            ENDIF.
            IF sy-tabix = 1.
              WRITE: (05) wa_total-waers,
                     (18) wa_total-wrbtr,
                     (18) wa_total-dmbtr,
                     (18) wa_total-gl_bal,
                     (18) wa_total-unrealized,
                          sy-vline.
            ELSE.
              WRITE: AT 40(05) wa_total-waers,
                          (18) wa_total-wrbtr,
                          (18) wa_total-dmbtr,
                          (18) wa_total-gl_bal,
                          (18) wa_total-unrealized,
                               sy-vline.
            ENDIF.
          ENDLOOP.
          FORMAT COLOR OFF.
        ENDAT.
        CLEAR lv_flag.
      ENDLOOP.
      WRITE: / sy-uline(122).
    ENDIF.
  ENDMETHOD.

*----------------------------------------------*
* METHOD display_summary                       *
*----------------------------------------------*
  METHOD display_summary_header.
    FORMAT COLOR COL_HEADING.
    WRITE: /    sy-uline(122),
           /    sy-vline,
           (15) 'GL Account'  CENTERED,
           (04) 'Year'        CENTERED,
           (05) 'Curr.'       CENTERED,
           (15) 'Rate'        CENTERED,
           (18) 'Trans. Curr' CENTERED,
           (18) 'Local Curr.' CENTERED,
           (18) 'GL Balance'  CENTERED,
           (18) 'Unrealized'  CENTERED,
                 sy-vline,
           /     sy-uline(122).
    FORMAT COLOR OFF.
  ENDMETHOD.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS lcl_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_handler IMPLEMENTATION.
  METHOD handle_event.
    MESSAGE i008 WITH 'No data found for account no:' hkont.
    LEAVE LIST-PROCESSING.
  ENDMETHOD.
ENDCLASS.

*----------------------------------------------*
* TOP-OF-PAGE                                  *
*----------------------------------------------*
TOP-OF-PAGE.
  DATA: o_top TYPE REF TO lcl_main.
  CREATE OBJECT o_top.
  CALL METHOD o_top-&amp;gt;top_of_page.

*----------------------------------------------*
* START-OF-SELECTION                           *
*----------------------------------------------*
START-OF-SELECTION.
  DATA: o_main           TYPE REF TO lcl_main,
        o_handler        TYPE REF TO lcl_handler,
        o_summary        TYPE REF TO lcl_summary,
        it_bsis_bsas_dum TYPE STANDARD TABLE OF t_bsis_bsas,
        it_exch_dum      LIKE it_exch.

  CREATE OBJECT: o_main, o_handler, o_summary.

  SET HANDLER o_handler-&amp;gt;handle_event FOR ALL INSTANCES.
  CALL METHOD o_main-&amp;gt;get_data.
  CALL METHOD o_main-&amp;gt;get_diff.
  CALL METHOD o_main-&amp;gt;display_subheader.
  CALL METHOD o_main-&amp;gt;display_header.
  CALL METHOD o_main-&amp;gt;get_rate_and_show
     IMPORTING
        ex_bsis_bsas = it_bsis_bsas_dum
        ex_exch      = it_exch_dum.
  CALL METHOD o_summary-&amp;gt;display_summary
     EXPORTING
        im_bsis_bsas = it_bsis_bsas_dum
        im_exch      = it_exch_dum.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 07:25:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212561#M474101</guid>
      <dc:creator>aris_hidalgo</dc:creator>
      <dc:date>2007-05-03T07:25:08Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212562#M474102</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ravi..could u pls mail it to me too....tell me if u cant see my mail id.&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 08:27:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212562#M474102</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T08:27:00Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212563#M474103</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shweta,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I i cannot see ur mail id.&lt;/P&gt;&lt;P&gt;give me ur mail id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ravi G&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 10:54:39 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212563#M474103</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T10:54:39Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212564#M474104</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;shweta.ahlawat@gmail.com&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks !!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:55:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212564#M474104</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:55:45Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212565#M474105</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hai Ravi,&lt;/P&gt;&lt;P&gt;      Could u pls send me the Document.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Padmam.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 12:11:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212565#M474105</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T12:11:51Z</dc:date>
    </item>
    <item>
      <title>Re: learn abap object</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212566#M474106</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ravi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I haven't received the document.. Could you pls try again ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shweta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2007 06:46:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/learn-abap-object/m-p/2212566#M474106</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-04T06:46:48Z</dc:date>
    </item>
  </channel>
</rss>

