Performance Issue For Opening And Closing Balance In FBL1N/3N/5N

Dear experts,
                    I Am Having Requirement to Bring Opening And Closing Balance In FBL1N, FBL3N, FBL5N.
For This requirement I Used BADI : FI_ITEMS_CH_DATA~CHANGE_ITEMS, below is my Code For FBL1N, And I've Done the same For 3N/5N...With Related BAPI
*   IF SY-TCODE = 'FBL1N'.
*    LOOP AT ct_items INTO gs_items.
*      CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
*        EXPORTING
*          date      = gs_items-budat
*          days      = '01'
*          months    = '00'
*          signum    = '-'
*          years     = '00'
*        IMPORTING
*          calc_date = lv_date.
*      CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
*        EXPORTING
*          companycode        = gs_items-bukrs
*          vendor             = gs_items-konto
*          keydate            = lv_date
**   BALANCESPGLI       = ' '
**   NOTEDITEMS         = ' '
** IMPORTING
**   RETURN             =
*        TABLES
*          keybalance         =  lv_obal.
*      CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
*        EXPORTING
*          companycode        = gs_items-bukrs
*          vendor             = gs_items-konto
*          keydate            = gs_items-budat
**   BALANCESPGLI       = ' '
**   NOTEDITEMS         = ' '
** IMPORTING
**   RETURN             =
*        TABLES
*          keybalance         = lv_cbal
*      READ TABLE lv_cbal INTO gs_cbal INDEX 1.
*      gs_items-cbal = gs_cbal-lc_bal.
*      READ TABLE lv_obal INTO gs_obal INDEX 1.
*      gs_items-obal = gs_obal-lc_bal.
*      MODIFY ct_items FROM gs_items TRANSPORTING obal cbal.
*      CLEAR: gs_items,gs_obal,gs_cbal.
*    ENDLOOP.
*   ENDIF.
So, Above Code Causing Me the Performance Issue, Kindly Suggest Me the Solution..
Regards,
uday.

Hi Uday,
I am sending you the code i used for the creation a Zreport based on FBL5N. Please check if it can of any help.
*& Report  ZFBL5N                                                      *
REPORT  zfbl5n_new  .
TABLES : bsid,knc1,lfc1.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_bsid,
          bukrs TYPE bsid-bukrs,
          kunnr TYPE bsid-kunnr,
          belnr TYPE bsid-belnr,
          buzei TYPE bsid-buzei,
          bldat TYPE bsid-bldat,
          blart TYPE bsid-blart,
          bschl TYPE bsid-bschl,
          shkzg TYPE bsid-shkzg,
          dmbtr TYPE bsid-dmbtr,
          augdt TYPE bsid-augdt,
          augbl TYPE bsid-augbl,
          zuonr TYPE bsid-zuonr,
          sgtxt TYPE bsid-sgtxt,
          zfbdt TYPE bsid-zfbdt,
          zterm TYPE bsid-zterm,
          zbd1t TYPE bsid-zbd1t,
          zbd2t TYPE bsid-zbd2t,
          zbd3t TYPE bsid-zbd3t,
          kkber TYPE bsid-kkber,
          bstat TYPE bsid-bstat,
          umskz TYPE bsid-umskz,
        END OF ty_bsid.
TYPES: BEGIN OF ty_bsik,
         bukrs TYPE bsik-bukrs,
          lifnr TYPE bsik-lifnr,
          belnr TYPE bsik-belnr,
          buzei TYPE bsik-buzei,
          bldat TYPE bsik-bldat,
          blart TYPE bsik-blart,
          bschl TYPE bsik-bschl,
          shkzg TYPE bsik-shkzg,
          dmbtr TYPE bsik-dmbtr,
          augdt TYPE bsik-augdt,
          augbl TYPE bsik-augbl,
          zuonr TYPE bsik-zuonr,
          sgtxt TYPE bsik-sgtxt,
           zfbdt TYPE bsik-zfbdt,
*         KKBER TYPE bsik-kkber,
          zterm TYPE bsik-zterm,
           zbd1t TYPE bsik-zbd1t,
          zbd2t TYPE bsik-zbd2t,
          zbd3t TYPE bsik-zbd3t,
          bstat TYPE bsid-bstat,
          umskz TYPE bsid-umskz,
        END OF ty_bsik.
TYPES: BEGIN OF ty_final,
          belnr TYPE bsid-belnr,
*         buzei TYPE bsak-buzei,
          bldat TYPE bsid-bldat,
          blart TYPE bsid-blart,
          chq TYPE bsid-zuonr,
          debit TYPE bsid-dmbtr,
          credit TYPE bsid-dmbtr,
          txt TYPE bsid-sgtxt,
          date TYPE bsid-zfbdt,
          kkber TYPE bsid-kkber,
          zterm TYPE bsid-zterm,
          augbl TYPE bsid-augbl,
          augdt TYPE bsid-augdt,
          flag TYPE c,
        END OF ty_final.
TYPES : BEGIN OF gs_openbal,
          bukrs TYPE bapi3007_2-comp_code,
          kunnr TYPE bapi3007_2-customer,
          dmbtr TYPE bapi3007_2-lc_amount,
         END OF gs_openbal.
DATA: it_bsid TYPE STANDARD TABLE OF ty_bsid,
       it_bsik TYPE STANDARD TABLE OF ty_bsik,
       it_final TYPE STANDARD TABLE OF ty_final.
DATA: wa_bsid TYPE ty_bsid,
       wa_bsik TYPE ty_bsik,
       wa_final TYPE ty_final.
