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

Similar Messages

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

  • 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

  • Opening and closing balances

    Hi sapgurus
    I need a report with similar to MB5B at particular posting date with opening and closing balances but I am unable to download the report to excel the data with MB5B tranasaction.Is there any similar transaction with same output values which can be easily transported to excel from Sap.
    Thanx

    Hi,
    I tested in ECC6.0 and i could able to do so, you try as mentioned below.
    In the output screen of MB5B, goto menu details > click on list > select save > select file > select spreadsheet. Here you can save tthe output in excel format.
    Regards,
    Prabu

  • 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

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

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

  • Opening and Closing balance of a material

    How to check the opening and closing balance of a material in a given period?
    GL account /Plant/material number is known
    Can we see along with the PO/reservations made  in this period?
    Is there any report or Tcode?

    In mbew and mbewh table u will get the value and stock of material at plant level  for each period( if plant is valuation level ) . GL account u will get from valuation class attched to material master.
    Else use fi tcodefbl3n .
    if u want closing balance for period 6 then you  goto fbl3n and run the report for the GL ACC of stock till period 5. In that go to menu and in that special fields add bseg-matnr and bseg-plant and then sort the report on material/plant level. this will opening balance for period 6.
    then run same report till period 6 and this will give closing balance for period 6.
    this two report give opening and closing balace for period 6.

  • Intersperse daily totals with opening and closing balance

    Hi All
    Suppose we have a data set (simplified from my query but will suffice)
      select 1 as daynum, 'CR' as trantype, 200 as amount from dual union all
      select 1 as daynum, 'DR' as trantype, -300 as amount from dual union all
      select 2 as daynum, 'CR' as trantype, 800 as amount from dual union all
      select 2 as daynum, 'DR' as trantype, -200 as amount from dual union all
      select 3 as daynum, 'CR' as trantype, 900 as amount from dual union all
      select 3 as daynum, 'DR' as trantype, -500 as amount from dual
    )How would you go about getting a result set that looks like:
    1, Opening Balance, 0
    1, CR, 200
    1, DR, -300
    1, Closing Balance, -100
    2, Opening Balance, -100
    2, CR, 800
    2, DR, -200
    2, Closing Balance, 500
    3, Opening Balance, 500
    3, CR, 900
    3, DR, -500
    3, Closing Balance, 900
    4, Opening Balance, 900
    4, Closing Balance, 900
    I'm thinking:
    generate an arbitrary number of rows for the number of days I want to report over (in this case, 4)
    cross join these with 2 row set of constants "opening" and "closing" balanace
    -> I have now an opening and closing balance row for every day
    union it with my data so that "opening/CLosing balance" is a type too (and nulls in the amount column)
    case when the type is like '%Balance' then sum(amount) over(order by day, orderkind rows unbounded preceding) else amount
    (orderkind is a constant 0 for opening, 1 for all the datarows, 2 for closing)
    Is it right?
    Is there a better way?
    Edited by: charred on Apr 1, 2010 7:03 AM

    Unless I'm missing something, Tom's answer won't work for more than 4 days?
    with t as
        select 1 as daynum, 'CR' as trantype, 200 as amount from dual union all
        select 1 as daynum, 'DR' as trantype, -300 as amount from dual union all
        select 2 as daynum, 'CR' as trantype, 800 as amount from dual union all
        select 2 as daynum, 'DR' as trantype, -200 as amount from dual union all
        select 3 as daynum, 'CR' as trantype, 900 as amount from dual union all
        select 3 as daynum, 'DR' as trantype, -500 as amount from dual union all
        select 4 as daynum, 'CR' as trantype, 900 as amount from dual union all
        select 4 as daynum, 'DR' as trantype, -500 as amount from dual union all
        select 5 as daynum, 'CR' as trantype, 900 as amount from dual union all
        select 5 as daynum, 'DR' as trantype, -500 as amount from dual
      data
      as
      ( select daynum, r
          from (select level daynum from dual connect by level <= 4),
                   (select level r from dual connect by level <= 2 )
      select daynum,
             r,
             ttype,
             amt,
             case when ttype in ( 'close', 'open' )
                  then sum(samt) over (order by daynum, r)
              end theamount
        from (
      select data.daynum,
             data.r,
             case when (nvl(t.trantype,'CR') = 'CR' and data.r = 1 )
                  then 'open'
                  when (nvl(t.trantype,'DR') = 'DR' and data.r = 2)
                  then 'close'
                  else t.trantype
             end ttype,
             case when (t.trantype = 'CR' and r = 2) or (t.trantype = 'DR' and r=1)
                  then t.amount
              end amt,
             case when (t.trantype = 'DR' and r = 2)
                  then sum(case when r=1 then t.amount end) over (partition by data.daynum)
                  else 0
              end samt
      from   t, data
      where data.daynum (+) = t.daynum
      order by daynum, r, decode( ttype, 'open', 1, 'CR', 2, 'DR', 3, 'close', 4 );
        DAYNUM          R TTYPE        AMT  THEAMOUNT
             1          1 open                      0
             1          1 DR          -300          
             1          2 CR           200          
             1          2 close                  -100
             2          1 open                   -100
             2          1 DR          -200          
             2          2 CR           800          
             2          2 close                   500
             3          1 open                    500
             3          1 DR          -500          
             3          2 CR           900          
             3          2 close                   900
             4          1 open                    900
             4          1 DR          -500          
             4          2 CR           900          
             4          2 close                  1300
                          CR                        
                          DR  Here's a solution using partitioned outer join:
    with my_tab as (select 1 as daynum, 'CR' as trantype, 200 as amount from dual union all
                    select 1 as daynum, 'DR' as trantype, -300 as amount from dual union all
                    select 2 as daynum, 'CR' as trantype, 800 as amount from dual union all
                    select 2 as daynum, 'DR' as trantype, -200 as amount from dual union all
                    select 3 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 3 as daynum, 'DR' as trantype, -500 as amount from dual union all
                    select 4 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 4 as daynum, 'DR' as trantype, -500 as amount from dual union all
                    select 5 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 5 as daynum, 'DR' as trantype, -500 as amount from dual),
          dummy as (select 1 id, 'Opening Balance' descr from dual union all
                    select 2 id, 'CR' descr from dual union all
                    select 3 id, 'DR' descr from dual union all
                    select 4 id, 'Closing Balance' descr from dual)
    select mt.daynum,
           d.descr,
           decode(d.id, 1, 0,
                        2, amount,
                        3, amount,
                        4, amount + lag(amount, 2) over (partition by mt.daynum order by d.id)) amount
    from   my_tab mt
           left outer join dummy d partition by (id, descr) on (mt.trantype = d.descr)
    where  (d.id = 1 and mt.trantype = 'CR')
    or     (d.id = 2 and mt.trantype = 'CR')
    or     (d.id = 3 and mt.trantype = 'DR')
    or     (d.id = 4 and mt.trantype = 'DR')
    order by mt.daynum, d.id;
        DAYNUM DESCR               AMOUNT
             1 Opening Balance          0
             1 CR                     200
             1 DR                    -300
             1 Closing Balance       -100
             2 Opening Balance          0
             2 CR                     800
             2 DR                    -200
             2 Closing Balance        600
             3 Opening Balance          0
             3 CR                     900
             3 DR                    -500
             3 Closing Balance        400
             4 Opening Balance          0
             4 CR                     900
             4 DR                    -500
             4 Closing Balance        400
             5 Opening Balance          0
             5 CR                     900
             5 DR                    -500
             5 Closing Balance        400ETA: And, if there can be any number of CR or DR rows:
    with my_tab as (select 1 as daynum, 'CR' as trantype, 200 as amount from dual union all
                    select 1 as daynum, 'DR' as trantype, -300 as amount from dual union all
                    select 1 as daynum, 'CR' as trantype, 400 as amount from dual union all
                    select 1 as daynum, 'DR' as trantype, -500 as amount from dual union all
                    select 2 as daynum, 'CR' as trantype, 800 as amount from dual union all
                    select 2 as daynum, 'DR' as trantype, -200 as amount from dual union all
                    select 3 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 3 as daynum, 'DR' as trantype, -500 as amount from dual union all
                    select 4 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 5 as daynum, 'CR' as trantype, 900 as amount from dual union all
                    select 5 as daynum, 'CR' as trantype, 200 as amount from dual union all
                    select 5 as daynum, 'DR' as trantype, -500 as amount from dual union all
                    select 6 as daynum, 'DR' as trantype, -200 as amount from dual),
          dummy as (select 1 id, 'Opening Balance' descr from dual union all
                    select 2 id, 'CR' descr from dual union all
                    select 3 id, 'DR' descr from dual union all
                    select 4 id, 'Closing Balance' descr from dual)
    select mt.daynum,
           d.descr,
           mt.trantype,
           decode(d.id, 1, 0,
                        2, amount,
                        3, amount,
                        4, sum(decode(d.id, 1, 0, 4, 0, amount)) over (partition by mt.daynum)) amount
    from   (select mt1.*, row_number() over (partition by mt1.daynum order by mt1.trantype) rn
            from   my_tab mt1) mt
           left outer join dummy d partition by (id, descr) on (mt.trantype = d.descr)
    where  case when d.id = 1 and rn = 1 then 1
                when d.id = 2 and mt.trantype = 'CR' then 1
                when d.id = 3 and mt.trantype = 'DR' then 1
                when d.id = 4 and rn = 1 then 1
                else 0
           end = 1
    order by mt.daynum, d.id;
        DAYNUM DESCR           TRANTYPE     AMOUNT
             1 Opening Balance CR                0
             1 CR              CR              400
             1 CR              CR              200
             1 DR              DR             -300
             1 DR              DR             -500
             1 Closing Balance CR             -200
             2 Opening Balance CR                0
             2 CR              CR              800
             2 DR              DR             -200
             2 Closing Balance CR              600
             3 Opening Balance CR                0
             3 CR              CR              900
             3 DR              DR             -500
             3 Closing Balance CR              400
             4 Opening Balance CR                0
             4 CR              CR              900
             4 Closing Balance CR              900
             5 Opening Balance CR                0
             5 CR              CR              900
             5 CR              CR              200
             5 DR              DR             -500
             5 Closing Balance CR              600
             6 Opening Balance DR                0
             6 DR              DR             -200
             6 Closing Balance DR             -200Edited by: Boneist on 16-Apr-2010 17:10

  • Trying to get the Opening and Closing Balance, 0TOTALSTCK and 0VALSTCKVAL

    Hi Experts, Good Day.
    I am developing a query for Stock Balances, Using Custom cube created with copy from 0ic_c03.
    I am trying to get the Opening and Closing Balance, based on Non-Cumulative KF - 0TOTALSTCK and 0VALSTCKVAL.
    Both The KF's Behaviour for Exception Aggregat. = Last Value
    I am using VARIABLE OFFSET as -1 to get Opening Balance, and just restriction for Closing Balance based on 0CALMONTH
    Unfortunately i am getting data for the periods which does not have data in my Cube. It is taking the total value as closing balance for the periods which we don't have transaction in the cube.
    For Ex. I have data for 09.2010 & 10.2010 a particular material, when i enter 08.2010 as input i am getting the total value of the material.
    I hope you understand the problem and solution soon.
    I will give you more explanation if needed.
    Thanks in Advance....
    Have a great Day Ahead.....
    GopalN

    Hi GopaIN,
    can you explain us process you have done about initialization of data (2LIS_03_BX, cube compression)? it seams like there was data before 09.2010 and you load it with 2LIS_03_BX data source. That data is not in cube, but just used for update markers.
    Edited by: Sasa Todorovic on Mar 25, 2011 9:48 AM

Maybe you are looking for