WRBTR and DMBTR

Hi
I am working on LSMW using BAPI(BUS6035). I am facing problem in mapping of DMBTR as it is not present in BAPI (BAPI_ACC_DOCUMENT_POST).
How to map this field???
Thanks in Advance

Dear Kirti,
see the code:
after insert a doc currency and amount value, add for local currency,
  lt_curr-itemno_acc = ld_itemno.
  lt_curr-curr_type = '10'.
  lt_curr-currency = t_itab-waers1.
  lt_curr-amt_doccur = t_itab-dmbtr.
  IF t_itab-shkzg = 'H'.
    lt_curr-amt_doccur = lt_curr-amt_doccur * -1.
  ENDIF.
  APPEND lt_curr. CLEAR lt_curr.
Regards,
Abbas.

Similar Messages

  • PPDIT Table, Difference between WRBTR and FWBAS

    Hi everyone.
    I would like to know the difference between two columns in the PPDIT table, the columns both have the header of "Amount" when  executed in se16.
    se11 shows that they are two different fields: WRBTR and FWBAS. the FWBAS column always shows the amount of 0.00 in se16 while WRBTR shows positive and negative values.
    I'm a newbie in SAP so I hope I can get some help. Thanks

    You can refer to https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=404152.1
    In addition, eTRM should be also helpful.

  • Conversion of MENGE and DMBTR fields

    Hi Guru's,
    Here I'm facing some problem with the conversion
    I have to convert price field(EKBE-DMBTR) from 123.45 of data type CURR to 12345 of data type CHAR, and
    also quantity field(EKBE-MENGE) from 123.456 of data type QUAN to 123456 of data type Numeric which are in EKBE table.

    Hi,
    Use WRITE statement to convert the currency value to a character value.
    WRITE <curr field> TO <char field> CURRENCY <currency>.
    or
    Try out this FM.
    TRS_CONVERT_AMOUNT_TO_TEXT
    For qty also you can use write.
    <b>Reward if helpful.</b>

  • Internal table field does not show data.

    hello experts,
    I am currently modifying a code in a report where it shows PO's and it amount, downpayment, Invoice, GR, payment and balance. Now the problem is, some of the PO amount(it gets the amount from ekpo-netwr) does not show on the report output. the field is t_amount-netwr. I really need help on this one guys. Thanks and take care!
    PERFORM process_with_budat.
    FORM process_with_budat.
      DELETE t_pohistory WHERE hist_type <> 'A'
                           AND hist_type <> 'E'
                           AND hist_type <> 'Q'.
      LOOP AT t_account.
        DELETE it_dtl WHERE ebeln = t_account-ebeln
                        AND psphi IS initial.
        DELETE t_ekpo WHERE ebeln = t_account-ebeln
                        AND ebelp = t_account-po_item.
        t_proj-ebelp = t_account-po_item.
        SELECT SINGLE psphi FROM prps INTO t_proj-psphi
              WHERE posid = t_account-wbs_elem_e.
        CHECK sy-subrc = 0.
        LOOP AT t_pohistory WHERE po_item = t_account-po_item
                              AND ebeln   = t_account-ebeln.
          t_amount-ebeln = t_account-ebeln.
          t_amount-psphi = t_proj-psphi.
          ON CHANGE OF t_pohistory-po_item.
            CLEAR v_netwr.
            SELECT SINGLE netwr FROM ekpo INTO v_netwr
                  WHERE ebeln = t_account-ebeln
                    AND ebelp = t_account-po_item.
            t_amount-netwr = v_netwr.
          ENDON.
          IF v_ebeln IS INITIAL AND v_ebelp IS INITIAL.
            CLEAR v_netwr.
            SELECT SINGLE netwr FROM ekpo INTO v_netwr
                  WHERE ebeln = t_account-ebeln
                    AND ebelp = t_account-po_item.
            t_amount-netwr = v_netwr.
            v_ebeln = t_account-ebeln.
            v_ebelp = t_account-po_item.
          ELSEIF v_ebeln <> t_account-ebeln AND
                 v_ebelp <> t_account-po_item.
            CLEAR v_netwr.
            SELECT SINGLE netwr FROM ekpo INTO v_netwr
                  WHERE ebeln = t_account-ebeln
                    AND ebelp = t_account-po_item.
            t_amount-netwr = v_netwr.
            v_ebeln = t_account-ebeln.
            v_ebelp = t_account-po_item.
          ELSEIF v_ebeln = t_account-ebeln AND
                 v_ebelp <> t_account-po_item.
            CLEAR v_netwr.
            SELECT SINGLE netwr FROM ekpo INTO v_netwr
                  WHERE ebeln = t_account-ebeln
                    AND ebelp = t_account-po_item.
            t_amount-netwr = v_netwr.
            v_ebeln = t_account-ebeln.
            v_ebelp = t_account-po_item.
          ENDIF.
          CHECK NOT t_amount-psphi IS INITIAL.
          if t_pohistory-pstng_date LE pa_augdt.
         IF t_pohistory-pstng_date IN so_augdt.
            IF t_pohistory-db_cr_ind = 'H'.
              t_pohistory-val_loccur = - t_pohistory-val_loccur.
              t_pohistory-val_forcur = - t_pohistory-val_forcur.
              t_pohistory-cl_val_loc = - t_pohistory-cl_val_loc.
            ENDIF.
            IF t_pohistory-hist_type = 'A'.
              IF t_pohistory-currency <> 'PHP'.
                t_amount-dpamt = t_amount-dpamt + t_pohistory-val_forcur.
              ELSE.
                t_amount-dpamt = t_amount-dpamt + t_pohistory-val_loccur.
              ENDIF.
            ELSEIF t_pohistory-hist_type = 'E'.
              IF t_pohistory-currency <> 'PHP'.
                t_amount-gramt = t_amount-gramt + t_pohistory-val_forcur.
              ELSE.
        t_amount-gramt = t_amount-gramt + t_pohistory-val_loccur.
              ENDIF.
            ELSEIF t_pohistory-hist_type = 'Q'.
              IF t_pohistory-currency <> 'PHP'.
           t_amount-iramt = t_amount-iramt + t_pohistory-val_forcur.
              ELSE.
                t_amount-iramt = t_amount-iramt + t_pohistory-val_loccur.
              ENDIF.
            ENDIF.
            IF t_pohistory-currency <> 'PHP'.
              IF t_pohistory-val_loccur = 0 OR
                 t_pohistory-val_forcur = 0.
                t_amount-tramt = t_amount-iramt.
               t_amount-tramt = t_amount-dpamt.
              ELSE.
                t_amount-tramt = t_amount-iramt.
              ENDIF.
            ELSE.
              t_amount-tramt = t_amount-iramt.
             t_amount-tramt = t_pohistory-cl_val_loc + t_amount-dpamt.
            ENDIF.
            IF NOT t_pohistory-cl_val_loc IS INITIAL.
              CONCATENATE t_pohistory-mat_doc t_pohistory-doc_year
                    INTO bkpf-awkey.
             SELECT SINGLE * FROM bkpf
                   WHERE awkey = bkpf-awkey.
    *AVH - removed wrbtr and dmbtr from selection
              SELECT augdt augbl shkzg FROM bsak
                    INTO (bsak-augdt,bsak-augbl,bsak-shkzg)
                    WHERE bukrs = bkpf-bukrs
                      AND gjahr = bkpf-gjahr
                      AND belnr = bkpf-belnr.
    *AVH
                if not bsak-augbl is initial.
                  select belnr gjahr from bsak
                   into (bsak-belnr, bsak-gjahr)
                    where bukrs = bkpf-bukrs
                     and belnr = bkpf-belnr
                     and gjahr = bkpf-gjahr.
                    select awkey from bkpf
                     into v_bkpf_aw
                     where bukrs = 'GLOB'
                       and belnr = bsak-belnr
                       and gjahr = bsak-gjahr.
                      w_len = strlen( v_bkpf_aw ).
                      w_off = w_len - 4.
                      v_awkey_1 = v_bkpf_aw+0(10).
                      v_awkey_2 = v_bkpf_aw+w_off(4).
                      select single dmbtr wrbtr from ekbe
                        into (ekbe-dmbtr, ekbe-wrbtr)
                       where belnr = v_awkey_1
                         and gjahr = v_awkey_2.
    *AVH - Changed all bsak-wrbtr to ekbe-wrbtr and dmbtr to ekbe-dmbtr.
                      IF bsak-shkzg = 'H'.
                        ekbe-dmbtr = - ekbe-dmbtr.
                        ekbe-wrbtr = - ekbe-wrbtr.
                      ENDIF.
                      IF t_pohistory-currency <> 'PHP'.
                        IF bsak-augdt GT pa_augdt.
                 IF bsak-augdt IN so_augdt.
                          t_amount-tramt = t_amount-tramt + ekbe-wrbtr.
                        ENDIF.
                      ELSE.
                        IF bsak-augdt GT pa_augdt.
                 IF bsak-augdt IN so_augdt.
                          t_amount-tramt = t_amount-tramt + ekbe-dmbtr.
                        ENDIF.
                      ENDIF.
                    endselect.
                   endselect.
                  endselect.
                endif.
              ENDSELECT.
            ENDIF.
            IF t_account-distr_perc <> 0.
              t_amount-dpamt = ( t_account-distr_perc *
                                 t_amount-dpamt ) / 100.
              t_amount-gramt = ( t_account-distr_perc *
                                 t_amount-gramt ) / 100.
              t_amount-iramt = ( t_account-distr_perc *
                                 t_amount-iramt ) / 100.
              t_amount-tramt = ( t_account-distr_perc *
                                 t_amount-tramt ) / 100.
            ENDIF.
          ENDIF.
          IF t_amount-tramt < 0.
            t_amount-tramt = 0.
          ENDIF.
          t_amount-tramt = t_amount-iramt.
          t_amount-blamt = t_amount-netwr - t_amount-tramt.
          COLLECT t_amount. CLEAR t_amount.
          APPEND t_proj.
        ENDLOOP.
        IF sy-subrc <> 0.
          CLEAR v_netwr.
          SELECT SINGLE netwr FROM ekpo INTO v_netwr
                WHERE ebeln = t_account-ebeln
                  AND ebelp = t_account-po_item.
          t_amount-ebeln = t_account-ebeln.
          t_amount-psphi = t_proj-psphi.
          t_amount-tramt = t_amount-iramt.
          t_amount-blamt = t_amount-netwr - t_amount-tramt.
          COLLECT t_amount. CLEAR t_amount.
          APPEND t_proj.
        ENDIF.
      ENDLOOP.
    endform.
    **This is where it transfers the data**
    LOOP AT t_amount.
        it_dtl-netwr = t_amount-netwr.
        it_dtl-dpamt = t_amount-dpamt.
        it_dtl-gramt = t_amount-gramt.
        it_dtl-iramt = t_amount-iramt.
        it_dtl-tramt = t_amount-tramt.
        it_dtl-blamt = t_amount-blamt.
        MODIFY it_dtl TRANSPORTING netwr dpamt gramt
                                   iramt tramt blamt
              WHERE ebeln = t_amount-ebeln
                AND psphi = t_amount-psphi.
        CLEAR it_dtl.
      ENDLOOP.

    hi ,
    just place the code and check for a particular po if its there inthe ekpo table then it has to get it for ur select single query .
    but ur logic is build on if --- endif.check this option first of all.
    if in the debugging u see the value then as u say in the report output u r not able to see the value then the problem will be space alignment also.
    check the value in debugging and let us know first of all . okay
    vijay.
    IF v_ebeln IS INITIAL AND v_ebelp IS INITIAL.
    CLEAR v_netwr.
    SELECT SINGLE netwr FROM ekpo INTO v_netwr
    WHERE ebeln = t_account-ebeln
    AND ebelp = t_account-po_item.
    break-point.
    t_amount-netwr = v_netwr.
    v_ebeln = t_account-ebeln.
    v_ebelp = t_account-po_item.
    ELSEIF v_ebeln <> t_account-ebeln AND
    v_ebelp <> t_account-po_item.
    CLEAR v_netwr.
    SELECT SINGLE netwr FROM ekpo INTO v_netwr
    WHERE ebeln = t_account-ebeln
    AND ebelp = t_account-po_item.
    break-point.
    t_amount-netwr = v_netwr.
    v_ebeln = t_account-ebeln.
    v_ebelp = t_account-po_item.
    ELSEIF v_ebeln = t_account-ebeln AND
    v_ebelp <> t_account-po_item.
    CLEAR v_netwr.
    SELECT SINGLE netwr FROM ekpo INTO v_netwr
    WHERE ebeln = t_account-ebeln
    AND ebelp = t_account-po_item.
    break-point.
    t_amount-netwr = v_netwr.

  • Decimal change in BSEG table

    Hi Sapiens,
    I have a  very peculiar doubt. I have set the currency INR to 3 decimal places. After posting a document when i check the same information in BSEG, the amount updated in PSWBT is correct (ex 900.000) but the amount updated in DMBTR and WRBTR in (9000.00)
    Please advise me on the same.
    Regards
    MS

    Hi,
    bseg-wrbtr (and dmbtr) are correct
    and always fields with <b>2</b> decimals.
    You can depict your value fields,
    if you have customized table tcurx, with the command:
    write zfield currency bkpf-waers. (here INR)
    regards Andreas

  • Help in my Logic

    See I have this code.
    with parameters
    PARAMETERS: pdate(6)    TYPE n OBLIGATORY,
                tble1(20)   TYPE C OBLIGATORY,
                tble2(20)   TYPE C OBLIGATORY,
                ccode(20)   TYPE C.
    My job is to output a  Report should show all BUKRS, INVNO, sum(WRBTR) and sum(DMBTR) where the sum(WRBTR) and sum(DMBTR)  do not match between Table 1 and Table 2. pdate format is YYYYMM and ccode in this case is the BUKRS field.
    This is what I have
    SELECT BUKRS BELNR SUM( WRBTR ) SUM( DMBTR ) FROM ZISZT_ZPDPLD INTO zpdpld_line GROUP BY BUKRS BELNR.
               APPEND zpdpld_line to zpdpld_itab.
    ENDSELECT.
    Now how do I narrow the fields down since I have to take into consideration the ccode, as well as the pdate??

    Oh Sorry about that. See I have these parameters:
    PARAMETERS: pdate(6)    TYPE n OBLIGATORY,
                tble1(20)   TYPE C OBLIGATORY,
                tble2(20)   TYPE C OBLIGATORY,
                ccode(20)   TYPE C.
    in my code. pdate is YYYYMM ccode is optional while table1 and table 2 are the table names. my goal is to output a report that lists the unmatched sum of certain fields in table 1 and 2.
    Lets sat field DMBRT AND WRBTR. btw, both tables has these fields. I have to compare the sum of the two tables and output it if there is no match. Now. Before outputting there is a rule. Which is to group them by BUKRS, which in this case is the ccode in the parameter. first i have to group them by bukrs then in the group get the sum and match it with the other table with the same bukrs, if there is not a match, it should be outputted. my problem now is, the pdate. because there is also a field in the table BUDAT with format YYYYMMDD. my pdate parameter is only YYYYMM. I am able to change the table's parameter to match th pdate. but how can i do all these matches?
    So far my code is.
    SELECT BUKRS BELNR SUM( WRBTR ) SUM( DMBTR ) FROM ZISZT_ZPDPLD INTO zpdpld_line GROUP BY BUKRS BELNR.
              IF ccode+(1) NE ''.
                   IF ccode EQ zpdpld_line-BUKRS.
                       APPEND zpdpld_line to zpdpld_itab.
                   ENDIF.
              ENDIF.
    ENDSELECT.
    basically it gets the ccode (BUKRS) the sum wrbtr and dmbtr as well as the document number (BELNR) from the table ZISZT_ZPDPLD(tble1, it always has to be ZISZT_ZPDPLD). Now my problem is, now i am able to group them by BUKRS, able to get the sum, able to compare it with ccode. But how can I compare it with pdate?. I can't make
    SELECT BUKRS BUDAT(pdate) BELNR SUM(WRBTR) SUM(DMBTR) FROM ZISZT_ZPDPLD INTO..
    since it is not one of the GROUP BY conditions. But I still have to compare it before appending it because it is one of the conditions of my program. Hehe is it clear or not?

  • Currency Field on the custom sceen

    Hi Friends
    I have developed a custom screen and the input fields are the custom table fields.
    I have created a work are in the program for that custom table and placed them on
    the screen, now my problem is I have to currency fields (WRBTR and DMBTR), while
    entering amounts in those fields, depend on the currency type, some times the decimal
    place may have 2 or 3 or 4..5 like that. But now it is taking only two decimals irrespective
    of the currency type.
    Can you anyone please help me out how to set this, because in my scenario they
    will be having morethan 2 decimals.
    Thanks in Advance
    Praveen

    hi,
    in database table  the field WRBTR has only 2 decimal palces.
    so u are not able to giving 3 or 4 decimal for that you have to go to sap.service.com.
    procedure : open the database table in change mode . when u click on change he asked access key
    R3TR-TABL-RBMA
    700
    give its in sap.services.com .
    but for that you have to user id & password .
    after that u can increase the length of decimal places in database table .
    reagrds
    aniruddh

  • Need ABAP OOPs

    hi all
    I'm new for ABAP OOPS, I want to know about abap oops concept. Can you any one explain about that i want simple example.
    with regards.
    Muthukumar.K

    Hi Muthu,
    Please check out transaction ABAPDOCU. It contains multiple examples on ABAP Objects. Also, browse this site for more examples on ABAP Objects. I also have included a sample report that I did using ABAP Objects. Please check it out. Hope it helps...
    P.S. Please award points if it helps...
    *==================================================================
    * 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: <fs_asof>      TYPE bsis-gjahr,
                   <fs_bsis_bsas> 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 <= 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 <= p_asof
          AND augdt > 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 > 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: <fs_bsis_bsas> 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 <fs_bsis_bsas>.
            MOVE <fs_bsis_bsas>-waers TO wa_waers.
            INSERT wa_waers INTO TABLE it_waers.
            <fs_bsis_bsas>-year_dum = <fs_bsis_bsas>-bldat+0(4).
          ENDLOOP.
        ENDIF.
        ASSIGN lv_asof TO <fs_asof>.
        IF NOT lv_check = 1.
          SORT it_bsis_bsas BY hkont year_dum belnr bldat waers dmbtr wrbtr.
          IF <fs_bsis_bsas> IS ASSIGNED.
            UNASSIGN <fs_bsis_bsas>.
            READ TABLE it_bsis_bsas INDEX 1 ASSIGNING <fs_bsis_bsas>.
            IF sy-subrc = 0 AND <fs_bsis_bsas> IS ASSIGNED.
              gv_hkont = <fs_bsis_bsas>-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) <fs_asof> RIGHT-JUSTIFIED.
                ELSEIF sy-index = 7.
                  WRITE: AT lv_pos_dum(13) <fs_asof> RIGHT-JUSTIFIED.
                ELSE.
                  WRITE: AT lv_pos_dum(15) <fs_asof> RIGHT-JUSTIFIED.
                ENDIF.
                ADD 21 TO lv_pos_dum.
                SUBTRACT 1 FROM <fs_asof>.
              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 <> '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 > 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->conversion EXPORTING
                                           year      = <fs_asof>
                                           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 = <fs_asof>.
                wa_local-rate = t_exch_rate-exch_rate_v.
                INSERT wa_local INTO TABLE it_local.
              ENDIF.
              SUBTRACT 1 FROM <fs_asof>.
              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 > 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 = <fs_asof>
                                           INTO wa_local TRANSPORTING rate.
              lv_rate = wa_local-rate.
            ELSEIF t_from_curr = 'PHP'.
              READ TABLE it_local WITH KEY year = <fs_asof>
                                           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->conversion EXPORTING
                                          year      = <fs_asof>
                                          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 = <fs_asof>
                                            INTO wa_local TRANSPORTING rate.
                IF sy-subrc = 0.
                  IF t_exch_rate-exch_rate_v <> 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      = <fs_asof>.
              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->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 <fs_asof>.
            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 > 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 > 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) <fs_asof> RIGHT-JUSTIFIED.
          SUBTRACT 1 FROM <fs_asof>.
          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 > 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 <fs_bsis_bsas>.
          IF lv_color = 1.
            lv_color = 2.
          ELSE.
            lv_color = 1.
          ENDIF.
    *     if <fs_bsis_bsas>-shkzg = 'H', multiply WRBTR and
    *     DMBTR by -1
          IF <fs_bsis_bsas>-shkzg = 'H'.
            <fs_bsis_bsas>-wrbtr = <fs_bsis_bsas>-wrbtr * -1.
            <fs_bsis_bsas>-dmbtr = <fs_bsis_bsas>-dmbtr * -1.
          ENDIF.
    *     for every new account no.(HKONT), create a new page
          lv_new = <fs_bsis_bsas>-hkont.
          gv_hkont = <fs_bsis_bsas>-hkont.
          IF lv_new <> lv_old AND NOT lv_old IS INITIAL.
            NEW-PAGE.
            CALL METHOD me->display_subheader.
            CALL METHOD me->display_header.
          ENDIF.
          lv_old = lv_new.
    *     write details
          FORMAT INTENSIFIED OFF COLOR = lv_color.
          WRITE: /   sy-vline,
                (18) <fs_bsis_bsas>-zuonr   CENTERED,
                (04) <fs_bsis_bsas>-blart   CENTERED,
                (10) <fs_bsis_bsas>-belnr   CENTERED,
                (10) <fs_bsis_bsas>-bldat   RIGHT-JUSTIFIED,
                (05) <fs_bsis_bsas>-waers   RIGHT-JUSTIFIED,
                (20) <fs_bsis_bsas>-wrbtr   RIGHT-JUSTIFIED,
                (20) <fs_bsis_bsas>-dmbtr   RIGHT-JUSTIFIED.
          ADD <fs_bsis_bsas>-dmbtr TO: lv_dmbtr, lv_dmbtr_tot.
    *     write the converted amount for a given year
          WHILE lv_check <= lv_counter.
            IF <fs_asof> >= <fs_bsis_bsas>-bldat+0(4).
              t_from_curr = <fs_bsis_bsas>-waers.
              READ TABLE it_exch WITH KEY year      = <fs_asof>
                                          rate      = t_rate_type
                                          from_curr = t_from_curr
                                        INTO wa_exch TRANSPORTING exch_rate.
              IF sy-subrc = 0.
                IF <fs_bsis_bsas>-waers = 'PHP'.
                  lv_amount = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
                  lv_amount = <fs_bsis_bsas>-wrbtr * lv_amount.
                ELSE.
                  lv_amount = <fs_bsis_bsas>-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 <fs_asof>.
            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,
                   <fs_bsis_bsas>-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', <fs_bsis_bsas>-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 > 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 <> 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 <> 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: <fs_dum> 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 <fs_bsis_bsas>.
          AT NEW hkont.
            MOVE <fs_bsis_bsas>-hkont TO wa_summary-hkont.
          ENDAT.
          AT NEW year_dum.
            MOVE <fs_bsis_bsas>-year_dum TO wa_summary-year_dum.
          ENDAT.
          AT NEW waers.
            MOVE <fs_bsis_bsas>-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->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 <fs_dum>
             WHERE hkont    = wa_summary-hkont
               AND year_dum = wa_summary-year_dum
               AND waers    = wa_summary-waers.
            ADD <fs_dum>-wrbtr TO wa_summary-wrbtr.
            ADD <fs_dum>-dmbtr TO wa_summary-dmbtr.
            IF NOT wa_exch-exch_rate IS INITIAL.
              IF <fs_dum>-waers = 'PHP'.
                lv_balance = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
                lv_balance = <fs_dum>-wrbtr * lv_balance.
                ADD lv_balance TO wa_summary-gl_bal.
              ELSE.
                lv_balance = <fs_dum>-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->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 <> 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->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->handle_event FOR ALL INSTANCES.
      CALL METHOD o_main->get_data.
      CALL METHOD o_main->get_diff.
      CALL METHOD o_main->display_subheader.
      CALL METHOD o_main->display_header.
      CALL METHOD o_main->get_rate_and_show
         IMPORTING
            ex_bsis_bsas = it_bsis_bsas_dum
            ex_exch      = it_exch_dum.
      CALL METHOD o_summary->display_summary
         EXPORTING
            im_bsis_bsas = it_bsis_bsas_dum
            im_exch      = it_exch_dum.

  • How to make BSEG-DMBTR (amt in loc CoCode currency) Optional or mandatory?

    Hi,
    Normally, the field BSEG-DMBTR is hidden unless you put a value (other than that of the company code currency) in the field BKPF-WAERS  (Document Currency). However, for data conversion purposes, we are uploading an excel file with our open items & balances and wish to populate both BSEG-WRBTR (amount in transaction currency) and BSEG-DMBTR (amount in CoCode / local currency). The problem is that where BKPF-WAERS  = CoCode Currency, the BSEG-DMBTR is hidden.  It seems there's no way of making BSEG-DMBTR  optional / mandatory via the field status of either the g/l account or the posting keys..........
    Any ideas on this, or experiences you've had regarding uploading values to BSEG-DMBTR  and BSEG-WRBTR wold be appreciated. For example, if the document currency = CoCode currency, have you just uploaded the value into BSEG-WRBTR?  The reason we are trying to upload both BSEG-WRBTR  and BSEG-DMBTR is because in our excel file, it makes reconciliation easier if we have the BSEG-DMBTR for all documents (inclulding those where the transaction currency = CoCode Currency). 
    Regards, Garoid.

    when you enter the doc currency as local currency - system will ask only doc currency which will be updated in local currency field automatically- no customising required.
    When you enter the doc cur as a different currency than local currency, you have option to enter
    a. exchange rate
    b. enter doc currency and local currency - where rate will be updated automatically by conversion the actual values written.
    When you manually update the Revaluation entries - system will not allow you to enter doc currency - it will ask only local currency. or additional currency as the case may be (if you maintain more parallel currencies.
    SAP program takes care of the subsequent screens fields on the basis first screen entry made- This will be clearly visible when you use Complex posting TCodes like FB01, F-02, etc. This may not be visible in Enjoy SAP screens as the fields are controlled through variants activated - but internal controls stands same.
    Hope it is clear.

  • How to change the Amount in LC(DMBTR) in F-02

    Usually, when we create accounting document though F-02. the Amount in LC(bseg-DMBTR) is create base on the amount(bseg-WRBTR) and the local currency .
    Now I want to change this field's value, I want to know in which program create I can change the Amount in LC(bseg-dmbtr) , or can we change it in Substitution (ZRGGBS000) ?

    Hi,
    as per SAP standard it is no possible once document has posted
    If you want to change amount LC or DC
    Please cancel/reverse document in FB08 if it is open item
    if it is Cleared item means use T code - FBRA
    and post new document correct LC amount
    Thanking you
    Regards
    mahesh

  • Display SAP R/3 table in a portlet with the SAP Adapter

    Hello everybody!
    I still can`t figure out the whole pictue of Bea Weblogic`s SAP Adapter.
    I installed the SAP Adapter (BEA_SAP_1_0_70.ear) and the Applicaton Explorer,
    made an Application View with the generated XML-Schema and the Template example
    in the WL Integration Studio. So what`s next??? (I want to make a portlet which
    displays a table from a BAPI request.) Any help would be helpful!
    Thanks 4 answering !
    Kind regards,
    uggar

    Hi Simon,
    Thanks for your inputs.
    Why the amount is changed in display mode only for WRBTR and not for DMBTR as both are of CURR datatype and created using same domain. I fail to understand any logic behind this.
    I have even created a ABAP report on this table which displys fields DMBTR and WRBTR, and in the report output following values are displayed.
    DMBTR 100.05
    WRBTR 100.05
    If anybody else has come across this before and has any clue please help.
    Thanks and Regards
    Shilpa

  • Vendor ageing report data for all doc type needed(urgent)

    hello everyone
    once again i need ur help guys.
    in the vendor ageing report i am getting data for only one document type and not of other.
    ex- see i have two documents type-
    1.KD 2. EJ
    so i am getting data for document type KD only.
    so how to get the data of document type EJ along with KD.
    below is my code .
    so tell what modifications i have to made .
    *& Report  Z_VENDOR AGEING                                                    *
    *&  in this repoet I am calculating the vendor ageing
        which is depending on formula
        AGEING = Current Date(or any date entered by user) – Bline Date(BSIK-ZFBDT)                                                                 *
    REPORT  z_vendor  NO STANDARD PAGE HEADING
                      LINE-SIZE 200
                      LINE-COUNT 65(3).
    TABLES : bsik.
    DATA : BEGIN OF t_out OCCURS 0,
           bukrs LIKE bsik-bukrs,
           saknr LIKE bsik-saknr,
           bldat LIKE bsik-bldat,
           wrbtr LIKE bsik-wrbtr,
           lifnr LIKE bsik-lifnr,
           zfbdt like bsik-zfbdt,
           zbd1t like bsik-zbd1t,
           ageing type i,
           END OF t_out.
    parameters : p_date1 type d.
    SELECT-OPTIONS : s_bukrs FOR bsik-bukrs,
                     s_saknr FOR bsik-saknr,
                     s_lifnr FOR bsik-lifnr.
    SELECT bukrs saknr bldat wrbtr lifnr zfbdt zbd1t
           FROM bsik
           INTO  TABLE t_out
           WHERE saknr IN s_saknr
           AND bukrs IN s_bukrs
           AND lifnr IN s_lifnr.
    Loop at t_out.
    CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
      EXPORTING
        i_datum_bis                   = p_date1
        i_datum_von                   = t_out-zfbdt
      I_KZ_EXCL_VON                 = '0'
      I_KZ_INCL_BIS                 = '0'
      I_KZ_ULT_BIS                  = ' '
      I_KZ_ULT_VON                  = ' '
      I_STGMETH                     = '0'
      I_SZBMETH                     = '1'
    IMPORTING
       E_TAGE                        = t_out-ageing
    EXCEPTIONS
      DAYS_METHOD_NOT_DEFINED       = 1
      OTHERS                        = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Modify t_out.
    Clear t_out.
    Endloop.
    LOOP AT T_OUT.
    IF T_OUT-SHKZG = ‘H’.
    T_OUT-WRBTR = T_OUT-WRBTR * -1.
    T_OUT-WRBTR = T_OUT-DMBTR * -1.
    ENDIF.
    DATA: TOTAL(16) TYPE P DECIMALS 2.
    TOTAL = TOTAL + T_OUT-DMBTR.
    Endloop.
    LOOP AT t_out.
      WRITE : / t_out-saknr,
                t_out-lifnr,
                t_out-wrbtr,
                t_out-zfbdt,
                T_OUT-DMBTR,
                t_out-ageing.
    AT LAST.
    WRITE:/ TOTAL.
    CLEAR TOTAL.
    ENDAT.
    ENDLOOP.
    Message was edited by: sanjeev singh

    Sanjeev,
    Can you tell what is document type EJ representing...Secondly, if you check couple of documents of EJ type and check if data is available as per you WHERE clause filters.
    Regards
    Anurag

  • Comparing fbl1n open items  my program some vendors total amont is not tali

    Hi
    this is vendor aging report.  i have used BSEG, FAGLFLEXA, LFA1, BKPF.
    problem is  Comparing fbl1n open items  my program some vendors total amont is not tali.
    sapose : 1033  fbl1n date is : 30.01.2009.
               my report used same date .
    here proble is : fbl1n show clear item also  in  partuculr date range but
                             my report show only open items ony not peaking  close item's in ie date range.
    SELECT BUKRS BELNR BUZEI GJAHR LIFNR KTOSL XAUTO REBZG UMSKS KOART AUGBL BSCHL UMSKZ SHKZG WRBTR ZFBDT DMBTR ZBD1T ZBD2T
    FROM BSEG INTO CORRESPONDING FIELDS OF TABLE I_BSEG WHERE BUKRS EQ P_BUKRS AND
    LIFNR IN S_LIFNR AND
    AUGDT GE P_BUDAT and AUGBL = SPACE
       AND KOART = 'K'
    AND ( BSCHL = '21' OR BSCHL = '22' OR BSCHL = '23' OR BSCHL = '24' OR BSCHL = '25' OR BSCHL = '26' OR BSCHL = '27' OR
    BSCHL = '28' OR BSCHL = '29' OR BSCHL = '30' OR BSCHL = '31' OR BSCHL = '32' OR BSCHL = '33' OR BSCHL = '34' OR
    BSCHL = '35' OR BSCHL = '36' OR BSCHL = '37' OR BSCHL = '38' OR BSCHL = '39' OR BSCHL = '50' ).
    please give me solustion.

    hi,
    See perhaps this pable
    VBSEGA                         Document Segment for Document Parking - As
    VBSEGD                         Document Segment for Customer Document Par
    VBSEGK                         Document Segment for Vendor Document Parki
    VBSEGS                         Document Segment for Document Parking - G/
    Rgds

  • Proper data download to excel

    hi all,
    i am getting right output.But while downloading iam not
    getting the data for name1 field from lfa1 table to be displayed & also while downloading the negative sign is not coming for the amount values.
    Modify the below code.
    REPORT zvenageing1 NO STANDARD PAGE HEADING                             
                        LINE-SIZE 300                                        
                        LINE-COUNT 65(3).                                    
    TABLES DECLARATION                                                    
    TABLES : bsik,  "Accounting: Secondary index for vendors                
              bsak,  "Accounting: Secondary index for vendors (cleared
    items)
              lfa1.                                                                               
    INTERNAL TABLE                                                        
    DATA : BEGIN OF itab OCCURS 0,                                          
            saknr LIKE bsik-saknr,                                           
            lifnr LIKE bsik-lifnr,                                           
            name1 LIKE lfa1-name1,                                           
            umskz LIKE bsik-umskz,                                           
            belnr LIKE bsik-belnr,                                           
            blart LIKE bsik-blart,                                           
            bldat LIKE bsik-bldat,
                   zfbdt LIKE bsik-zfbdt,                                                   
           ageing TYPE i,                                                           
           duedate LIKE itab-zfbdt,                                                 
           zbd1t LIKE bsik-zbd1t,                                                   
           waers LIKE bsik-waers,                                                   
           wrbtr LIKE bsik-wrbtr,                                                   
           pswsl LIKE bsik-pswsl,                                                   
           dmbtr LIKE bsik-dmbtr,                                                   
           sgtxt LIKE bsik-sgtxt,                                                   
           shkzg LIKE bsik-shkzg,                                                   
           END OF itab.                                                                               
    HEADER DETAILS                                                                
    DATA : BEGIN OF itab_head OCCURS 0,                                             
           name1(20) TYPE c,                                                        
           name2(20) TYPE c,                                                        
           name3(50) TYPE c,                                                        
            name4(20) TYPE c,                                                
            name5(20) TYPE c,                                                
            name6(20) TYPE c,                                                
            name7(20) TYPE c,                                                
            name8(20) TYPE c,                                                
            name9(20) TYPE c,                                                
            name10(20) TYPE c,                                               
            name11(20) TYPE c,                                               
            name12(20) TYPE c,                                               
            name13(20) TYPE c,                                               
            name14(20) TYPE c,                                               
            name15(20) TYPE c,                                               
            name16(20) TYPE c,                                               
            END OF itab_head.                                                                               
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.           
    SELECT-OPTIONS : s_bukrs FOR bsik-bukrs,                                
                      s_saknr FOR bsik-saknr,                                   
                      s_lifnr FOR bsik-lifnr.                                   
    PARAMETERS : p_date1 LIKE itab-zfbdt." value sy-datum.                     
    SELECTION-SCREEN END OF BLOCK b1.                                          
    *p_date1 = sy-datum.                                                       
    SET PF-STATUS '100'.                                                       
    PERFORM head.                                                              
    SELECT saknr lifnr belnr bldat zfbdt zbd1t waers wrbtr pswsl dmbtr         
            sgtxt shkzg blart umskz                                             
            INTO CORRESPONDING FIELDS OF TABLE itab                             
            FROM bsik                                                           
            WHERE bukrs IN s_bukrs                                              
            AND saknr IN s_saknr                                                
            AND lifnr IN s_lifnr                                                
            AND zfbdt LE p_date1                                                
            AND budat LE p_date1                                                
            AND umskz NE 'F'.                                                   
    SELECT saknr lifnr belnr bldat zfbdt zbd1t waers wrbtr pswsl dmbtr     
           sgtxt shkzg blart umskz                                         
           FROM bsak                                                       
           APPENDING CORRESPONDING FIELDS OF TABLE itab                    
           WHERE bukrs IN s_bukrs                                          
           AND saknr IN s_saknr                                            
           AND lifnr IN s_lifnr                                            
           AND zfbdt LE p_date1                                            
           AND augdt GT p_date1                                            
           AND budat LE p_date1.                                                                               
    LOOP AT itab.                                                          
      CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'                               
           EXPORTING                                                       
                i_datum_bis             = p_date1                          
                i_datum_von             = itab-zfbdt                       
            I_KZ_EXCL_VON           = '0'                                
            I_KZ_INCL_BIS           = '0'                                 
            I_KZ_ULT_BIS            = ' '                                 
            I_KZ_ULT_VON            = ' '                                 
            I_STGMETH               = '0'                                 
            I_SZBMETH               = '1'                                 
          IMPORTING                                                         
               e_tage                  = itab-ageing                        
           EXCEPTIONS                                                       
                days_method_not_defined = 1                                 
                OTHERS                  = 2.                                
      MODIFY itab.                                                          
      CLEAR itab.                                                           
    ENDLOOP.                                                                               
    LOOP AT itab.                                                           
    CLEAR lfa1.                                                             
      SELECT SINGLE name1 FROM lfa1                                         
             INTO (itab-name1)                                              
             WHERE lifnr = itab-lifnr.                                                                               
    IF itab-shkzg EQ 'H'.                                                 
        itab-wrbtr = itab-wrbtr * -1.                                       
        itab-dmbtr = itab-dmbtr * -1.                                       
      ENDIF.                                                                
      DATA : total(16) TYPE p DECIMALS 2.                                   
      total = total + itab-dmbtr.                                           
      itab-duedate = itab-zfbdt + itab-zbd1t.                                                                               
    WRITE : /2(10)     itab-saknr,                                        
               12(10)    itab-lifnr,                                        
               24(35)    itab-name1,                                        
               61(1)     itab-umskz,                                        
               70(10)    itab-belnr,                                        
               82(2)     itab-blart,                                        
               86(10)    itab-bldat,                                       
               98(10)    itab-zfbdt,                                       
              110(4)     itab-ageing,                                      
              116(10)    itab-duedate,                                     
              130(3)     itab-zbd1t,                                       
              146(5)     itab-waers,                                       
              152(13)    itab-wrbtr,                                       
              166(5)     itab-pswsl,                                       
              174(13)    itab-dmbtr,                                       
              190(50)    itab-sgtxt.                                       
             243(25) itab-xblnr.                                                                               
    AT LAST.                                                             
      SKIP 1.                                                              
        ULINE.                                                             
        WRITE : /2 'GRAND TOTAL' COLOR 3,155 total COLOR 3.                
        ULINE.                                                             
        CLEAR total.                                                            
      ENDAT.                                                                    
    ENDLOOP.                                                                    
          FORM HEAD                                                     *     
    FORM head.                                                                  
    ULINE.                                                                     
    WRITE :/15 'V E N D O R  O P E N  I T E M S  A S  O N  : ', p_date1        
      COLOR 3 INTENSIFIED ON.                                                   
    ULINE.                                                                     
       FORMAT COLOR 2 INTENSIFIED OFF.                                          
    ULINE.                                                                     
       WRITE : /2 'RECON.A/C',                                                  
                12 'VENDOR NO.',                                                
                24 'VENDOR NAME',                                          
                61 'SP.GL',                                                
                73 'DOC.NO',                                               
                81 'DT',                                                   
                85  'DOC.DATE',                                            
                95  'INV.RCD.DATE',                                        
                109 'AGE DAYS',                                            
                119 'DUE DATE',                                            
                132 'CREDIT PERIOD',                                       
                148 'CURR',                                                
                156 'AMT.IN.DOC',                                          
                167 'LOC.CUR',                                             
                176 'AMT.IN.LOCA',                                         
                192 'TEXT'.                                                
       ULINE : /(300).                                                     
    ENDFORM.                                                                               
    AT USER-COMMAND.                                                        
      IF sy-ucomm = 'EXCEL'.                                                
       WHEN 'EXCEL'.                                                      
          PERFORM downloadexcel.                                            
      ENDIF.                                                                
          FORM DOWNLOADEXCEL                                            * 
    FORM downloadexcel.                                                     
      DATA : b_file1 LIKE rlgrap-filename.                                  
      REFRESH itab_head.                                                    
      MOVE : 'REC A/C'         TO itab_head-name1,                          
             'VEN A/C'         TO itab_head-name2,                          
             'VEN NAME'        TO itab_head-name3,                          
             'SP G/L'          TO itab_head-name4,                          
             'DOC NO'          TO itab_head-name5,                          
             'DT'              TO itab_head-name6,                          
             'DOC DATE'        TO itab_head-name7,                          
             'INV.RCD.DATE'    TO itab_head-name8,                          
             'AGEING DAYS'     TO itab_head-name9,                          
             'DUE DATE'        TO itab_head-name10,                         
             'CR DAYS'         TO itab_head-name11,                         
             'DOC CURR'        TO itab_head-name12,                         
             'DOC CURR AMT'    TO itab_head-name13,                         
             'LOC CURR'        TO itab_head-name14,                         
             'LOC CURR AMT'    TO itab_head-name15,                         
             'TEXT'            TO itab_head-name16.                                                                               
    APPEND itab_head.                                                     
      CLEAR itab_head.                                                      
      CALL FUNCTION 'WS_FILENAME_GET'                                       
          EXPORTING                                                         
               def_filename     = ' '                                       
               def_path         = 'C:\'                                     
               mask             = ',.,..'                               
               mode             = 'S'                                       
               title            = 'Save this file as '                      
          IMPORTING                                                         
               filename         = b_file1                                   
            RC               =                                            
           EXCEPTIONS                                                       
                inv_winsys       = 1                                        
                no_batch         = 2                                        
                selection_cancel = 3                                        
                selection_error  = 4                                        
                OTHERS           = 5.                                                                               
    CALL FUNCTION 'WS_DOWNLOAD'                                           
          EXPORTING                                                         
            BIN_FILESIZE            = ' '                                 
               codepage                = 'IBM'                              
               filename                = b_file1                            
               filetype                = 'DAT'                              
            MODE                    = ' '                                 
            WK1_N_FORMAT            = ' '                                 
            WK1_N_SIZE              = ' '                                 
            WK1_T_FORMAT            = ' '                                 
            WK1_T_SIZE              = ' '                                 
            COL_SELECT              = ' '                                 
            COL_SELECTMASK          = ' '                                 
            NO_AUTH_CHECK           = ' '                                 
       IMPORTING                                                          
            FILELENGTH              =                                     
           TABLES                                                           
                data_tab                = itab_head                         
            FIELDNAMES              =                                     
           EXCEPTIONS                                                       
                file_open_error         = 1                                 
                file_write_error        = 2                                 
                invalid_filesize        = 3                                 
                invalid_table_width     = 4                                 
                invalid_type            = 5                                 
                no_batch                = 6                                 
                unknown_error           = 7                                 
                gui_refuse_filetransfer = 8                                 
                OTHERS                  = 9.                                                                               
    CALL FUNCTION 'WS_DOWNLOAD'                                           
          EXPORTING                                                         
            BIN_FILESIZE            = ' '                                 
               codepage                = 'IBM'                              
               filename                = b_file1                            
               filetype                = 'DAT'                              
               mode                    = 'A'                               
            WK1_N_FORMAT            = ' '                                
            WK1_N_SIZE              = ' '                                
            WK1_T_FORMAT            = ' '                                
            WK1_T_SIZE              = ' '                                
            COL_SELECT              = ' '                                
            COL_SELECTMASK          = ' '                                
            NO_AUTH_CHECK           = ' '                                
       IMPORTING                                                         
            FILELENGTH              =                                    
           TABLES                                                          
                data_tab                = itab                             
            FIELDNAMES              =                                    
           EXCEPTIONS                                                      
                file_open_error         = 1                                
                file_write_error        = 2                                
                invalid_filesize        = 3                                
                invalid_table_width     = 4                                 
                invalid_type            = 5                                 
                no_batch                = 6                                 
                unknown_error           = 7                                 
                gui_refuse_filetransfer = 8                                 
                OTHERS                  = 9.                                
    ENDFORM.

    hi Sanjeev,
    Use GUI_DOWNLOAD in this way  ..
          DATA: W_WSD_FILENAME01 TYPE STRING,
                W_WSD_FILETYPE01 TYPE CHAR10.
          W_WSD_FILENAME01 = P_OUT1.
          W_WSD_FILETYPE01 = 'DAT'.
          CALL FUNCTION 'GUI_DOWNLOAD'
               EXPORTING
    *              BIN_FILESIZE                    =
                   FILENAME                        = W_WSD_FILENAME01
                   FILETYPE                        = W_WSD_FILETYPE01
    *              APPEND                          = ' '
    *              WRITE_FIELD_SEPARATOR           = ' '
    *              HEADER                          = '00'
    *              TRUNC_TRAILING_BLANKS           = ' '
    *              WRITE_LF                        = 'X'
    *              COL_SELECT                      = ' '
    *              COL_SELECT_MASK                 = ' '
    *              DAT_MODE                        = ' '
    *              CONFIRM_OVERWRITE               = ' '
    *              NO_AUTH_CHECK                   = ' '
    *              CODEPAGE                        = ' '
    *              IGNORE_CERR                     = ABAP_TRUE
    *              REPLACEMENT                     = '#'
    *              WRITE_BOM                       = ' '
    *              TRUNC_TRAILING_BLANKS_EOL       = 'X'
    *              WK1_N_FORMAT                    = ' '
    *              WK1_N_SIZE                      = ' '
    *              WK1_T_FORMAT                    = ' '
    *              WK1_T_SIZE                      = ' '
    *          IMPORTING
    *              FILELENGTH                      =
               TABLES
                   DATA_TAB                        = ITAB_VBAK
    *              FIELDNAMES                      =
               EXCEPTIONS
                   FILE_WRITE_ERROR                = 1
                   NO_BATCH                        = 2
                   GUI_REFUSE_FILETRANSFER         = 3
                   INVALID_TYPE                    = 4
                   NO_AUTHORITY                    = 5
                   UNKNOWN_ERROR                   = 6
                   HEADER_NOT_ALLOWED              = 7
                   SEPARATOR_NOT_ALLOWED           = 8
                   FILESIZE_NOT_ALLOWED            = 9
                   HEADER_TOO_LONG                 = 10
                   DP_ERROR_CREATE                 = 11
                   DP_ERROR_SEND                   = 12
                   DP_ERROR_WRITE                  = 13
                   UNKNOWN_DP_ERROR                = 14
                   ACCESS_DENIED                   = 15
                   DP_OUT_OF_MEMORY                = 16
                   DISK_FULL                       = 17
                   DP_TIMEOUT                      = 18
                   FILE_NOT_FOUND                  = 19
                   DATAPROVIDER_EXCEPTION          = 20
                   CONTROL_FLUSH_ERROR             = 21
                   OTHERS                          = 22  .
               IF SY-SUBRC <> 0.
    *              MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
               ENDIF.

  • How to do the reverse po in this report

    Hi,   
          i have a one problem in this report . i don,t know how to display the
    reverse po in this report. reverse po should have a po history cat. 'N' (field is bewtp)
    i connect type 'Q' and the type 'E' but not been able to connect the 'N'. when i connect it will give me the wrong amount and some field should not been displayed. i will provide u the following code.
           please help me.
    Thanks
      dinesh
    *& Report  Z_MM_PURCHASE_REGISTER
    REPORT  Z_MM_PURCHASE_REGISTER.
      Short Description: Purchase Register
    TABLES                                                              *
    TABLES : ekko, taxcom, ekpo, ekbe,ekkn,konv,komv,t007s, j_1imovend, bseg .
    TYPE-POOLS: slis.
    TYPES: Begin with TY_                                               *
    TYPES : BEGIN OF  ty_ekko,
              BSART LIKE EKKO-BSART,
              KNTTP LIKE EKPO-KNTTP,
              ebeln LIKE ekko-ebeln,
              knumv LIKE ekko-knumv,
              lifnr LIKE ekko-lifnr,
              waers LIKE ekko-waers,
              kalsm LIKE ekko-kalsm,
              lands LIKE ekko-lands,
              ekorg LIKE ekko-ekorg,
              wkurs LIKE ekko-wkurs,
              bedat LIKE ekko-bedat,
              ebelp LIKE ekpo-ebelp,   "po line item
              mwskz LIKE ekpo-mwskz,   "tax code
              bukrs LIKE ekpo-bukrs,
              matkl LIKE ekpo-matkl,
              mtart LIKE ekpo-mtart,
             netpr LIKE ekpo-netpr,   "Net price in purchasing document
             meins LIKE ekpo-meins,   "unit
              menge LIKE ekpo-menge,   "quantity
              txz01 LIKE ekpo-txz01,   "material description
              txjcd LIKE ekpo-txjcd,   "tax jurisdiction code
              matnr LIKE ekpo-matnr,
              llief LIKE ekko-llief,
              meins LIKE ekpo-meins,
              bprme LIKE ekpo-bprme,
              netpr LIKE ekpo-netpr,
              peinh LIKE ekpo-peinh,
             lifnr like lfa1-lifnr,
              name1 like lfa1-lifnr,
              pstlz like lfa1-pstlz,
              stras like lfa1-stras,
              text1 like t007s-text1,
    END OF ty_ekko.
    TYPES : BEGIN OF ty_ekbe,
              ebeln LIKE ekbe-ebeln,    "po number
              ebelp LIKE ekbe-ebelp,    "po line item
              buzei LIKE ekbe-buzei,
              belnr LIKE ekbe-belnr,    "Number of material document
              budat LIKE ekbe-budat,    "Posting date in the document
              xblnr LIKE ekbe-xblnr,    "Reference document number
              werks LIKE ekbe-werks,    "plant
              matnr LIKE ekbe-matnr,    "material
              menge LIKE ekbe-menge,    "quantity
              peinh LIKE ekpo-peinh,
              dmbtr LIKE ekbe-dmbtr,    "Amount in local currency
              kalsm LIKE ekko-kalsm,    "Procedure (pricing)
              waers LIKE ekbe-waers,    "currency
              wrbtr LIKE ekbe-wrbtr,    "Amount in document currency
              bwtar LIKE ekbe-bwtar,    "Valuation type
              shkzg LIKE ekbe-shkzg,
              maktx LIKE makt-maktx,
              mwskz LIKE ekbe-mwskz,
              bldat LIKE ekbe-bldat,
              srvpos LIKE ekbe-srvpos,
              packno LIKE ekbe-packno,
              introw LIKE ekbe-introw,
              lfbnr  LIKE ekbe-lfbnr,
              bwart TYPE ekbe-bwart,
              budat1 TYPE ekbe-budat,
              belnr1 TYPE ekbe-belnr,
           END OF ty_ekbe.
    TYPES : BEGIN OF ty_display,
              BSART LIKE EKKO-BSART,
              KNTTP LIKE EKPO-KNTTP,
              lifnr(10) TYPE C,              " LIKE ekko-lifnr,
              ebeln LIKE ekko-ebeln,
              bedat LIKE ekko-bedat,
              budat LIKE ekbe-budat,
              matnr LIKE ekbe-matnr,
              maktx LIKE makt-maktx,
              belnr LIKE ekbe-belnr,
              bldat LIKE ekbe-bldat,
              menge LIKE ekpo-menge,
              peinh LIKE ekpo-peinh,
              dmbtr LIKE ekbe-dmbtr,
              shkzg LIKE ekbe-shkzg,
              custduty LIKE konv-kwert,
              bed LIKE konv-kwert,
              cvd LIKE konv-kwert,
              sertax LIKE konv-kwert,
              sereducess LIKE konv-kwert,
              surcharge LIKE konv-kwert,
              educess LIKE konv-kwert,
              insure LIKE konv-kwert,
              freight LIKE konv-kwert,
              octroi LIKE konv-kwert,
              kursf LIKE rbkp-kursf,
              grossamt LIKE konv-kwert,
              vat4 LIKE konv-kwert,
              vat8 LIKE konv-kwert,
              vat125 LIKE konv-kwert,
              INC LIKE KONV-KWERT,     "
              PF LIKE KONV-KWERT,
              CF LIKE KONV-KWERT,
              INS LIKE KONV-KWERT,
              cst LIKE konv-kwert,
              subdeb LIKE ekbe-dmbtr,
              netamt LIKE ekbe-dmbtr,
              cenvatcreditbed LIKE konv-kwert,
              cenvatcreditecc LIKE konv-kwert,
              vatcredit LIKE konv-kwert,
              bgcharges LIKE konv-kwert,
              srvpos LIKE ekbe-srvpos,
              ktext1 LIKE esll-ktext1,
              sertaxcredit LIKE konv-kwert,
              sereducesscredit LIKE konv-kwert,
              totaltaxbenefit LIKE konv-kwert,
              inventoryvalue LIKE konv-kwert,
              bwart TYPE ekbe-bwart,
              belnr1 TYPE ekbe-belnr,
              budat1 TYPE ekbe-budat,
              lfbnr TYPE ekbe-lfbnr,
              bprme LIKE ekpo-bprme,
              meins LIKE ekpo-meins,
              name1 like lfa1-name1,
              pstlz like lfa1-pstlz,
              stras like lfa1-stras,
              mwskz like ekpo-mwskz,
              text1 like t007s-text1,
              kalsm like t007s-kalsm,
              j_1icstno like j_1imovend-j_1icstno,
              hkont(10) TYPE C,       " like bseg-hkont,
              saknr like ska1-saknr,
              sakan like ska1-sakan,
              ktoks like ska1-ktoks,
              mcod1 like ska1-mcod1,
              WAERS LIKE EKKO-WAERS,
              bukrs like ekpo-bukrs,
              total LIKE ekbe-dmbtr,
            END OF ty_display.
    TYPES : BEGIN OF ty_services,
               ebeln LIKE ekpo-ebeln,
               ebelp LIKE ekpo-ebelp,
               lfbnr LIKE ekbe-lfbnr,
               packno LIKE esll-packno,
               sub_packno LIKE esll-sub_packno,
               srvpos LIKE esll-srvpos,
               ktext1 LIKE esll-ktext1,
               netwr LIKE esll-netwr,
               act_wert  LIKE esll-act_wert,
               menge LIKE esll-menge,
               bldat LIKE ekbe-bldat,
            END OF ty_services.
    TYPES :  BEGIN OF ty_konv,
               ebeln LIKE ekpo-ebeln,
               ebelp LIKE ekpo-ebelp,
               knumv LIKE konv-knumv,
               kposn LIKE konv-kposn,
               kschl LIKE konv-kschl,
               kwert LIKE konv-kwert,
               kbetr LIKE konv-kbetr,
             END OF ty_konv.
    TYPES : BEGIN OF ty_lfbnr,
              belnr TYPE ekbe-belnr,
              lfbnr TYPE ekbe-lfbnr,
            END OF ty_lfbnr.
    TYPES : BEGIN OF ty_miro,
             belnr1 TYPE ekbe-belnr,
             belnr TYPE ekbe-belnr,
             budat TYPE ekbe-budat,
    END OF ty_miro.
    types: begin of ty_lfa1,
           lifnr like lfa1-lifnr,
           name1 like lfa1-lifnr,
           pstlz like lfa1-pstlz,
           stras like lfa1-stras,
           end of ty_lfa1.
    types: begin of ty_t007s,
           mwskz like t007s-mwskz,
           text1 like t007s-text1,
           spras like t007s-spras,
           kalsm like t007s-kalsm,
           end of ty_t007s.
    types: begin of ty_j_1imovend,
           lifnr like j_1imovend-lifnr,
           j_1icstno like j_1imovend-j_1icstno,
           end of ty_j_1imovend.
    types: begin of ty_bseg,
           lifnr like bseg-lifnr,
           dmbtr like bseg-dmbtr,
           shkzg like bseg-shkzg,
           hkont like bseg-hkont,
           BELNR LIKE BSEG-BELNR,
           end of ty_bseg.
    types: begin of ty_ska1,
           saknr like ska1-saknr,
           sakan like ska1-sakan,
           ktoks like ska1-ktoks,
           mcod1 like ska1-mcod1,
           end of ty_ska1.
    DATA : it_lfbnr TYPE STANDARD TABLE OF ty_lfbnr,
           wa_lfbnr TYPE ty_lfbnr,
           it_lfa1 type standard table of ty_lfa1,
           wa_lfa1 TYPE ty_lfa1,
           it_t007s type standard table of ty_t007s,
           wa_t007s TYPE ty_t007s,
           it_j_1imovend type standard table of ty_j_1imovend,
           wa_j_1imovend TYPE ty_j_1imovend,
           it_bseg type standard table of ty_bseg,
           wa_bseg TYPE ty_bseg,
          it_ska1 type standard table of ty_ska1,
           wa_ska1 TYPE ty_ska1,
           it_miro TYPE STANDARD TABLE OF ty_miro,
           wa_miro TYPE ty_miro,
           w_belnr TYPE ekbe-belnr,
           w_lfbnr TYPE ekbe-lfbnr,
           w_belnr1 TYPE ekbe-belnr,
           w_budat TYPE ekbe-budat.
    CONSTANTS: Begin with C_                                            *
    DATA: Begin with W_                                                 *
    DATA :  w_flag TYPE c.
    INTERNAL TABLES: Begin with IT_                                     *
    DATA : it_ekko TYPE STANDARD TABLE OF ty_ekko WITH NON-UNIQUE KEY ebeln
                                                                ebelp,
          it_ekpo type standard table of ty_ekpo,
           it_ekbe TYPE STANDARD TABLE OF ty_ekbe,
           it_ekbe1 TYPE STANDARD TABLE OF ty_ekbe WITH NON-UNIQUE KEY ebeln
                                                                ebelp,
           it_display TYPE STANDARD TABLE OF ty_display,
           it_subdebit TYPE STANDARD TABLE OF ty_ekbe,
           it_services TYPE STANDARD TABLE OF ty_services,
           it_packno TYPE STANDARD TABLE OF ty_services,
           it_konv TYPE STANDARD TABLE OF ty_konv.
    DATA :  it_fieldcat TYPE slis_t_fieldcat_alv,
            it_layout TYPE slis_layout_alv,
            it_komv TYPE STANDARD TABLE OF komv WITH NON-UNIQUE KEY knumv
            kschl.
    WORKAREAS: Begin with WA_                                           *
    DATA : wa_ekbe TYPE ty_ekbe,
           wa_ekbe1 TYPE ty_ekbe,
           wa_ekko TYPE ty_ekko,
           wa_komv TYPE komv,
           wa_display TYPE ty_display,
          WA_LFA1 TYPE TY_LFA1,
          W_GROSS_AMT type KOMV-KWERT,
           wa_subdebit TYPE ty_ekbe,
           wa_packno TYPE ty_services,
           wa_services TYPE ty_services,
           wa_konv TYPE ty_konv,
           wa_taxcom TYPE taxcom,
           wa_ls_fieldcat TYPE slis_fieldcat_alv.
    FIELD-SYMBOLS: Begin with FS_                                       *
    FIELD-GROUPS: Begin with FG_                                        *
    CONTROLS:                                                           *
    SELECT-OPTIONS: Begin with SO_                                      *
    SELECT-OPTIONS : so_lifnr FOR ekko-lifnr ,
                    so_mtart FOR ekpo-mtart,
                     so_ebeln FOR ekbe-ebeln,
                     so_matnr FOR ekbe-matnr,
                    so_date FOR sy-datum no-display,
                     do_date for ekko-bedat,
                     tax_code for ekpo-mwskz,
                     mr_date for ekbe-budat,
                     mat_gr for ekpo-matkl,
                     mat_tp for ekpo-mtart,
                     pr_plant for ekbe-werks,
                     pr_ekorg for ekko-ekorg.
    PARAMETERS: Begin with PR_                                          *
    *PARAMETER : pr_plant LIKE ekpo-werks . "OBLIGATORY.
               pr_ekorg LIKE ekko-ekorg . "OBLIGATORY.
    SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
    PARAMETER : pr_preg TYPE c  radiobutton group g1  default 'X',
                pr_ror TYPE c  RADIOBUTTON GROUP g1 .
    SELECTION-SCREEN : END OF BLOCK b1.
    START-OF-SELECTION                                                  *
    START-OF-SELECTION .
    *--- Get the data reguired--
      PERFORM f001-get_data.
    *-------Calculate the tax required -
      PERFORM f002-cal_taxes.
      PERFORM miro_get_data.
    END-OF-SELECTION                                                    *
    END-OF-SELECTION.
    *---Display the report--
      PERFORM f003-display_register.
    *&      Form  F001-GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM f001-get_data .
    Clear and Refresh all internal table and work area.
      REFRESH : it_ekko,
                it_ekbe,
                it_services,
                it_packno,
                it_konv,
                it_lfa1,
                it_komv.
      CLEAR   : wa_ekko,
                wa_ekbe,
                wa_services,
                wa_packno,
                wa_konv,
                wa_lfa1,
                wa_komv.
    Get the history records for all the selected PO. from table EKBE of
    type GR.
        IF pr_preg = 'X'.
    *Get Purchasing Document Number, Number of the document condition,
    *Vendor's accountNumber, Currency Key, Procedure , Country for Tax
    *ReturnPurchasing OrganizationExchange rate In an internal table it_ekko
    *break-point.
      SELECT pBSART qknttp pebeln pknumv plifnr pwaers pkalsm plands pekorg pwkurs
         wkurs pbedat  qebelp qbukrs qmatkl qmtart pllief qmeins qbprme
         qtxjcd qmwskz pwkurs qnetpr qmenge QPEINH
        INTO CORRESPONDING FIELDS OF TABLE it_ekko
        FROM   ekko AS p INNER JOIN ekpo AS q
               ON pebeln = qebeln
        WHERE   p~ekorg in pr_ekorg
                AND p~lifnr IN so_lifnr
            AND q~mtart IN so_mtart
                AND p~ebeln IN so_ebeln
                and p~bedat in do_date
                and q~mwskz in tax_code
                and q~matkl in mat_gr
                and q~mtart in mat_tp
                and kalsm = 'SIL000'
                AND EKORG = 'SDOP'.
           GET ALL THE PO FOR WHICH MIRO HAS BEEN DONE
      SELECT ebeln ebelp budat bldat werks
        INTO CORRESPONDING FIELDS OF TABLE it_ekbe1
        FROM ekbe
        FOR ALL ENTRIES IN it_ekko
        WHERE ebeln = it_ekko-ebeln
           AND ebelp = it_ekko-ebelp
           AND bewtp = 'Q'
           AND  werks in pr_plant
          AND budat IN so_date
          AND ( bwart = '101' OR bwart = '102'  ) "OR bwart = '105' OR bwart = '106' OR bwart ='')
           AND ebeln IN so_ebeln
           and budat in mr_date
           AND matnr IN so_matnr.
          AND ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high ).
    Check whether any records is present
      IF sy-subrc = 0.
          IF NOT it_ekbe1 IS INITIAL.
            SELECT ebeln ebelp buzei belnr budat xblnr werks matnr menge
                   dmbtr waers wrbtr bwtar shkzg dmbtr bldat srvpos
                   packno introw lfbnr bwart
                INTO CORRESPONDING FIELDS OF TABLE it_ekbe
                FROM  ekbe
                FOR ALL ENTRIES IN it_ekbe1
                WHERE      ebeln = it_ekbe1-ebeln
                        AND  ebelp = it_ekbe1-ebelp
                        and budat in mr_date
                       AND budat IN so_date
                 and  ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high )
                      AND  bewtp = 'Q'.
                    AND ( bwart = '101' OR bwart = '102' OR bwart = '103' OR bwart = '105' ). "OR bwart = '105' OR bwart = '106' OR bwart ='').
                     AND  bwart = '103'.
                 and  WERKS = PR_PLANT.
            IF sy-subrc = 0.
            ENDIF.
          ELSE.
            SELECT ebeln ebelp buzei belnr budat xblnr werks matnr menge
                  dmbtr waers wrbtr bwtar shkzg dmbtr bldat srvpos
                  packno introw lfbnr bwart
               INTO CORRESPONDING FIELDS OF TABLE it_ekbe
               FROM  ekbe
               FOR ALL ENTRIES IN it_ekbe1
               WHERE      ebeln = it_ekbe1-ebeln
                       AND  ebelp = it_ekbe1-ebelp
                       and budat in mr_date
                     AND budat IN so_date
                 and ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high )
                     AND  bewtp = 'Q'.
                    AND ( bwart = '101' OR bwart = '102' OR bwart = '103' OR bwart = '105' ) . "OR bwart = '105' OR bwart = '106' OR bwart ='').
                    AND  bwart = '102'.
                 and  WERKS = PR_PLANT.
            IF sy-subrc = 0.
            ENDIF.
            ENDIF.
        ENDIF.
    new code added
    *get the venor address
         select alifnr bname1 bpstlz bstras b~lifnr
         into corresponding fields of table it_LFA1
         from ekko as a inner join lfa1 as b
         on alifnr = blifnr
         for all entries in it_EKKO
         where  B~lifnr = it_EKKO-lifnr.
    ***tax code description added*******************
    select mwskz text1 spras kalsm
    from t007s
    into corresponding fields of table it_t007s for all entries in it_ekko
    where mwskz = it_ekko-mwskz and spras = 'E' and kalsm = 'TAXSIL'.
    *******vendor vat no. added*************
    select lifnr j_1icstno
    from j_1imovend
    into corresponding fields of table it_j_1imovend for all entries in it_ekko
    where lifnr = it_ekko-lifnr.
    **********gl code added******************************************
    *select lifnr shkzg dmbtr hkont
    *from bseg
    *into corresponding fields of table it_bseg for all entries in it_lfa1  " it_ekko
    *where  LIFNR = it_lfa1-LIFNR and shkzg = 'S'.
    *************gl code description added*******************************************
    *select saknr ktoks mcod1 sakan
    *from ska1
    *into corresponding fields of table it_ska1 for all entries in it_bseg
    *where sakan = it_bseg-hkont and ktoks = 'MAT'.
    Get the package number , service number , service text , net price ,
    accual amount , qty. etc
        IF NOT it_packno[] IS INITIAL.
          SELECT ppackno psrvpos pktext1 pnetwr pact_wert pmenge
              INTO CORRESPONDING FIELDS OF TABLE it_services
              FROM esll  AS p "inner join ESLL as Q
               on      PPLN_PACKNO = QPACKNO
                  and  PINTROW = QINTROW
              FOR ALL ENTRIES IN it_packno
              WHERE p~packno = it_packno-sub_packno.
          IF sy-subrc = 0.
          ENDIF.
        ENDIF.
    Get Number of the document condition ,line item number, Condition
    value for all selected PO.
        IF NOT it_ekko[] IS INITIAL.
          SELECT  knumv kposn kschl kwert
              INTO CORRESPONDING FIELDS OF TABLE it_konv
              FROM konv
              FOR ALL ENTRIES IN it_ekko
              WHERE  knumv = it_ekko-knumv.
          IF sy-subrc = 0.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " F001-GET_DATA
    *&      Form  F002-CAL_TAXES
          text
    -->  p1        text
    <--  p2        text
    FORM f002-cal_taxes .
    Calculate taxes for all the PO.
      LOOP AT it_ekbe INTO wa_ekbe.
        CLEAR :  wa_display,
                 wa_ekko.
        READ TABLE it_ekko WITH TABLE KEY ebeln = wa_ekbe-ebeln
                                          ebelp = wa_ekbe-ebelp
                                          INTO wa_ekko.
        IF sy-subrc = 0.
        ENDIF.
        CLEAR wa_taxcom.
    Get the text for the Material.
        SELECT SINGLE maktx
          INTO wa_display-maktx
          FROM  makt
          WHERE     matnr = wa_ekbe-matnr
                AND spras = sy-langu.
        wa_taxcom-bukrs = wa_ekko-bukrs.
        wa_taxcom-budat = wa_ekbe-bldat.
        wa_taxcom-budat = wa_ekko-bedat." change by dinesh
        wa_taxcom-waers = wa_ekbe-waers.
        wa_taxcom-kposn = wa_ekbe-ebelp.
        wa_taxcom-mwskz = wa_ekko-mwskz.
        wa_taxcom-txjcd = wa_ekko-txjcd.
       taxcom-shkzg = 'H'.
        wa_taxcom-xmwst = 'X'.
       IF ekko-bstyp EQ bstyp-best.
        wa_taxcom-wrbtr = wa_ekko-netpr * wa_ekbe-menge * wa_ekko-wkurs.
         WA_TAXCOM-WRBTR = wa_ekbe-dmbtr.
       ELSE.
         taxcom-wrbtr = ekpo-zwert.
       ENDIF.
        wa_taxcom-lifnr = wa_ekko-lifnr.
        wa_taxcom-land1 = wa_ekko-lands.                              "WIA
        wa_taxcom-ekorg = wa_ekko-ekorg.
        wa_taxcom-hwaer = 'INR'.    "t001-waers.
        wa_taxcom-llief = wa_ekko-llief.
        wa_taxcom-bldat = wa_ekbe-bldat.
        wa_taxcom-matnr = wa_ekbe-matnr.         "HTN-Abwicklung
        wa_taxcom-werks = wa_ekbe-werks.          "pr_plant.
          taxcom-bwtar = ekpo-bwtar.
        wa_taxcom-matkl = wa_ekko-matkl.
        wa_taxcom-meins = wa_ekko-meins.
        wa_taxcom-ebeln = wa_ekbe-ebeln.
        wa_taxcom-ebelp = wa_ekbe-ebelp.
        wa_taxcom-mglme = wa_ekbe-menge.
        wa_taxcom-mtart = wa_ekko-mtart.
    *Call function module CALCULATE_TAX_ITEM--
        CALL FUNCTION 'CALCULATE_TAX_ITEM'
          EXPORTING
            i_taxcom     = wa_taxcom
            display_only = 'X'
           dialog       = diakz
          IMPORTING
            e_taxcom     = wa_taxcom
           nav_anteil   = hwert
          TABLES
            t_xkomv = it_komv
          EXCEPTIONS
            OTHERS       = 01.
        IF sy-subrc = 0.
        ENDIF.
        wa_display-bsart = wa_ekko-bsart.
        wa_display-knttp = wa_ekko-knttp.
        wa_display-bprme = wa_ekko-bprme.
        wa_display-meins = wa_ekko-meins.
        wa_display-lifnr = wa_ekko-lifnr.
        wa_display-ebeln = wa_ekbe-ebeln.
        wa_display-bedat = wa_ekko-bedat.
        wa_display-bwart = wa_ekbe-bwart.
        wa_display-budat = wa_ekbe-budat.
        wa_display-matnr = wa_ekbe-matnr.
        wa_display-belnr = wa_ekbe-belnr.
        wa_display-menge = wa_ekbe-menge.
        wa_display-PEINH = wa_ekko-PEINH.
        wa_display-dmbtr = ( wa_ekko-netpr * wa_ekbe-menge * wa_ekko-wkurs ) / wa_ekko-PEINH.
      WA_DISPLAY-DMBTR = WA_EKBE-DMBTR.
        wa_display-srvpos = wa_ekbe-srvpos.
        wa_display-mwskz = wa_EKKO-mwskz.
        wa_display-WAERS = wa_EKKO-WAERS.
    read table it_lfa1 into wa_lfa1 with key lifnr = wa_ekko-lifnr.
    wa_display-name1 = wa_lfa1-name1.
    wa_display-pstlz = wa_lfa1-pstlz.
    wa_display-stras = wa_lfa1-stras.
    read table it_t007s into wa_t007s with key mwskz = wa_ekko-mwskz.
    wa_display-text1 = wa_t007s-text1.
    read table it_j_1imovend into wa_j_1imovend with key lifnr = wa_ekko-lifnr.
    wa_display-j_1icstno = wa_j_1imovend-j_1icstno.
    read table it_bseg into wa_bseg with key LIFNR = wa_lfa1-lifnr.  " wa_ekKO-LIFNR .
    wa_display-HKONT = wa_bseg-HKONT.
    *read table it_ska1 into wa_ska1 with key sakan = wa_bseg-hkont.
    *wa_display-mcod1 = wa_ska1-mcod1.
        READ TABLE it_komv WITH KEY kschl = 'JCDB'
                                    kposn = wa_ekko-ebelp
                                    INTO wa_komv.
        IF sy-subrc = 0.
          wa_display-custduty = wa_komv-kwert .
        ELSE.
          READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
                                                   kposn = wa_ekko-ebelp
                                                   kschl = 'JCDB'.
          IF  wa_ekko-menge <> 0.
            wa_display-custduty = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
          ENDIF.
        ENDIF.
    Get the BED OR EXCISE DUTY
         CLEAR :  wa_komv , wa_konv.
        READ TABLE it_komv WITH KEY kschl = 'JMOP'
                                    kposn = wa_ekko-ebelp
                                    INTO wa_komv.
        IF sy-subrc = 0 .
          wa_display-BED = wa_komv-kwert .
        ELSE.
          READ TABLE it_komv WITH KEY kschl = 'JMOQ'
                                      kposn = wa_ekko-ebelp
                                      INTO wa_komv.
          IF sy-subrc = 0.
            wa_display-BED = wa_komv-kwert .
          ELSE.
            READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
                                                  kposn = wa_ekko-ebelp
                                                  kschl = 'JMOP'.
            IF sy-subrc = 0.
              IF  wa_ekko-menge <> 0.
                wa_display-BED  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
              ENDIF.
            ELSE.
              READ TABLE it_konv INTO wa_konv WITH KEY
                                                 knumv =  wa_ekko-knumv
                                                 kposn = wa_ekko-ebelp
                                                 kschl = 'JMOQ'.
              IF  wa_ekko-menge <> 0.
                wa_display-BED  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
    ******END OF EXCISE DUTY AND THE BED******************************************************
    Get the  EDUCATION CESS
        CLEAR :  wa_komv , wa_konv.
        READ TABLE it_komv WITH KEY kschl = 'JEC1'
                                    kposn = wa_ekko-ebelp
                                    INTO wa_komv.
        IF sy-subrc = 0 .
          wa_display-educess = wa_komv-kwert .
        ELSE.
          READ TABLE it_komv WITH KEY kschl = 'JESQ'
                                      kposn = wa_ekko-ebelp
                                      INTO wa_komv.
          IF sy-subrc = 0.
            wa_display-educess = wa_komv-kwert .
          ELSE.
            READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
                                                  kposn = wa_ekko-ebelp
                                                  kschl = 'JEC1'.
            IF sy-subrc = 0.
              IF  wa_ekko-menge <> 0.
                wa_display-educess  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
              ENDIF.
            ELSE.
              READ TABLE it_konv INTO wa_konv WITH KEY
                                                 knumv =  wa_ekko-knumv
                                                 kposn = wa_ekko-ebelp
                                                 kschl = 'JESQ'.
              IF  wa_ekko-menge <> 0.
                wa_display-educess  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
    *END OF EDUCATION CESS
    Get the SERVICE TAX
        clear : WA_KOMV , WA_KONV.
        read table IT_KOMV with key KSCHL = 'JSRT'
                                    KPOSN = WA_EKKO-EBELP
                                    into WA_KOMV.
        if SY-SUBRC = 0.
          WA_DISPLAY-SERTAX  = WA_KOMV-KWERT .
        else.
          read table IT_KONV into WA_KONV with key KNUMV = WA_EKKO-KNUMV
                                                   KPOSN = WA_EKKO-EBELP
                                                   KSCHL = 'JSRT'.
          WA_DISPLAY-SERTAX  = WA_KONV-KWERT * wa_ekko-WKURS.
        endif.
    END OF SERVICE TAX****************************************
    Get the  EDUCATION CESS ON SERVICE TAX************************
        clear : WA_KOMV , WA_KONV.
        read table IT_KOMV with key KSCHL = 'JEC5'
                                    KPOSN = WA_EKKO-EBELP
                                    into WA_KOMV.
        if SY-SUBRC = 0.
          WA_DISPLAY-SEREDUCESS  = WA_KOMV-KWERT .
        else.
          read table IT_KONV into WA_KONV with key KNUMV = WA_EKKO-KNUMV
                                                   KPOSN = WA_EKKO-EBELP
                                                   KSCHL = 'JEC5'.
          WA_DISPLAY-SEREDUCESS  = WA_KONV-KWERT * wa_ekko-WKURS.
        endif.
    ******END OF SERVICE TAX ON EDUCATION CESS************************************************
    Get the CVD
        CLEAR : wa_komv , wa_konv.
        READ TABLE it_komv WITH KEY kschl = 'JCV1'
                                    kposn = wa_ekko-ebelp
                                    INTO wa_komv.
        IF sy-subrc = 0.
          wa_display-cvd  = wa_komv-kwert .
        ELSE.
          READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
                                                   kposn = wa_ekko-ebelp
                                                   kschl = 'JCV1'.
          IF  wa_ekko-menge <> 0.
            wa_display-cvd  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
          ENDIF.
        ENDIF.
    Get the total INSURANCE
        CLEAR : wa_komv , wa_konv.
        READ TABLE it_komv WITH KEY kschl = 'ZIN1'
                                    kposn = wa_ekko-ebelp
                                    INTO wa_komv.
        IF sy-subrc = 0 .
          wa_display-insure = wa_komv-kwert .
        ELSE.
          READ TABLE it_komv WITH KEY kschl = 'ZIN2'
                                      kposn = wa_ekko-ebelp
                                      INTO wa_komv.
          IF sy-subrc = 0.
            wa_display-insure = wa_komv-kwert .
          ELSE.
            READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
                                                  kposn = wa_ekko-ebelp
                                                  kschl = 'ZIN1'.
            IF sy-subrc = 0.
              IF  wa_ekko-menge <> 0.
                wa_display-insure  = ( wa_ekbe-menge / wa_ekko-menge
                                            ) * wa_konv-kwert * wa_ekko-wkurs.
              ENDIF.
            ELSE.
              READ TABLE it_konv INTO wa_konv WITH KEY
                                     

    Hi Ingo,
    Thanks for the reply. But let me rephrase my question.  In the Bex we get a extra row called overall result in the result set which gives the correct  count/total/average based on exception aggregation.  The question is how we show the overall result row in the crystal or rather how can we map it into crystal.  So i thought as of now we should create a formula to compute the overall result and display it.
    Hope I am clear this time in asking the right question.
    Many many thanks in advance for your reply.
    Kind regards,
    Shiva.

Maybe you are looking for

  • Error message when trying to import photos into Bridge CS5

    Hi, when trying to import photos from a card reader into Bridge CS5, I click "get Photos" and get the following error message: "cannot obtain all files from this device. Please ensure the device is connected properly, or that the battery is charged".

  • WLC 5508 running 7.4.110.0 unable to tftp upload config from controller

    Hi, Two WLC 5508 running identical code version. One is 50 license Primary, the second is HA. Identical config on both. HA WLC can upload its config to the TFTP or FTP server but Primary cannot. The operation fails for  both CLI and GUI and for diffe

  • Failed to load library mda_sap

    Hi people, I want to publish a Query with the Query as a Web Service. But I get the next message error: Failed to load library mda_sap. System error message: the specified module could not be found (WIS 10901) I´ve tried with this notes: 1257495 - In

  • Stuck with a 802.11b/g router?

    I have a MI424WR (Rev E) router with a 50/25 plan. This router only supports the 802.11b/g networking standards, which of course, has a theoretical wireless speed of 54Mbps, but in actuality doesn't get anywhere near those numbers due to overhead. Th

  • Illustrator 14.0.0 CS4 freezes on start up loading plugins on OSX10.10

    What is the problem. Started after a fresh 10.10 install and restore from backup. Software was working previously. Also at times i get error of Photoshopimport.aip and Photoshop.export.aip, but not all the time do i get the error but it always freeze