DATA: w_days TYPE t5a4a-dlydy,
       w_month TYPE t5a4a-dlymo,
       w_year TYPE t5a4a-dlyyr,
       w_date TYPE p0001-begda,
       w_name1 TYPE kna1-name1,
       w_ort01 TYPE kna1-ort01,
       w_lifnr TYPE kna1-lifnr,
       w_dmbtr1 TYPE bsid-dmbtr,
       w_dmbtr2 TYPE bsid-dmbtr,
       w_dmbtr3 TYPE bsad-dmbtr,
       w_dmbtr4 TYPE bsad-dmbtr,
       w_opbal TYPE bsid-dmbtr,
       w_credit TYPE bsik-dmbtr,
       w_debit TYPE bsik-dmbtr,
       w_clobal TYPE bsik-dmbtr,
       w_credit1 TYPE bsik-dmbtr,
       w_debit1 TYPE bsik-dmbtr,
       w_clobal1 TYPE bsik-dmbtr.
DATA: ld_yrper LIKE rwcoom-fiscper,
       kunnr LIKE kna1-kunnr,
       x_norm TYPE c,
       x_park,
       x_apar,
       x_merk,
       ok_code(4),
       wa_x001 LIKE x001,
       return LIKE bapireturn,
       line_count LIKE sy-loopc,
       number_of_records TYPE i,
       xindex LIKE sy-tabix,
       open LIKE knc1-um01s,
       temp(20),
       close LIKE knc1-um01s,
       gjahr LIKE bsid-gjahr,
       period LIKE bkpf-monat,
       f(1),
       v_char(2),
       closec(20),
       openc(20),
       debit LIKE bapi3007_2-lc_amount,
       credit LIKE debit.
DATA : v_dmbtr LIKE bsid-dmbtr.
*DATA : tot_debit LIKE t_ar-debit,
*       tot_credit LIKE t_ar-credit.
DATA : t_kna1 LIKE kna1 OCCURS 1  WITH HEADER LINE,
        t_knb1 LIKE knb1 OCCURS 10 WITH HEADER LINE.
DATA ibsid LIKE bsid OCCURS 0 WITH HEADER LINE.
DATA ibsad LIKE bsad OCCURS 0 WITH HEADER LINE.
DATA ibsik LIKE bsik OCCURS 0 WITH HEADER LINE.
DATA ibsak LIKE bsak OCCURS 0 WITH HEADER LINE.
DATA : it_fieldcat_alv   TYPE slis_t_fieldcat_alv,
        wa_fieldcat_alv     TYPE slis_fieldcat_alv,
        is_layout_alv  TYPE slis_layout_alv,
        wa_layout_alv  TYPE slis_layout_alv,
        it_list_top_of_page TYPE slis_t_listheader,
        it_events TYPE slis_t_event,
        wa_events TYPE LINE OF slis_t_event.
DATA : BEGIN OF ibukrs OCCURS 0,
           bukrs LIKE t001-bukrs,
          END OF ibukrs.
DATA : BEGIN OF ikunnr1 OCCURS 0,
          kunnr LIKE knc1-kunnr,
         END OF ikunnr1.
DATA : BEGIN OF ikunnr OCCURS 0,
           kunnr LIKE knc1-kunnr,
           bukrs LIKE t001-bukrs,
           lifnr LIKE lfc1-lifnr,
          END OF ikunnr.
DATA: it_sort TYPE slis_t_sortinfo_alv,
       wa_sort TYPE slis_sortinfo_alv.
DATA:    r_bschl TYPE RANGE OF bschl,
          wa_bschl LIKE LINE OF r_bschl.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_kunnr TYPE bsid-kunnr OBLIGATORY,
              p_bukrs TYPE bsid-bukrs OBLIGATORY.
SELECT-OPTIONS: so_budat FOR bsid-budat .
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS : p_normal AS CHECKBOX,
              p_spl    AS CHECKBOX,
              p_vendor AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b2.
PERFORM get_data.
PERFORM process_data.
*PERFORM calculate_openbal. " Commented by anish
PERFORM calculate_open_bal.
PERFORM calculate_closing_bal.
PERFORM build_catalog_sort USING it_sort.
PERFORM reuse_alv_events_get .
PERFORM display_data.
*&      Form  GET_DATA
*       text
*  -->  p1        text
*  <--  p2        text
FORM get_data .
   SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber
     bstat umskz FROM bsid
     INTO TABLE it_bsid
     WHERE bukrs = p_bukrs
      AND kunnr = p_kunnr
      AND budat IN so_budat.
   SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber
    bstat umskz FROM bsad
    APPENDING TABLE it_bsid
    WHERE bukrs = p_bukrs
     AND kunnr = p_kunnr
     AND budat IN so_budat.
   SELECT SINGLE name1 ort01 lifnr FROM kna1
     INTO (w_name1 , w_ort01 , w_lifnr)
     WHERE kunnr = p_kunnr.
   IF p_vendor IS NOT INITIAL.
     SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t
     bstat umskz   FROM bsik
     APPENDING TABLE it_bsik
     WHERE bukrs = p_bukrs
       AND lifnr = w_lifnr
       AND budat IN so_budat.
     SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t
     bstat umskz  FROM bsak
    APPENDING TABLE it_bsik
    WHERE bukrs = p_bukrs
      AND lifnr = w_lifnr
      AND budat IN so_budat.
   ENDIF.
   SORT it_bsid BY bschl.
   DELETE  it_bsid WHERE bschl = '04'.
   DELETE  it_bsid WHERE bschl = '07'.
   DELETE  it_bsid WHERE bschl = '17'.
   DELETE  it_bsid WHERE bschl = '34'.
   DELETE  it_bsid WHERE bschl = '27'.
   DELETE  it_bsid WHERE bschl = '37'.
   SORT it_bsik BY bschl.
   DELETE  it_bsik WHERE bschl = '04'.
   DELETE  it_bsik WHERE bschl = '07'.
   DELETE  it_bsik WHERE bschl = '17'.
   DELETE  it_bsik WHERE bschl = '34'.
   DELETE  it_bsik WHERE bschl = '27'.
   DELETE  it_bsik WHERE bschl = '37'.
ENDFORM.                    " GET_DATA
*&      Form  PROCESS_DATA
*       text
*  -->  p1        text
*  <--  p2        text
FORM process_data .
   DATA:okay       TYPE c VALUE space.
   w_month = '00'.
   w_year = '00'.
   SORT it_bsid BY bldat .
   LOOP AT it_bsid INTO wa_bsid.
     PERFORM check_item_ok  USING p_normal
                                  p_spl
                                  p_vendor
*                               x_park
                                  wa_bsid
                            CHANGING okay.
     CHECK okay = 'X'.
     wa_final-belnr = wa_bsid-belnr.
     wa_final-bldat = wa_bsid-bldat.
     wa_final-blart = wa_bsid-blart.
     wa_final-txt = wa_bsid-sgtxt.
     wa_final-kkber = wa_bsid-kkber.
     wa_final-zterm = wa_bsid-zterm.
     wa_final-augbl = wa_bsid-augbl.
     wa_final-augdt = wa_bsid-augdt.
     wa_final-flag = 'C'.
     IF wa_bsid-blart = 'DZ'.
       wa_final-chq = wa_bsid-zuonr.
     ENDIF.
     IF wa_bsid-shkzg = 'S'.
       wa_final-debit = wa_bsid-dmbtr.
     ELSEIF wa_bsid-shkzg = 'H'.
       wa_final-credit = wa_bsid-dmbtr.
     ENDIF.
     w_credit = w_credit + wa_final-credit.
     w_debit = w_debit + wa_final-debit.
****** Net due  date
     IF wa_bsid-zbd1t IS NOT INITIAL.
       w_days = wa_bsid-zbd1t.
     ELSEIF wa_bsid-zbd2t IS NOT INITIAL.
       w_days = wa_bsid-zbd2t.
     ELSEIF wa_bsid-zbd3t IS NOT INITIAL.
       w_days = wa_bsid-zbd3t.
     ENDIF.
     IF w_days IS INITIAL.
       wa_final-date = wa_bsid-zfbdt.
     ELSE.
       CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
         EXPORTING
           date      = wa_bsid-zfbdt
           days      = w_days
           months    = w_month
           signum    = '+'
           years     = w_year
         IMPORTING
           calc_date = w_date.
       wa_final-date = w_date.
     ENDIF.
     APPEND wa_final TO it_final.
     CLEAR: w_days , w_date , wa_final .
   ENDLOOP.
   IF it_bsik IS NOT INITIAL.
     CLEAR: w_days , w_date.
     SORT it_bsik BY bldat.
     LOOP AT it_bsik INTO wa_bsik.
       wa_final-belnr = wa_bsik-belnr.
       wa_final-bldat = wa_bsik-bldat.
       wa_final-blart = wa_bsik-blart.
       wa_final-txt = wa_bsik-sgtxt.
*    wa_final-kkber = wa_bsik-kkber.
       wa_final-zterm = wa_bsik-zterm.
       wa_final-augbl = wa_bsik-augbl.
       wa_final-augdt = wa_bsik-augdt.
       wa_final-flag = 'V'.
       IF wa_bsik-blart = 'DZ'.
         wa_final-chq = wa_bsik-zuonr.
       ENDIF.
       IF wa_bsik-shkzg = 'S'.
         wa_final-debit = wa_bsik-dmbtr.
       ELSEIF wa_bsik-shkzg = 'H'.
         wa_final-credit = wa_bsik-dmbtr.
       ENDIF.
       w_credit1 = w_credit1 + wa_final-credit.
       w_debit1 = w_debit1 + wa_final-debit.
*******  Net Due date
       IF wa_bsik-zbd1t IS NOT INITIAL.
         w_days = wa_bsik-zbd1t.
       ELSEIF wa_bsik-zbd2t IS NOT INITIAL.
         w_days = wa_bsik-zbd2t.
       ELSEIF wa_bsik-zbd3t IS NOT INITIAL.
         w_days = wa_bsik-zbd3t.
       ENDIF.
       IF w_days IS INITIAL.
         wa_final-date = wa_bsik-zfbdt.
       ELSE.
         CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
           EXPORTING
             date      = wa_bsik-zfbdt
             days      = w_days
             months    = w_month
             signum    = '+'
             years     = w_year
           IMPORTING
             calc_date = w_date.
       ENDIF.
       wa_final-date = w_date.
       APPEND wa_final TO it_final.
       CLEAR: wa_final.
     ENDLOOP.
   ENDIF.
ENDFORM.                    " PROCESS_DATA
*&      Form  DISPLAY_DATA
*       text
*  -->  p1        text
*  <--  p2        text
FORM display_data .
   wa_fieldcat_alv-fieldname = 'BELNR'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-003.
   wa_fieldcat_alv-outputlen = '11'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'BLDAT'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-004.
   wa_fieldcat_alv-outputlen = '13'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'BLART'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-005.
   wa_fieldcat_alv-outputlen = '02'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'CHQ'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-006.
   wa_fieldcat_alv-outputlen = '09'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'DEBIT'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-007.
   wa_fieldcat_alv-outputlen = '15'.
   wa_fieldcat_alv-do_sum = 'X'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'CREDIT'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-008.
   wa_fieldcat_alv-outputlen = '15'.
   wa_fieldcat_alv-do_sum = 'X'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'TXT'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-009.
   wa_fieldcat_alv-outputlen = '50'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'DATE'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-010.
   wa_fieldcat_alv-outputlen = '12'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'KKBER'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-011.
   wa_fieldcat_alv-outputlen = '04'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'ZTERM'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-012.
   wa_fieldcat_alv-outputlen = '13'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'AUGBL'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-013.
   wa_fieldcat_alv-outputlen = '15'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'AUGDT'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-seltext_l = text-014.
   wa_fieldcat_alv-outputlen = '17'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   wa_fieldcat_alv-fieldname = 'FLAG'.
   wa_fieldcat_alv-tabname = 'IT_FINAL'.
   wa_fieldcat_alv-tech = 'X'.
   APPEND wa_fieldcat_alv TO it_fieldcat_alv.
   CLEAR wa_fieldcat_alv.
   CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      i_callback_program             = sy-repid
      is_layout                      = wa_layout_alv
      it_fieldcat                    = it_fieldcat_alv
*   IT_EXCLUDING                   =
*   IT_SPECIAL_GROUPS              =
      it_sort                        = it_sort
      it_events                      = it_events
      i_save                            = 'A'
     TABLES
       t_outtab                       = it_final
    EXCEPTIONS
      program_error                  = 1
      OTHERS                         = 2
   IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.
*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*    EXPORTING
*      i_callback_program                = sy-repid
*     i_callback_top_of_page            = 'TOP_OF_PAGE'
*      is_layout                         = wa_layout_alv
*      it_fieldcat                       = it_fieldcat_alv
*      it_sort                           = it_sort
***   I_DEFAULT                         = 'X'
**      i_save                            = 'A'
***   IT_EVENTS                         =
*     TABLES
*       t_outtab                          = it_final
*    EXCEPTIONS
*      program_error                     = 1
*      OTHERS                            = 2
*  IF sy-subrc <> 0.
*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.
ENDFORM.                    " DISPLAY_DATA
*&      Form  TOP_OF_PAGE
*       Header at top of page.
FORM top_of_page.
   SKIP 1.
   WRITE: AT 35 'Account Statement from' , so_budat-low , 'to' , so_budat-high.
   SKIP 2.
   WRITE: AT /5 'CUSTOMER:' , p_kunnr.
   WRITE: AT 35 'Name:' , w_name1.
   WRITE: AT /5 'Company:' , p_bukrs.
   WRITE: AT 35 'City:' , w_ort01.
   SKIP 1.
   WRITE: AT /5 'Opening Balance as on' , so_budat-low , '   ' ,  w_opbal LEFT-JUSTIFIED.
   SKIP 2.
ENDFORM.                    "TOP_OF_PAGE
*&      Form  END_OF_PAGE
*       Footer at End of page.
FORM end_of_page.
   SKIP 2.
   IF so_budat-high IS NOT INITIAL.
     WRITE: AT 5 'Closing Balance as on' , so_budat-high , '   ' ,  w_clobal LEFT-JUSTIFIED.
   ELSE.
     WRITE: AT 5 'Closing Balance  ' , w_clobal LEFT-JUSTIFIED.
   ENDIF.
ENDFORM.                    "end_of_page
*&      Form  CALCULATE_OPENBAL
*       text
*  -->  p1        text
*  <--  p2        text
FORM calculate_openbal .
   DATA:v_gjahr       TYPE bsid-gjahr.
   DATA: v_period LIKE  t009b-poper,v_monat LIKE t001-periv.
   CALL FUNCTION 'FI_PERIOD_DETERMINE'
          EXPORTING
               i_budat        = so_budat-low
               i_bukrs        = p_bukrs
*           I_PERIV        = ' '
*           I_GJAHR        = 0000
*           I_MONAT        = 00
*           X_XMO16        = ' '
          IMPORTING
               e_gjahr        = v_gjahr
*            e_monat        = v_monat
               e_poper        = v_period.
   IF sy-subrc NE 0.
   ENDIF.
   DATA: f_date LIKE sy-datum.
   CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'
     EXPORTING
       i_gjahr  = v_gjahr
       i_monmit = 00
       i_periv  = 'V3'
       i_poper  = v_period
     IMPORTING
       e_date   = f_date.
   period = v_period - 1.
   gjahr = v_gjahr.
   DATA wa_kna1 LIKE kna1.
   CALL FUNCTION 'READ_KNA1'
     EXPORTING
       xkunnr         = p_kunnr
     IMPORTING
       xkna1          = wa_kna1
     EXCEPTIONS
       key_incomplete = 1
       not_authorized = 2
       not_found      = 3
       OTHERS         = 4.
   IF sy-subrc <> 0.
     MESSAGE w023(zwww).
     CALL SCREEN 0010.
   ENDIF.
   MOVE-CORRESPONDING wa_kna1 TO t_kna1.
   APPEND t_kna1.
   SELECT kunnr FROM kna1 INTO TABLE ikunnr1
     WHERE kunnr = p_kunnr.
   SELECT bukrs FROM t001 INTO TABLE ibukrs
    FOR ALL ENTRIES IN t_knb1
    WHERE bukrs = t_knb1-bukrs.
   LOOP AT ikunnr1.
     LOOP AT ibukrs.
       ikunnr-kunnr = ikunnr1-kunnr.
       ikunnr-bukrs = ibukrs-bukrs.
       READ TABLE t_kna1 WITH  KEY kunnr = ikunnr1-kunnr.
       ikunnr-lifnr = t_kna1-lifnr.
       APPEND ikunnr.
     ENDLOOP.
   ENDLOOP.
   DELETE ikunnr WHERE bukrs NE p_bukrs.
   LOOP AT ikunnr.
     CLEAR: knc1,lfc1,f.
     IF NOT ( ikunnr-kunnr IS INITIAL ) AND NOT ( p_vendor IS INITIAL ).
       SELECT SINGLE * FROM lfc1
              WHERE gjahr = gjahr AND bukrs = ikunnr-bukrs
                                  AND lifnr = ikunnr-lifnr.
     ENDIF.
     SELECT SINGLE * FROM knc1
       WHERE gjahr = gjahr AND bukrs = p_bukrs
             AND kunnr = p_kunnr.
     IF sy-subrc = 0.
       CASE period .
         WHEN 12.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +
           knc1-um11s - knc1-um11h + knc1-um12s - knc1-um12h.
           IF NOT ( lfc1 IS INITIAL ).
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +
             lfc1-um11s - lfc1-um11h + lfc1-um12s - lfc1-um12h.
           ENDIF.
         WHEN 11.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +
           knc1-um11s - knc1-um11h.
           IF NOT ( lfc1 IS INITIAL ) .
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +
             lfc1-um11s - lfc1-um11h.
           ENDIF.
         WHEN 10.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h .
           IF NOT ( lfc1 IS INITIAL ) .
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h.
           ENDIF.
         WHEN 9.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
           knc1-um09s - knc1-um09h .
           IF NOT ( lfc1 IS INITIAL ) .
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
             lfc1-um09s - lfc1-um09h.
           ENDIF.
         WHEN 8.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h.
           IF NOT ( lfc1 IS INITIAL ) .
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h .
           ENDIF.
         WHEN 7.
           open = knc1-umsav +
           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
           knc1-um07s - knc1-um07h .
           IF NOT ( lfc1 IS INITIAL ) .
             open = open + lfc1-umsav +
             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
             lfc1-um05s - lfc1-um

Similar Messages

  • How to calculate opening and closing balance for period

    Hi all,
    i have to find out opening and closing balance.
    the table structure of temporary table is
    select * from hwcn_xn_fa_report_temp1 where asset_id=10029400
    PERIOD_COUNTER CST_OP_BAL CST_ADDITION CST_TRANSFER CST_DISPOSAL COST_CLOSING_BALANCE
    24108 0 0 0
    24109 12000
    24110 0 0 0
    24111 0 0 0
    in this table cst_op_balnce and cost_closing_balace is null
    i have display cost_op_bal and cost_closing_balnce
    cost_closing_balance=cst_op_bal+cst_addition+cst_transfer+cst_disposal
    for period 2408 op_balnce=0 closing_bal=0
    for period 2409 op_balnce=0 closing_balce=1200
    for period 2410 op_bal=1200 closing_bal=1200
    closing balance of dec will be opening bal of jan
    thanks and regards
    Edited by: user10664276 on Apr 19, 2009 11:08 PM
    Edited by: user10664276 on Apr 19, 2009 11:13 PM

    Hi,
    user11118871 wrote:
    Can you explain what that is? Thank you if you have one example.
    ROWS BETWEEN  UNBOUNDED PRECEDING AND 1 PRECEDING
    When you use the analytic SUM (c) function, then, on each row, it returns the values of column (or expression) c from several rows in the result set added together.
    Which rows? That depends.
    If the analytic clause (the part in parentheses after OVER) does not include ORDER BY, then it is all rows.
    If the analytic clause has an ORDER BY clause, but no windowing clause (that is, ROWS BETWEEN ... or RANGE BETWEEN ...), then the rows included in the sum are all rows up to and including the row where the function is being called (as sorted by the analytic ORDER BY).
    If the analytic cluase has both ORDER BY and a windowing clause "ROWS BETWEEN x PRECEDING AND y PRECEDING", then the rows included in the sum are the rows from x to y rows before the one where the function is called.
    Do some experiments with different values of x and y.
    First, create a table like the one in the problem above, but simplified a little.
    CREATE TABLE     test_sum
    (      period     NUMBER
    ,      new_amt     NUMBER
    INSERT INTO test_sum (period, new_amt) VALUES (24108,     1);
    INSERT INTO test_sum (period, new_amt) VALUES (24109,     4);
    INSERT INTO test_sum (period, new_amt) VALUES (24110,     2);
    INSERT INTO test_sum (period, new_amt) VALUES (24111,     8);
    INSERT INTO test_sum (period, new_amt) VALUES (25001,     32);
    INSERT INTO test_sum (period, new_amt) VALUES (25002,     16);
    COMMIT;The original problem above used names that were meaningful for its application, and columns that have nothing to do with the SUM function. Let's simplify the former and lose the latter.
    That problem involved the SUM of three columns added together. Since we just want to understand how the windowing clause works, let's simplify that to one column.
    With these simplifications, my original query is:
    SELECT       period
    ,       new_amt     
    ,       SUM (new_amt) OVER ( ORDER BY          period
                                         ROWS BETWEEN  UNBOUNDED PRECEDING
                                 AND          1            PRECEDING
                        ) AS opening_balance
    ,       SUM (new_amt) OVER ( ORDER BY          period
                        ) AS closing_balance
    FROM       test_sum
    ORDER BY  period;Given the data above, it produces these results:
    .   PERIOD    NEW_AMT OPENING_BALANCE CLOSING_BALANCE
         24108          1                               1
         24109          4               1               5
         24110          2               5               7
         24111          8               7              15
         25001         32              15              47
         25002         16              47              63So, for example, on the row where period=24110,
    opening_balance=5, which is the total of new_amt from all rows up to but not including that row: 5=1+4, and
    closing_balance=7, which is the total of new_amt from all rows up to and including that row: 7=1+4+2.
    To really understand how the windowing clause works, do some experiments. Change the definition of opening_balance to include " BETWEEN x PRECEDING AND y PRECEDING". You'll find that:
    (a) "UNBOUNDED PRECEDING" means the same as "n PRECEDING", where n is greater than the number of rows in your result set.
    (b) "CURRENT ROW" means the same as "0 PRECEDING"
    (c) x must be greater than or equal to y
    (d) neither x nor y can be negative (but you can use "FOLLOWING" instead of "PRECEDING" to get the same effect).
    For more, see the introduction to "Analytic Functions" in the [SQL Language manual|http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions001.htm#sthref972]
    When you're finished, don't forget to
    DROP TABLE     test_sum;

  • Opening and Closing balances in RG1 register

    Hi,
    We are facing one issue in RG1 register. When we update and extract the RG1 register from system, its showing Sales Qty and Excise duties properly. But opening and closing balances are not coming, its showing zero there. I checked J_2IRG1BAL table and found that it is also not getting updated. Material comes into stock with 561(initial stock) and 101(from production) movement types but opening/closing balances not coming in either case. Both movement types are activated for RG1 also.
    Seeking your help in this regard.....
    Regards,
    Satyendra Soni

    Hi Satyendra ,
    For initial  upload in RG1 there are 2 tables you need to manually update. J_2IRG1BAL  from CIN or SD side. And Accounts to be updated for Balance in J_2IACCBAL.
    There are 2 ways for updating balance tables
    On last day of month enter Balance in Closing balance field.
    OR enter opening balance on 1 st day of month.
    Also check Material form P ,can be maintained in user exit for permanent effect.
    After  updating balances ,
    perform any one transaction on system.
    and then  Extract  the Rg1 table .
    Ask FI consultant to put in  FI JV after balance upload in ACCBAL table.
    If you have not done table entries before performing transaction and extraction of RG1  then balances will not appear .
    Check with your senior there and use table edit in such case (I hope you are not on production server  at the moment) .Then again perform Extraction and check once.
    SD FI and ABAP to be present and take decision accordingly.

  • Opening and closing balance values at storage location level

    Dear all,
    I want to know opening and closing balance values and receipts and issue values at storage location level for certain period.
    I tried with MB5B, it is not giving value at storage location level, it is giving quantities at storage location level and values at plant level. But requirement is: please see below example:
    All values are in USD          
    Storage location:      1001     1002
    Opening Balance:      2000     3000
    Receipts:                           1000      2000
    Issues:                            2000     3000
    Closing Balance:      1000     2000
    Please help in this regard (I want value of the stock only, not qty)
    Regads,
    Veerappa
    Edited by: Chinna Veerappa on Jul 27, 2010 5:27 PM
    Edited by: Chinna Veerappa on Jul 27, 2010 5:28 PM

    vlauation is at plant level (MBEW table) the storage location level does not carry values (table MARD).
    You may have to develope your own ZMB5B  program and calculate yourself what is not stored in SAP.

  • Query for Opening And  Closing Stock

    Hi Experts...
    I need a report for Opening and Closing stocks and Goods Receipt and Goods Issue for Raw Materials and Finished Goods and Consumbles ..instead of going for different reports for each we need a combined report which can display for all Raw Materials, Finished Goods and Consumbles and we need it for a specific date range Material type(Raw MAterials,Finished Goods, Consumbales)
    and below is the format i needed.
                                                                           RAW MATERIALS /FINISHED GOODS/CONSUMBALES
                            Opening Stock                      Closing Stock         Goods Receipt                  Goods Issue
                             Qty   Value                             Qty   Value                     Qty   Value                      Qty   Value
    Item Name
    Regards,
    Vamsi.

    Hi Guys.
    I need an Inventory stock report with Item name, Opening Stock,Goods issue Quantity,Goods Received ,Item Price,Location ,(Closing Stock)Total Value.
    We need the input by Date Range and Item Group and Location(if Possible) Below is the Code i used to run the report.
    Pls Update the Query...
    Declare @FromDate Datetime
    Declare @ToDate Datetime
    Declare @Group nvarchar(10)
    Declare @Whse nvarchar(10)
    Set @FromDate = (Select min(S0.Docdate) from dbo.OINM S0 where S0.Docdate >='[%0]')
    Set @ToDate = (Select max(S1.Docdate) from dbo.OINM s1 where S1.Docdate <='[%1]')
    Set @Group = (Select Max(s2.ItmsGrpCod) from dbo.OITB S2 Where S2.ItmsGrpNam = '[%2]')
    Set @Whse = (Select Max(s3.Warehouse) from dbo.OINM S3 Where S3.Warehouse = '[%3]')
    Select @Whse as 'Warehouse', a.Itemcode, max(a.Dscription), sum(a.[Opening Balance]) as [Opening Balance], sum(a.[IN]) as [IN], sum(a.OUT) as OUT,max(a.Price) as 'Price', ((sum(a.[Opening Balance]) + sum(a.[IN])) - Sum(a.OUT)) as Closing from dbo.OITM I1
    Left JOIN (Select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.Price, (sum(N1.inqty)-sum(n1.outqty)) as [Opening Balance], 0 as [IN], 0 as OUT
    From dbo.OINM N1
    Where N1.DocDate < @FromDate and N1.Warehouse = @Whse
    Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.Price
    Union All
    select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.price, 0 as [Opening Balance], sum(N1.inqty) as [IN], 0 as OUT From dbo.OINM N1 Where N1.DocDate >= @FromDate and N1.DocDate <= @ToDate and N1.Inqty >0 and N1.Warehouse = @Whse Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.price
    Union All
    select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.price, 0 as [Opening Balance], 0 as [IN], sum(N1.outqty) as OUT From dbo.OINM N1 Where N1.DocDate >= @FromDate and N1.DocDate <=@ToDate and N1.OutQty > 0 and N1.Warehouse = @Whse Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.price) a ON a.ItemCode=I1.ItemCode
    where  I1.ItmsGrpCod = @Group
    Group By a.Itemcode
    Order By a.Itemcode
    Regards,
    Vamsi.

  • Open and closing balances std report

    Dear All,
    please suggest me open and closing balances std report and can i suggest my user below t.code for viewing open and closing balnces for India scenarion T.code:J3RFLVMOBVED
    Regards
    Gopal.S

    hi
    kindly chk MB5B it will fullfill your requirement
    regards
    praveen.k

  • Opening and Closing balance in FBL3N?

    Hi All,
    In other ERP systems, if you browse GL Account, i.e. FBL3N in SAP, you get the list of documents within specified period but in other systems you also get the OPENING balance as well as CLOSING balance and the current postings are in between them. Is there any standard report or report painter is to be used for such requirement.
    Balances can be checked through FS10N and S_ALR_87012301 etc. but requirement is to get the list of documents with opening and closing balance in beginning and end of the report. The best example is of Cash Journal (Txn FBCJ)
    Thanks

    Thank you Will,
    Yes, actually if other system provide such functionality then SAP should be providing that. I searched within table TSTC for such transaction but unable to get. Accountants requirement is when they execute FBL3N within specified period, the cummulative opening balance and closing balance should be provided with report.
    Thanks for your answer!
    Regards,
    Nayab

  • Opening and closing balance logic

    How to get opening and closing balances for a material and chapter-id for tarif-wise report for sales and captive consumption...
    Edited by: vijetasap on Apr 13, 2009 2:25 PM

    Hi Vijeta...
    Try posting this question related to the functional domain forum of your requirement.. you might have more luck there..

  • GL a/c opening and closing balances

    Hi All,
    Below is my selection screen:
    select-options : s_bukrs for bkpf-bukrs obligatory.
    parameter      :  p_gjahr like bkpf-gjahr obligatory.
    select-options : s_budat for bkpf-budat,
                           s_monat for bkpf-monat,
                           s_hkont for bseg-hkont.
    I am displaying the data from tables BKPF, BSEG, KNA1-NAME1, LFA1-NAME1, SKAT-TXT50. I have to fetch Opening and Closing balances for GL a/c's. I am fetching data from table GLT0-HSLVT(opening balance). But unable to get the data for closing balance based on the period given on the selection screen. In my report I am looping on table it_bseg to populate the final internal table. How to get the closing balances's total based on the input.
    Please help me.
    Thanks,
    Haritha

    Hello Haritha,
                        Try this code by building a function module. This would cover both opening and closing balance.
    FUNCTION ZGL_OPENING_CLOSING_BAL_KEYDAT.
    *"*"Local Interface:
    *"  IMPORTING
    *"     REFERENCE(COMP) TYPE  BKPF-BUKRS
    *"     REFERENCE(DATE) TYPE  BKPF-BUDAT
    *"     REFERENCE(ACCT) TYPE  BSEG-HKONT
    *"  EXPORTING
    *"     REFERENCE(BALANCE) TYPE  BSEG-DMBTR
    DATA : COMPANYCODEID  LIKE  BAPI0002_2-COMP_CODE     ,
    POSTING_DATE   LIKE  BAPI0002_4-POSTING_DATE  ,
    FISCAL_YEAR    LIKE  BAPI0002_4-FISCAL_YEAR   ,
    FISCAL_PERIOD  LIKE  BAPI0002_4-FISCAL_PERIOD .
    DATA : ACCOUNT_BALANCES  TYPE TABLE OF BAPI3006_4 WITH HEADER LINE.
    DATA : BAL TYPE BSEG-DMBTR.
    DATA : IV_DATE  TYPE  D   ,
    EV_MONTH_BEGIN_DATE  TYPE  D,
    EV_MONTH_END_DATE  TYPE  D .
    DATA : COMPANYCODE  LIKE  BAPI3006_0-COMP_CODE,
    GLACCT  LIKE  BAPI3006_0-GL_ACCOUNT ,
    FISCALYEAR  LIKE  BAPI3006_4-FISC_YEAR,
    CURRENCYTYPE  LIKE  BAPI3006_5-CURR_TYPE VALUE 10.
    DATA : IT_BKPF TYPE TABLE OF BKPF WITH HEADER LINE.
    DATA : BEGIN OF IT_BSEG OCCURS 0,
    BELNR TYPE BSEG-BELNR,
    GJAHR TYPE BSEG-GJAHR,
    SHKZG TYPE BSEG-SHKZG  ,
    DMBTR TYPE BSEG-DMBTR,
    END OF IT_BSEG.
    COMPANYCODEID = COMP.
    POSTING_DATE = DATE.
    IV_DATE  = DATE.
    CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
    EXPORTING
    IV_DATE             = IV_DATE
    IMPORTING
    EV_MONTH_BEGIN_DATE = EV_MONTH_BEGIN_DATE
    EV_MONTH_END_DATE   = EV_MONTH_END_DATE.
    CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
    EXPORTING
    COMPANYCODEID = COMPANYCODEID
    POSTING_DATE  = POSTING_DATE
    IMPORTING
    FISCAL_YEAR   = FISCAL_YEAR
    FISCAL_PERIOD = FISCAL_PERIOD.
    IF EV_MONTH_END_DATE NE DATE.
    IF FISCAL_PERIOD = 1.
    FISCAL_PERIOD = 12              .
    FISCAL_YEAR = FISCAL_YEAR - 1  .
    ELSE.
    FISCAL_PERIOD =  FISCAL_PERIOD - 1.
    ENDIF.
    ENDIF.
    COMPANYCODE  =  COMP.
    GLACCT  = ACCT.
    FISCALYEAR  = FISCAL_YEAR.
    CALL FUNCTION 'BAPI_GL_ACC_GETPERIODBALANCES'
    EXPORTING
    COMPANYCODE      = COMPANYCODE
    GLACCT           = GLACCT
    FISCALYEAR       = FISCALYEAR
    CURRENCYTYPE     = CURRENCYTYPE
    TABLES
    ACCOUNT_BALANCES = ACCOUNT_BALANCES.
    READ TABLE ACCOUNT_BALANCES  WITH KEY FISC_YEAR = FISCALYEAR FIS_PERIOD = FISCAL_PERIOD.
    IF SY-SUBRC = 0.
    BALANCE =  ACCOUNT_BALANCES-BALANCE.
    ENDIF.
    IF EV_MONTH_END_DATE NE DATE.
    SELECT * FROM BKPF INTO TABLE IT_BKPF WHERE BUKRS = COMP AND BUDAT >= EV_MONTH_BEGIN_DATE
    AND BUDAT <= DATE.
    IF IT_BKPF[] IS NOT INITIAL.
    SELECT BELNR GJAHR SHKZG DMBTR
    FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG
    FOR ALL ENTRIES IN IT_BKPF
    WHERE BELNR = IT_BKPF-BELNR AND GJAHR = IT_BKPF-GJAHR AND HKONT = ACCT AND BUKRS = COMP.
    ENDIF.
    LOOP AT IT_BSEG.
    IF IT_BSEG-SHKZG = 'H'.
    BAL = BAL - IT_BSEG-DMBTR.
    ELSEIF IT_BSEG-SHKZG = 'S'.
    BAL = BAL + IT_BSEG-DMBTR.
    ENDIF.
    ENDLOOP.
    BALANCE = BALANCE + BAL.
    ENDIF.
    ENDFUNCTION.
    Raghav

  • Customer Statement with opening and closing balances

    Dear Forum,
    The users want to generate the Customer Statement with opening and closing balances like the traditional one. The statement now generated gives the list of all open items as on date, but the users want the statement with opening balances as on the date of the begining of the range specified and the closing balance at the end of the period for which the statement is generated. Is there a way to generate the same from the system.
    Thanks for the help.
    Regards,

    Hi,
    SPRO> Financial Accounting (New) > Accounts Receivable and Accounts Payable > Customer Accounts > Line Items > Correspondence > Make and Check Settings for Correspondence
    You can use the program RFKORD10 with correspondance type SAP06 for your company code
    This program prints account statements and open items lists for customers and vendors in letter form. For account statements, all postings between two key dates, as well as the opening and closing balance, are listed.
    Regards,
    Gaurav

  • Vendor Line item with Opening and Closing Balances report regarding

    Dear All,
    I need a report for vendor line items with Opening and Closing balances.
    Thanks in advance
    Sateesh

    Hi
    Try S_ALR_87012082 - Vendor Balances in Local Currency
    Regards
    Sanil Bhandari

  • Functional Specification For Opening And closing stock On Particular Date

    Dear Gurus,
    I am creating report for opening and closing stock on particular date in which batch and storage location should also be included. I want to know the tables and fields for the same.I have searched the forum and got report on month basis but I want this report on posting day basis.kindly suggest tables and fields. Thanks in Advance

    Dear sir,
    There are many other colums that client wants to add which are not present in MB5B transaction.columns which client wants to add are as follows...
    Material Number                                                   
    Material Description                                       
    Material Type                                                                        
    Material Group                                                                     
    External material Group                                                            
    Movement Type     
    Plant     
    Storage Location     
    Customer Number     
    Customer Name     
    Vendor Number     
    Vendor Name     
    Posting Date     Receipt Doc. Number
    Issue Doc. Number     
    Reference Issue Document Number     
    Opening Stock Quanity     
    Material Receipt Quantity     
    Material Issue Quantity     
    Material Closing Stock Quantity      
    Value Of Closing Stock
    And for this I want  tables and logic for the same. kindly provide the solution for the same.

  • Opening and Closing Balances -SAP

    Hi experts
    please explain me about the Opening and Closing Balance in SAP? and what is the use of Opening and closing Balance?
    regards
    anand

    Hi Ananda
    opening balance : when  ever u run any financial report for example a  ledger profit and loss account then it has a opening balance and a closing balance
    say for example if we see the balance of our cash account in sap at end of the day today then we can consider the balance as x amount as closing balance and when again tomorrow there is some transaction in the same account than this x Amount is considered as the opening balance for tomorrows date
    Hope this would suffice your Concern
    Regards,
    Manish

  • Opening and closing balance

    Hi experts.
    I am looking for a formula to calculate opening and closing balance @ query level.
    points are waiting.

    Hi,
    I think you are using 0IC_C03 Cube.
    You can get ...liek below
    Opening Stock Qty =
    Valuated stock qty-- 0VALSTCKQTY
    Calendar Year/Month 0CALMONTH
    Z_SNGVAL-1
    Restrict  0VALSTCKQTY keyfigure with  0CALMONTH , Z_SNGVAL (Less then or equal to) is user entry Variable for Month, so Z_SNGVAL-1 give OIpening Stock.
    Closing Stock..
    Valuated stock qty ---0VALSTCKQTY
    Calendar Year/Month 0CALMONTH 8
    <=SNGVAL (Restrict with Less then or equal to)
    Thanks
    Reddy

  • Opening and closing balance between 2 dates

    hi.
    i am facing a problem while fetching the opening and closing balance for a particular G/L account.
    In my  program  i am entering G/L account for a date range i.e, between two dates and i want opening and closing balance for these 2 date ranges.
    So, please tell me is there any function module to fetch opening and closing balance between two dates.
    Regards,
    ROHINI.K.

    Hi Rohini,
                 Check this FM :   BAPI_GL_GETGLACCPERIODBALANCES.
    If we use this functional module, we will get opening and closing balance of corresponding G/L Acc.
    (e.g)
    CALL FUNCTION 'BAPI_GL_GETGLACCPERIODBALANCES'
        EXPORTING
          companycode                   =  '1000'
          glacct                              = '0000548101'
          fiscalyear                         = '2007'    
         currencytype                      = '10'
       IMPORTING
    BALANCE_CARRIED_FORWARD       =  gs_bal-balance
         RETURN                                        =  v_return
        TABLES
          account_balances                            = gt_bal.

Maybe you are looking for

  • Cannot authenticate Radius via WLC

    Trying to configure RADIUS client on Server 2012 using a 5508 series WLC.  Getting the following debug on the WLC: (Cisco Controller) >*dot1xMsgTask: Dec 13 12:43:19.695: 74:e5:43:5d:48:78 Not sending EAP-Failure for STA 74:e5:43:5d:48:78 *apfMsConnT

  • Multiple AIR apps with the same local cache?

    Hi guys, Is it possible to create multiple AIR apps (for mobile & desktop) that can use the same local cache? For example: 2 apps for iPad will use the same data store (local cache). If we synchronize (with LCDS) and get all the data for 1 applicatio

  • EPrint software for mac

    I recently got a macbook and want to install the eprint software that will allow me to remotely print to my parents hp 8600 eprint printer. he software is avialble for my windows 8.1 desktop but not for mac. the links don't work. ePrint Software

  • Time Machine on a NAS - Avoiding "Time Machine completed a verification of your backups....."

    I use Time Machine to wirelessly backup my MBA to a Buffalo NAS. It will work fine for weeks or months, then I will see the dreaded "Time Machine completed a verification of your backups. To improve reliability, Time Machine must create a new backup

  • Wrong metadata retrieved when using Oracle8.1.7 + classes12.zip

    Hi, I am using Oracle8.1.7+classes12.zip+jdk1.2.2. I am always retrieving the wrong metadata for the tables. The same piece of code works fine when using Oracle8.1.5+classes111b.zip+jdk1.2.2. The code is as follows : try { db = Database.getDatabase()