Performance issue - Result set

Hi,
I am facing performance problem with query execution. The code almost looks like this
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(0);
result = stmt.executeQuery("SELECT  name, phoneNumber from tbluser inner join tblUserDetails ON  tbluser.userid =tblUserDetails.userid WHERE ([phoneNumber] like'%123456789%')  ORDER BY [name], [userID]");This query is taking too much time from the code.The same code is taking only few seconds for execution from the query analyzer.
when I changed the result set type to TYPE_SCROLL_SENSITIVE its performance improved significantly.
Please help me to find out y why a scroll sensitive result set performs better than a forward only result set?
CAn anybody help me how to use client side\server side cursors?
I have created indexes in tables. Is there any other way to improve the performance? Thanks in advance. Any help will be greatly appreciated.
Edited by: Aryan.s on Sep 16, 2008 7:49 PM

Ok, if you wait many rows in the select you change
stmt.setFetchSize(0);
to
stmt.setFetchSize(50);
Then, if you use "[phoneNumber] like" the database never used the index, you need tu use "=", ">" or "<", etc, if you want the database use the index, you never use "in", "exist", "like" or function "function(column) == variable", my suggestion is:
result = stmt.executeQuery(
"SELECT name, phoneNumber " +
"from tbluser inner join tblUserDetails ON tbluser.userid =tblUserDetails.userid " +
"WHERE ([phoneNumber] = '123456789') ORDER BY [name], [userID]");
And use a mask in the input of your application (JFormattedText)

Similar Messages

  • BW Web Report Issue - Result set too large

    Hi,
    When I execute a BEx Query on Web I am getting “Result set too large ; data retrieval restricted by configuration (maximum = 500000 cells)”.
    Following to my search in SDN I understood we can remove this restriction either across the BW system globally or for a specific query at WAD template.
    In my 7x Web template I am trying to increase default max no of rows parameters, As per the below inputs from SAP Note: 1127156.
    But I can’t find parameter “Size Restriction for Result Sets” for any of the web items (Analysis/Web Template properties/Data Provider properties)….in the WAD Web template
    Please advise where/how can I locate the properites
    Instructions provided in SAP Note…
    The following steps describe how to change the "safety belt" for Query Views:
    1. Use the context menu Properties / Data Provider in a BEx Web Application to maintain the "safety belt" for a Query View.
    2. Choose the register "Size Restriction for Result Sets".
    3. Choose an entry from the dropdown box to specify the maximum number of cells for the result set.
                  The following values are available:
    o Maximum Number
    o Default Number
    o Custom-Defined Number
                  Behind "Maximum Number" and "Default Number" you can find the current numbers defined in the customizing table RSADMIN (see below).
    4. Save the Query View and use it in another Web Template.
    Thanks in advance

    Hi Yasemin,
    Thanks for all help...i was off couple of days.
    To activate it I can suggest to create a dummy template, add your query in it, add a menu bar component add an action to save the query view. Then you run the template and change the size restriction for result set then you can save it by the menu.
    Can you please elaborate on the solution provided,I created dummy template with analysis and Menu bar item...i couldn't able to configure menu bar item...
    Thanks in advance

  • Query Performance and Result Set Query/Sub-Query

    Hi,
    I have an infoset with as many as <b>15 joins</b> with different ODS and Master Data..<b>The ODS are quite huge with 20 million, 160 million records)...</b>Its taking a lot of time even for a few days and need to get atleast 3 months data in a reasonable amount of time....
    Could anyone please tell me whether <b>Sub-Query or Result Set Query have to be written against the same InfoProvider</b> (Cube, Infoset, etc)...or they can be used in queries
    on different infoprovider...
    Please suggest...Thanks in Advance.
    Regards
    Anil

    Hi Bhanu,
    Needed some help defining the Precalculated Value Set as I wasnt succesful....
    Please suggest answers if possible for the questions below
    1) Can I use Filter Criteria for restricting the value set for the characteristic when I Define a Query on an ODS. When i tried this it gave me errors as below  ..
    "System error in program CL_RSR_REQUEST and form  EXECUTE_VTABLE:COB_PRO_GET_ALWAYS....                     Error when filling value set DELIVERY..                                               
    Job cancelled after system exception ERROR_MESSAGE"                                           
    2) Can I create a create a Value Set predefined on an Infoset -  Not Succesful as Infoset have names such as "InfosetName_F000232" and cannot find the characteristic in Paramter Tab for Value Set in Reprting Agent.
    3) How does the precalculated value Set variable help if I am not using any Filtering Criteria and is storing the List of all values for the Variable from the ODS which consists of 20 millio records.
    Thanks for your help.
    Kind Regards
    Anil

  • Performance Issue when setting connection information

    I am writing a Winforms application using VB.NET
    I have developed a method that sets the Crystal Reports Connection.
    This method first grabs the connection string from the config file creates a Crystal Reports ConnectionInfo object.
    The following code then takes over 5 seconds to run:
    Dim myTables As Tables = report.Database.Tables
    Dim myTableLogonInfo As TableLogOnInfo = New TableLogOnInfo()
    myTableLogonInfo.ConnectionInfo = myConnectionInfo
    Then this code takes over 6 seconds to run:
    For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
    myTable.ApplyLogOnInfo(myTableLogonInfo)
        myTable.LogOnInfo.ConnectionInfo.DatabaseName = myTableLogonInfo.ConnectionInfo.DatabaseName
        myTable.LogOnInfo.ConnectionInfo.ServerName = myTableLogonInfo.ConnectionInfo.ServerName
        myTable.LogOnInfo.ConnectionInfo.UserID = myTableLogonInfo.ConnectionInfo.UserID
        myTable.LogOnInfo.ConnectionInfo.Password = myTableLogonInfo.ConnectionInfo.Password
    Next
    This only occurs the first time that the form is loaded, the subsequent times it is
    335ms (as compared to 5349ms) and 52ms (as compared to 6228ms)
    However, when the application is reloaded the same slow times re-occur.
    There are not many different tables in my report generally 3 or less. Only 1 table in this case.
    This is currently in test and VS2008 and SQLServer2005 are both running locally. The same issue does occur in the QA environment as well, where the application is run on the client and the database is on a server on the same LAN.
    So my question is, can I improve the speed of this portion of code? Why does it take so long to set the report connection information? Am I doing connections to the report incorrectly?
    Any ideas?
    Thanks,

    This is an expected behavior. First time the code is run, the app loads all the CR runtime; assemblies, dlls, COM dlls, etc., etc. Once these are in memory, the performance improves significantly. For more details and possible work-arounds, see [this|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/8029cc96-6ff3-2b10-47a2-b30ea790ea5b] article.
    Ludek

  • Performance to fetch result set from stored procedure.

    I read some of related threads, but couldn't find any good suggestions about the performance issue to fetch the result set from a stored procedure.
    Here is my case:
    I have a stored procedure which will return 2,030,000 rows. When I run the select part only in the dbartisan, it takes about 3 minutes, so I know it's not query problem. But when I call the stored procedure in DBArtisan in following way:
    declare cr SYS_REFCURSOR;
    firstname char(20);
    lastname char(20);
    street char(40);
    city char(20);
    STATE varchar2(2);
    begin DISPLAY_ADDRESS(cr);
    DBMS_OUTPUT.ENABLE(null);
    LOOP
    FETCH cr INTO firstname,lastname,street, city, state;
    EXIT WHEN cr%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE( firstname||','|| lastname||','|| street||',' ||city||',' ||STATE);
    END LOOP;
    CLOSE cr;
    end;
    It will take about 100 minutes. When I used DBI fetchrow_array in perl code, it took about same amount of time. However, same stored procedure in sybase without using cursor, and same perl code, it only takes 12 minutes to display all results. We assume oracle has better performance. So what could be the problem here?
    The perl code:
    my $dbh = DBI->connect($databaseserver, $dbuser, $dbpassword,
    { 'AutoCommit' => 0,'RaiseError' => 1, 'PrintError' => 0 })
    or die "couldn't connect to database: " . DBI->errstr;
    open OUTPUTFILE, ">$temp_output_path";
    my $rc;
    my $sql="BEGIN DISPLAY_ADDRESS(:rc); END;";
    my $sth = $dbh->prepare($sql) or die "Couldn't prepare statement: " . $dbh->errstr;
    $sth->bind_param_inout(':rc', \$rc, 0, { ora_type=> ORA_RSET });
    $sth->execute() or die "Couldn't execute statement: " . $sth->errstr;
    while($address_info=$rc->fetchrow_arrayref()){
    my ($firstname, $lastname, $street, $city, $STATE) = @$address_info;
    print OUTPUTFILE $firstname."|".$lastname."|".$street."|".$city."|".$STATE;
    $dbh->commit();
    $dbh->disconnect();
    close OUTPUTFILE;
    Thanks!
    rulin

    Thanks for you reply!
    1) The stored procedure has head
    CREATE OR REPLACE PROCEDURE X_OWNER.DISPLAY_ADDRESS
    cv_1 IN OUT SYS_REFCURSOR
    AS
    err_msg VARCHAR2(100);
    BEGIN
    --Adaptive Server has expanded all '*' elements in the following statement
    OPEN cv_1 FOR
    Select ...
    commit;
    EXCEPTION
    WHEN OTHERS THEN
    err_msg := SQLERRM;
    dbms_output.put_line (err_msg);
    ROLLBACK;
    END;
    If I only run select .. in DBArtisan, it display all 2030,000 rows in 3:44 minutes
    2) But when call stored procedure, it will take 80-100 minutes .
    3) The stored procedure is translated from sybase using migration tools, it's very simple, in sybase it just
    CREATE PROCEDURE X_OWNER.DISPLAY_ADDRESS
    AS
    BEGIN
    select ..
    The select part is exact same.
    4) The perl code is almost exact same, except the query sql:
    sybase verson: my $sql ="exec DISPLAY_ADDRESS";
    and no need bind the cursor parameter.
    This is batch job, we create a file with all information, and ftp to clients everynight.
    Thanks!
    Rulin

  • Issue with result set of query

    I have the following tables:
    --soccer.soccer_optical_player_gm_stats
    --This is only sample data
    GAME_CODE    PLAYER_ID    NUMBER_OF_SPRINTS
    88884               84646                    55              
    88884               64646                    15  
    88884               55551                    35
    88884               88446                    10
    etc...--soccer.soccer_optical_team_gm_stats
    --This is only sample data
    GAME_CODE    TEAM_ID
    88884               13
    88884               13
    88884               15
    88884               13
    etc...--customer_data.cd_soccer_schedule
    --sample data
    GAME_DATE                     5/2/2009 7:30:00 PM
    GAME_CODE                     88884              
    GAME_CODE_1032                     2009050207
    HOME_TEAM_ID_1032              13
    HOME_TEAM_ID                     5360
    HOME_TEAM_NAME                     Los Angeles
    HOME_TEAM_NICKNAME             Galaxy
    HOME_TEAM_ABBREV                LA
    AWAY_TEAM_ID_1032              15
    AWAY_TEAM_ID                     5362
    AWAY_TEAM_NAME                     New York
    AWAY_TEAM_NICKNAME          Red Bulls
    AWAY_TEAM_ABBREV               RBSo using the tables above i'm trying to sum the number of sprints for each team and output it...
    With the following code:
    select          distinct
                     sch.game_date,
                     tm.team_id,
                     sch.game_code,
                     sch.game_code_1032,
                     sch.home_team_id_1032,
                     sch.home_team_id,
                     sch.home_team_name,
                     sch.home_team_nickname,
                     sch.home_team_abbrev,
                     sch.away_team_id_1032,
                     sch.away_team_id,
                     sch.away_team_name,
                     sch.away_team_nickname,
                     sch.away_team_abbrev,
                     home_tm_sprints,
                     away_tm_sprints
           -- bulk collect into distance_run_leaders
            from 
                     customer_data.cd_soccer_schedule sch,
                     soccer.soccer_optical_team_gm_stats tm,
                           select distinct
                                  sum(plyr.number_of_sprints) as home_tm_sprints,
                                  sch.game_code,
                                  sch.home_team_name,
                                  sch.away_Team_name,
                                  sch.game_code,
                                  rank () over (order by sum(plyr.number_of_sprints) desc) as rankings_order_home
                           from
                                  soccer.soccer_optical_player_gm_stats plyr,
                                  soccer.soccer_optical_team_gm_stats tm,
                                  customer_data.cd_soccer_schedule sch
                           where  sch.season_id = 200921
                           and    tm.team_id = sch.home_team_id
                           and    sch.game_code = plyr.game_code
                           group by
                                  sch.game_code,
                                  sch.home_team_name,
                                  sch.away_Team_name,
                                  sch.game_code
                           order by rankings_order_home asc
                      ) home_team,
                        select distinct
                               sum(plyr.number_of_sprints) as away_tm_sprints,
                               sch.game_code,
                               sch.home_team_name,
                               sch.away_Team_name,
                               sch.game_code,
                               rank () over (order by sum(plyr.number_of_sprints) desc) as rankings_order_away
                        from
                               soccer.soccer_optical_player_gm_stats plyr,
                               soccer.soccer_optical_team_gm_stats tm,
                               customer_data.cd_soccer_schedule sch
                        where  sch.season_id = 200921
                        and    tm.team_id = sch.away_team_id
                        and    sch.game_code = plyr.game_code
                        group by
                               sch.game_code,
                               sch.home_team_name,
                               sch.away_Team_name,
                               sch.game_code
                       order by rankings_order_away asc
                    ) away_team
            where    sch.game_code = tm.game_code
            and      sch.season_id = 200921Issues:
    1. The output above returns multiple entries(like 30 or so) for each game_code (i only want two entries returned for each game_code).
    --(Only difference between the two result sets is the team_id, which ultimatly lets me know if it a result for the home or away team)
    Something like:
    GAME_DATE                     5/2/2009 7:30:00 PM        5/2/2009 7:30:00 PM
    TEAM_ID                                13                                  15 
    GAME_CODE                     88884                             88884                  
    GAME_CODE_1032                     2009050207                    2009050207
    HOME_TEAM_ID_1032               13                                  13  
    HOME_TEAM_ID                     5360                               5360
    HOME_TEAM_NAME                     Los Angeles                      Los Angeles
    HOME_TEAM_NICKNAME           Galaxy                              Galaxy
    HOME_TEAM_ABBREV               LA                                   LA
    AWAY_TEAM_ID_1032             15                                   15
    AWAY_TEAM_ID                     5362                               5362
    AWAY_TEAM_NAME                     New York                        New York
    AWAY_TEAM_NICKNAME               Red Bulls                         Red Bulls
    AWAY_TEAM_ABBREV                  RB                                  RB
    HOME_TM_SPRINTS                    152                                152
    AWAY_TM_SPRINTS                   452                                 4522. In addition to that, I'm also having an issue trying to figure out how to do a general ranking...in the from clause i'd so a seperate ranking for just the home teams and just the away the teams. I can't seem to figure out how to merge the rankings into one, and just have one general ranking.
    Edited by: user652714 on May 7, 2009 4:18 PM
    Edited by: user652714 on May 8, 2009 7:14 AM

    ok maybe I just need to give you a better understanding of what i'm trying to ultimatly do, and maybe that will help clarify things.
    In the original code I posted the following subquery in the from clause...
    select distinct
                                  sum(plyr.number_of_sprints) as home_tm_sprints,
                                  sch.game_code,
                                  sch.home_team_name as home_team_name,
                                  sch.game_code,
                                  rank () over (order by sum(plyr.number_of_sprints) desc) as rankings_order_home
                           from
                                  soccer.soccer_optical_player_gm_stats plyr,
                                  soccer.soccer_optical_team_gm_stats tm,
                                  customer_data.cd_soccer_schedule sch
                           where  sch.season_id = 200921
                           and    tm.team_id = sch.home_team_id
                           and    sch.game_code = plyr.game_code
                           group by
                                  sch.game_code,
                                  sch.home_team_name,
                                  sch.away_Team_name,
                                  sch.game_code
                           order by rankings_order_home asc the result set was this...
        HOME_TM_SPRINTS     GAME_CODE           HOME_TEAM_NAME                  GAME_CODE                  RANKINGS_ORDER_HOME
         576                 870988                New York                   870988                     1
         480                 870991                Chicago                 870991                     2
         435                 870945                 Chicago                 870945                     3
         416                 870983                 San Jose                 870983                     4
         402                 870961                 D.C.                 870961                     5
         322                 870972                 Columbus                 870972                     6
         236                 870957                 Columbus                 870957                     7
         215                 870986                 Kansas City                 870986                     8
         143                 870984                 Los Angeles                 870984                     9Here is the other subquery that i had originally posted:
      select distinct
                               sum(plyr.number_of_sprints) as away_tm_sprints,
                               sch.game_code,
                               sch.away_team_name away_team ,
                               sch.game_code,
                               rank () over (order by sum(plyr.number_of_sprints) desc) as rankings_order_away
                        from
                               soccer.soccer_optical_player_gm_stats plyr,
                               soccer.soccer_optical_team_gm_stats tm,
                               customer_data.cd_soccer_schedule sch
                        where  sch.season_id = 200921
                        and    tm.team_id = sch.away_team_id
                        and    sch.game_code = plyr.game_code
                        group by
                               sch.game_code,
                               sch.home_team_name,
                               sch.away_Team_name,
                               sch.game_code
                       order by rankings_order_away ascResult rest:
       AWAY_TM_SPRINTS                    GAME_CODE                AWAY_TEAM        GAME_CODE           RANKINGS_ORDER_AWAY
         483                     870972                     Chicago                     870972                                1
         435                     870945                     New York                870945                           2
         430                     870986                     D.C.                     870986                                3
         429                     870984                     New York                870984                           4
         402                     870961                     New England            870961                             5
         384                     870988                     San Jose                870988                           6
         320                     870991                     New England            870991                             7
         208                     870983                     Chivas USA                870983                           8
         118                     870957                     Colorado                870957                           9Final output that I want/trying to get
    TM_SPRINTS  GAME_CODE    TEAM           GAME_CODE       RANKINGS_ORDER
    576          870988          New York          870988          1
    483          870972          Chicago          870972          2
    480          870991          Chicago          870991          3
    435          870945          Chicago          870945          4
    435          870945          New York     870945          4
    430          870986          D.C.          870986          6
    429          870984          New York     870984          7
    416          870983          San Jose     870983          8
    402          870961          D.C.          870961          9
    402          870961          New England     870961          9
    384          870988          San Jose     870988          11
    322          870972          Columbus     870972          12
    320          870991          New England     870991          13
    236          870957          Columbus     870957          14
    215          870986          Kansas City     870986          15
    208          870983          Chivas USA     870983          16
    143          870984          Los Angeles     870984          17
    118          870957          Colorado     870957          18The above is what i'm going for...but if it's to difficult to merge the columns into one (instead of having a seprate column for home_team_* and away_team_* that's fine to.
    Edited by: user652714 on May 11, 2009 9:04 AM

  • RDBMS Event Generator Issue - JDBC Result Set Already Closed

    All -
    I am having a problem with an RDBMS event generator that has been exposed by our Load Testing. It seems that after the database is under load I get the following exception trace:
    <Aug 7, 2007 4:33:06 PM EDT> <Info> <EJB> <BEA-010213> <Message-Driven EJB: PollerMDB_SessionRqt_1186515408009's transaction was rolledback. The transact ion details are: Xid=BEA1-7F8C65474500D80A5B94(218826722),Status=Rolled back. [Reason=weblogic.transaction.internal.AppSetRollbackOnlyException],numRepli esOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=60,XAServerResourceInfo[JMS_Affinity_cgJMSStore_auto_1]=(ServerResourceInfo[JMS_Affi    nity_cgJMSStore_auto_1]=(state=rolledback,assigned=wli_int_1),xar=JMS_Affinity_cgJMSStore_auto_1,re-Registered = false),XAServerResourceInfo[ACS.Telcordi    a.XA.Pool]=(ServerResourceInfo[ACS.Telcordia.XA.Pool]=(state=rolledback,assigned=wli_int_1),xar=ACS.Telcordia.XA.Pool,re-Registered = false),XAServerReso urceInfo[JMS_Affinity_cgJMSStore_auto_2]=(ServerResourceInfo[JMS_Affinity_cgJMSStore_auto_2]=(state=rolledback,assigned=wli_int_2),xar=null,re-Registered = false),SCInfo[wli_int_domain+wli_int_2]=(state=rolledback),SCInfo[wli_int_domain+wli_int_1]=(state=rolledback),properties=({START_AND_END_THREAD_EQUAL    =false}),local properties=({weblogic.jdbc.jta.ACS.Telcordia.XA.Pool=weblogic.jdbc.wrapper.TxInfo@d0b2687}),OwnerTransactionManager=ServerTM[ServerCoordin    atorDescriptor=(CoordinatorURL=wli_int_1+128.241.233.85:8101+wli_int_domain+t3+, XAResources={weblogic.jdbc.wrapper.JTSXAResourceImpl, Affinity_cgPool, J    MS_Affinity_cgJMSStore_auto_1, ACSDispatcherCP_XA, ACS.Dispatcher.RDBMS.Pool, ACS.Telcordia.XA.Pool},NonXAResources={})],CoordinatorURL=wli_int_1+128.241 .233.85:8101+wli_int_domain+t3+).>
    <Aug 7, 2007 4:33:06 PM EDT> <Warning> <EJB> <BEA-010065> <MessageDrivenBean threw an Exception in onMessage(). The exception was:
    javax.ejb.EJBException: Error occurred while processing message received by this MDB. This MDB instance will be discarded after cleanup; nested exceptio n is: java.lang.Exception: Error occurred while preparing messages for Publication or while Publishing messages.
    javax.ejb.EJBException: Error occurred while processing message received by this MDB. This MDB instance will be discarded after cleanup; nested exception is: java.lang.Exception: Error occurred while preparing messages for Publication or while Publishing messages
    java.lang.Exception: Error occurred while preparing messages for Publication or while Publishing messages
    at com.bea.wli.mbconnector.rdbms.intrusive.RDBMSIntrusiveQryMDB.fetchUsingResultSet(RDBMSIntrusiveQryMDB.java:561)
    at com.bea.wli.mbconnector.rdbms.intrusive.RDBMSIntrusiveQryMDB.onMessage(RDBMSIntrusiveQryMDB.java:310)
    at weblogic.ejb20.internal.MDListener.execute(MDListener.java:400)
    at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:333)
    at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:298)
    at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2698)
    at weblogic.jms.client.JMSSession.execute(JMSSession.java:2523)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    Caused by: java.sql.SQLException: Result set already closed
    at weblogic.jdbc.wrapper.ResultSet.checkResultSet(ResultSet.java:105)
    at weblogic.jdbc.wrapper.ResultSet.preInvocationHandler(ResultSet.java:67)
    at weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.next()Z(Unknown Source)
    at com.bea.wli.mbconnector.rdbms.intrusive.RDBMSIntrusiveQryMDB.handleResultSet(RDBMSIntrusiveQryMDB.java:611)
    at com.bea.wli.mbconnector.rdbms.intrusive.RDBMSIntrusiveQryMDB.fetchUsingResultSet(RDBMSIntrusiveQryMDB.java:514)
    ... 8 more
    javax.ejb.EJBException: Error occurred while processing message received by this MDB. This MDB instance will be discarded after cleanup; nested exception is: java.lang.Exception: Error occurred while preparing messages for Publication or while Publishing messages
    at com.bea.wli.mbconnector.rdbms.intrusive.RDBMSIntrusiveQryMDB.onMessage(RDBMSIntrusiveQryMDB.java:346)
    at weblogic.ejb20.internal.MDListener.execute(MDListener.java:400)
    at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:333)
    at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:298)
    at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2698)
    at weblogic.jms.client.JMSSession.execute(JMSSession.java:2523)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    >
    I have tried several things and had my team do research but we have not been able to find an answer to the problem.
    If anyone can offer any insight as to why we might be getting this error it would be greatly appreciated. Thanks!

    i also have same error during load testing, mainly this error
    "Unexpected exception while enlisting XAConnection java.sql.SQLException"
    i tried rerunning after increasing connection pool sizes, transaction timeout, but no luck, marginal improvement in performance though
    also tried changing the default tracking levl to none, but no luck.
    i am with 8.1SP5, how about you ?
    do share if you are able to bypass these errors
    cheers

  • Result Set Causing out of memory issue

    Hi,
    I am having trouble to fix the memory issue caused by result set.I am using jdk 1.5 and sql server 2000 as the backend. When I try to execute a statement the result set returns minimum of 400,000 records and I have to go through each and every record one by one and put some business logic and update the rows and after updating around 1000 rows my application is going out of memory. Here is the original code:
    Statement stmt = con.createStatement();
    ResultSet   rs = st.executeQuery("Select * from  database tablename where field= 'done'");
                while(rs!=null && rs.next()){
                System.out.println("doing some logic here");
    rs.close();
    st.close();
    I am planning to fix the code in this way:
    Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
                          ResultSet.CONCUR_UPDATABLE);
    stmt.setFetchSize(50);
    ResultSet   rs = st.executeQuery("Select * from  database tablename where field= 'done'");
                while(rs!=null && rs.next()){
                System.out.println("doing some logic here");
    rs.close();
    st.close();But one of my colleague told me that setFetchSize() method does not work with sql server 2000 driver.
    So Please suggest me how to fix this issue. I am sure there will be a way to do this but I am just not aware of it.
    Thanks for your help in advance.

    Here is the full-fledged code.There is Team Connect and Top Link Api being used. The code is already been developed and its working for 2-3 hours and then it fails.I just have to fix the memory issue. Please suggest me something:
    Statement stmt = con.createStatement();
    ResultSet   rs = st.executeQuery("Select * from  database tablename where field= 'done'");
                while(rs!=null && rs.next()){
                 /where vo is the value object obtained from the rs row by row     
                if (updateInfo(vo, user)){
                               logger.info("updated : "+ rs.getString("number_string"));
                               projCount++;
    rs.close();
    st.close();
    private boolean updateInfo(CostCenter vo, YNUser tcUser) {
              boolean updated;
              UnitOfWork unitOfWork;
              updated = false;
              unitOfWork = null;
              List projList_m = null;
              try {
                   logger.info("Before vo.getId() HERE i AM" + vo.getId());
                   unitOfWork = FNClientSessionManager.acquireUnitOfWork(tcUser);
                   ExpressionBuilder expressionBuilder = new ExpressionBuilder();
                   Expression ex1 = expressionBuilder.get("application")
                             .get("projObjectDefinition").get("uniqueCode").equal(
                                       "TABLE-NAME");
                   Expression ex2 = expressionBuilder.get("primaryKey")
                             .equal(vo.getPrimaryKey());// primaryKey;
                   Expression finalExpression = ex1.and(ex2);
                   ReadAllQuery projectQuery = new ReadAllQuery(FQUtility
                             .classForEntityName("EntryTable"), finalExpression);
                   List projList = (List) unitOfWork.executeQuery(projectQuery);
                   logger.info("list value1" + projList.size());
                   TNProject project_hist = (TNProject) projList.get(0); // primary key
                   // value
                   logger.info("vo.getId1()" + vo.getId());
                   BNDetail detail = project_hist.getDetailForKey("TABLE-NAME");
                   project_hist.setNumberString(project_hist.getNumberString());
                   project_hist.setName(project_hist.getName());
                   String strNumberString = project_hist.getNumberString();
                   TNHistory history = FNHistFactory.createHistory(project_hist,
                             "Proj Update");
                   history.addDetail("HIST_TABLE-NAME");
                   history.setDefaultCategory("HIST_TABLE-NAME");
                   BNDetail histDetail = history.getDetailForKey("HIST_TABLE-NAME");
                   String strName = project_hist.getName();
                   unitOfWork.registerNewObject(histDetail);
                   setDetailCCGSHistFields(strNumberString, strName, detail,
                             histDetail);
                   logger.info("No Issue");
                   TNProject project = (TNProject) projList.get(0);
                   project.setName(vo.getName());
                   logger.info("vo.getName()" + vo.getName());
                   project.setNumberString(vo.getId());
                   BNDetail detailObj = project.getDetailForKey("TABLE-NAME"); // required
                   setDetailFields(vo, detailObj);//this method gets the value from vo and sets in the detail_up object
                   FNClientSessionManager.commit(unitOfWork);
                   updated = true;
                   unitOfWork.release();
              } catch (Exception e) {
                   logger.warn("update: caused exception, "
                             + e.getMessage());
                   unitOfWork.release();
              return updated;
         }Now I have tried to change little bit in the code. And I added the following lines:
                        updated = true;
                     FNClientSessionManager.release(unitOfWork);
                     project_hist=null;
                     detail=null;
                     history=null;
                     project=null;
                     detailObj=null;
                        unitOfWork.release();
                        unitOfWork=null;
                     expressionBuilder=null;
                     ex1=null;
                     ex2=null;
                     finalExpression=null;
    and also I added the code to request the Garbage collector after every 5th update:
    if (updateInfo(vo, user)){
                               logger.info("project update : "+ rs.getString("number_string"));
                               projCount++;
                               //call garbage collector every 5th record update
                               if(projCount%5==0){
                                    System.gc();
                                    logger.debug("Called Garbage Collectory on "+projCount+"th update");
                          }But now the code wont even update the single record. So please look into the code and suggest me something so that I can stop banging my head against the wall.

  • Performance issue in linux while using set with URL object

    Hi,
    I am facing performance issue while using Set(HashSet) with URL object on linux. But it is running perfectly on windows.
    I am using
    set.contains(urlObject)
    Above particular statement is taking 40 sec on Linux, and only a fraction of ms on windows.
    I have checked the jre version on both OS. It is the same version (jre6)
    on both the OS.
    Could anyone please tell me what is the exact reason, why the same statement is taking more time on linux than windows.
    Thanks & Regards
    Naveen

    jtahlborn wrote:
    I believe the URL hashCode/equals implementations have some /tricky behavior which involves network access in order to run (doing hostname lookups and the like). you may want to either use simple Strings, or possibly the URI class (i think it fixed some of this behavior, although i could be wrong).The second new thing I have learned today. I was wrong in reply # 1 because looking at the URL code for 1.6 I see that the hash code is generated from the IP address and this has a lazy evaluation. Each URL placed in a HashMap (or other hash based collection) requires a DNS lookup the first time the hash code is used.
    P.S. 40 seconds does seem a long time for a DNS lookup!
    Edited by: sabre150 on Feb 13, 2008 3:40 PM

  • Improving result set performance

    I am getting really poor performance on returning a resultset from an oracle database with JDBC. We've tested the queries on the database side and they are lightning fast. I've tried messing with the fetchsize but nothing I do improves performance. The process is fairly simple. I am calling a remote procedure:
    CallableStatement callStmt = conn.prepareCall(query);
                   callStmt.registerOutParameter(1, OracleTypes.CURSOR);
                   callStmt.setString (2, id);
                   callStmt.execute();
                   // return the result set
                   ResultSet rset = (ResultSet)callStmt.getObject(1);
                   // loop through rows and read in data points
                   while (rset.next()) {
                        DataPoint data = new DataPoint();
                        data.setPoint1(rset.getTimestamp(2));
                        data.setPoint2(rset.getLong(3));
                        array.add(data);
                   callStmt.close();     
    Its taking 10-15 seconds to read in 1000 records. It needs to read in many more rows than that, but I had to pair down the query just to get it to a reasonable amount of time for debugging. Thanks for any help you can offer.

    I am getting really poor performance on returning a resultset from an oracle database with JDBC. We've tested the queries on the database side and they are lightning fast. I've tried messing with the fetchsize but nothing I do improves performance. The process is fairly simple. I am calling a remote procedure:
    CallableStatement callStmt = conn.prepareCall(query);
                   callStmt.registerOutParameter(1, OracleTypes.CURSOR);
                   callStmt.setString (2, id);
                   callStmt.execute();
                   // return the result set
                   ResultSet rset = (ResultSet)callStmt.getObject(1);
                   // loop through rows and read in data points
                   while (rset.next()) {
                        DataPoint data = new DataPoint();
                        data.setPoint1(rset.getTimestamp(2));
                        data.setPoint2(rset.getLong(3));
                        array.add(data);
                   callStmt.close();     
    Its taking 10-15 seconds to read in 1000 records. It needs to read in many more rows than that, but I had to pair down the query just to get it to a reasonable amount of time for debugging. Thanks for any help you can offer.

  • Interested by performance issue ?  Read this !  If you can explain, you're a master Jedi !

    This is the question we will try to answer...
    What si the bottle neck (hardware) of Adobe Premiere Pro CS6
    I used PPBM5 as a benchmark testing template.
    All the data and log as been collected using performance counter
    First of all, describe my computer...
    Operating System
    Microsoft Windows 8 Pro 64-bit
    CPU
    Intel Xeon E5 2687W @ 3.10GHz
    Sandy Bridge-EP/EX 32nm Technology
    RAM
    Corsair Dominator Platinum 64.0 GB DDR3
    Motherboard
    EVGA Corporation Classified SR-X
    Graphics
    PNY Nvidia Quadro 6000
    EVGA Nvidia GTX 680   // Yes, I created bench stats for both card
    Hard Drives
    16.0GB Romex RAMDISK (RAID)
    556GB LSI MegaRAID 9260-8i SATA3 6GB/s 5 disks with Fastpath Chip Installed (RAID 0)
    I have other RAID installed, but not relevant for the present post...
    PSU
    Cosair 1000 Watts
    After many days of tests, I wanna share my results with community and comment them.
    CPU Introduction
    I tested my cpu and pushed it at maximum speed to understand where is the limit, can I reach this limit and I've logged precisely all result in graph (See pictures 1).
    Intro : I tested my E5-XEON 2687W (8 Cores Hyperthread - 16 threads) to know if programs can use the maximum of it.  I used Prime 95 to get the result.  // I know this seem to be ordinary, but you will understand soon...
    The result : Yes, I can get 100% of my CPU with 1 program using 20 threads in parallel.  The CPU gives everything it can !
    Comment : I put 3 IO (cpu, disk, ram) on the graph of my computer during the test...
    (picture 1)
    Disk Introduction
    I tested my disk and pushed it at maximum speed to understand where is the limit and I've logged precisely all result in graph (See pictures 2).
    Intro : I tested my RAID 0 556GB (LSI MegaRAID 9260-8i SATA3 6GB/s 5 disks with Fastpath Chip Installed) to know if I can reach the maximum % disk usage (0% idle Time)
    The result : As you can see in picture 2, yes, I can get the max of my drive at ~ 1.2 Gb/sec read/write steady !
    Comment : I put 3 IO (cpu, disk, ram) on the graph of my computer during the test to see the impact of transfering many Go of data during ~10 sec...
    (picture 2)
    Now, I know my limits !  It's time to enter deeper in the subject !
    PPBM5 (H.264) Result
    I rendered the sequence (H.264) using Adobe Media Encoder.
    The result :
    My CPU is not used at 100%, the turn around 50%
    My Disk is totally idle !
    All the process usage are idle except process of (Adobe Media Encoder)
    The transfert rate seem to be a wave (up and down).  Probably caused by (Encrypt time....  write.... Encrypt time.... write...)  // It's ok, ~5Mb/sec during transfert rate !
    CPU Power management give 100% of clock to CPU during the encoding process (it's ok, the clock is stable during process).
    RAM, more than enough !  39 Go RAM free after the test !  // Excellent
    ~65 thread opened by Adobe Media Encoder (Good, thread is the sign that program try to using many cores !)
    GPU Load on card seem to be a wave also ! (up and down)  ~40% usage of GPU during the process of encoding.
    GPU Ram get 1.2Go of RAM (But with GTX 680, no problem and Quadro 6000 with 6 GB RAM, no problem !)
    Comment/Question : CPU is free (50%), disks are free (99%), GPU is free (60%), RAM is free (62%), my computer is not pushed at limit during the encoding process.  Why ????  Is there some time delay in the encoding process ?
    Other : Quadro 6000 & GTX 680 gives the same result !
    (picture 3)
    PPBM5 (Disk Test) Result (RAID LSI)
    I rendered the sequence (Disk Test) using Adobe Media Encoder on my RAID 0 LSI disk.
    The result :
    My CPU is not used at 100%
    My Disk wave and wave again, but far far from the limit !
    All the process usage are idle except process of (Adobe Media Encoder)
    The transfert rate wave and wave again (up and down).  Probably caused by (Buffering time....  write.... Buffering time.... write...)  // It's ok, ~375Mb/sec peak during transfert rate !  Easy !
    CPU Power management give 100% of clock to CPU during the encoding process (it's ok, the clock is stable during process).
    RAM, more than enough !  40.5 Go RAM free after the test !  // Excellent
    ~48 thread opened by Adobe Media Encoder (Good, thread is the sign that program try to using many cores !)
    GPU Load on card = 0 (This kind of encoding is GPU irrelevant)
    GPU Ram get 400Mb of RAM (No usage for encoding)
    Comment/Question : CPU is free (65%), disks are free (60%), GPU is free (100%), RAM is free (63%), my computer is not pushed at limit during the encoding process.  Why ????  Is there some time delay in the encoding process ?
    (picture 4)
    PPBM5 (Disk Test) Result (Direct in RAMDrive)
    I rendered the same sequence (Disk Test) using Adobe Media Encoder directly in my RamDrive
    Comment/Question : Look at the transfert rate under (picture 5).  It's exactly the same speed than with my RAID 0 LSI controller.  Impossible !  Look in the same picture the transfert rate I can reach with the ramdrive (> 3.0 Gb/sec steady) and I don't go under 30% of disk usage.  CPU is idle (70%), Disk is idle (100%), GPU is idle (100%) and RAM is free (63%).  // This kind of results let me REALLY confused.  It's smell bug and big problem with hardware and IO usage in CS6 !
    (picture 5)
    PPBM5 (MPEG-DVD) Result
    I rendered the sequence (MPEG-DVD) using Adobe Media Encoder.
    The result :
    My CPU is not used at 100%
    My Disk is totally idle !
    All the process usage are idle except process of (Adobe Media Encoder)
    The transfert rate wave and wave again (up and down).  Probably caused by (Encoding time....  write.... Encoding time.... write...)  // It's ok, ~2Mb/sec during transfert rate !  Real Joke !
    CPU Power management give 100% of clock to CPU during the encoding process (it's ok, the clock is stable during process).
    RAM, more than enough !  40 Go RAM free after the test !  // Excellent
    ~80 thread opened by Adobe Media Encoder (Lot of thread, but it's ok in multi-thread apps!)
    GPU Load on card = 100 (This use the maximum of my GPU)
    GPU Ram get 1Gb of RAM
    Comment/Question : CPU is free (70%), disks are free (98%), GPU is loaded (MAX), RAM is free (63%), my computer is pushed at limit during the encoding process for GPU only.  Now, for this kind of encoding, the speed limit is affected by the slower IO (Video Card GPU)
    Other : Quadro 6000 is slower than GTX 680 for this kind of encoding (~20 s slower than GTX).
    (picture 6)
    Encoding single clip FULL HD AVCHD to H.264 Result (Premiere Pro CS6)
    You can look the result in the picture.
    Comment/Question : CPU is free (55%), disks are free (99%), GPU is free (90%), RAM is free (65%), my computer is not pushed at limit during the encoding process.  Why ????   Adobe Premiere seem to have some bug with thread management.  My hardware is idle !  I understand AVCHD can be very difficult to decode, but where is the waste ?  My computer want, but the software not !
    (picture 7)
    Render composition using 3D Raytracer in After Effects CS6
    You can look the result in the picture.
    Comment : GPU seems to be the bottle neck when using After Effects.  CPU is free (99%), Disks are free (98%), Memory is free (60%) and it depend of the setting and type of project.
    Other : Quadro 6000 & GTX 680 gives the same result in time for rendering the composition.
    (picture 8)
    Conclusion
    There is nothing you can do (I thing) with CS6 to get better performance actually.  GTX 680 is the best (Consumer grade card) and the Quadro 6000 is the best (Profressional card).  Both of card give really similar result (I will probably return my GTX 680 since I not really get any better performance).  I not used Tesla card with my Quadro, but actually, both, Premiere Pro & After Effects doesn't use multi GPU.  I tried to used both card together (GTX & Quadro), but After Effects gives priority to the slower card (In this case, the GTX 680)
    Premiere Pro, I'm speechless !  Premiere Pro is not able to get max performance of my computer.  Not just 10% or 20%, but average 60%.  I'm a programmor, multi-threadling apps are difficult to manage and I can understand Adobe's programmor.  But actually, if anybody have comment about this post, tricks or any kind of solution, you can comment this post.  It's seem to be a bug...
    Thank you.

    Patrick,
    I can't explain everything, but let me give you some background as I understand it.
    The first issue is that CS6 has a far less efficient internal buffering or caching system than CS5/5.5. That is why the MPEG encoding in CS6 is roughly 2-3 times slower than the same test with CS5. There is some 'under-the-hood' processing going on that causes this significant performance loss.
    The second issue is that AME does not handle regular memory and inter-process memory very well. I have described this here: Latest News
    As to your test results, there are some other noteworthy things to mention. 3D Ray tracing in AE is not very good in using all CUDA cores. In fact it is lousy, it only uses very few cores and the threading is pretty bad and does not use the video card's capabilities effectively. Whether that is a driver issue with nVidia or an Adobe issue, I don't know, but whichever way you turn it, the end result is disappointing.
    The overhead AME carries in our tests is something we are looking into and the next test will only use direct export and no longer the AME queue, to avoid some of the problems you saw. That entails other problems for us, since we lose the capability to check encoding logs, but a solution is in the works.
    You see very low GPU usage during the H.264 test, since there are only very few accelerated parts in the timeline, in contrast to the MPEG2-DVD test, where there is rescaling going on and that is CUDA accelerated. The disk I/O test suffers from the problems mentioned above and is the reason that my own Disk I/O results are only 33 seconds with the current test, but when I extend the duration of that timeline to 3 hours, the direct export method gives me 22 seconds, although the amount of data to be written, 37,092 MB has increased threefold. An effective write speed of 1,686 MB/s.
    There are a number of performance issues with CS6 that Adobe is aware of, but whether they can be solved and in what time, I haven't the faintest idea.
    Just my $ 0.02

  • RE: Case 59063: performance issues w/ C TLIB and Forte3M

    Hi James,
    Could you give me a call, I am at my desk.
    I had meetings all day and couldn't respond to your calls earlier.
    -----Original Message-----
    From: James Min [mailto:jminbrio.forte.com]
    Sent: Thursday, March 30, 2000 2:50 PM
    To: Sharma, Sandeep; Pyatetskiy, Alexander
    Cc: sophiaforte.com; kenlforte.com; Tenerelli, Mike
    Subject: Re: Case 59063: performance issues w/ C TLIB and Forte 3M
    Hello,
    I just want to reiterate that we are very committed to working on
    this issue, and that our goal is to find out the root of the problem. But
    first I'd like to narrow down the avenues by process of elimination.
    Open Cursor is something that is commonly used in today's RDBMS. I
    know that you must test your query in ISQL using some kind of execute
    immediate, but Sybase should be able to handle an open cursor. I was
    wondering if your Sybase expert commented on the fact that the server is
    not responding to commonly used command like 'open cursor'. According to
    our developer, we are merely following the API from Sybase, and open cursor
    is not something that particularly slows down a query for several minutes
    (except maybe the very first time). The logs show that Forte is waiting for
    a status from the DB server. Actually, using prepared statements and open
    cursor ends up being more efficient in the long run.
    Some questions:
    1) Have you tried to do a prepared statement with open cursor in your ISQL
    session? If so, did it have the same slowness?
    2) How big is the table you are querying? How many rows are there? How many
    are returned?
    3) When there is a hang in Forte, is there disk-spinning or CPU usage in
    the database server side? On the Forte side? Absolutely no activity at all?
    We actually have a Sybase set-up here, and if you wish, we could test out
    your database and Forte PEX here. Since your queries seems to be running
    off of only one table, this might be the best option, as we could look at
    everything here, in house. To do this:
    a) BCP out the data into a flat file. (character format to make it portable)
    b) we need a script to create the table and indexes.
    c) the Forte PEX file of the app to test this out.
    d) the SQL staement that you issue in ISQL for comparison.
    If the situation warrants, we can give a concrete example of
    possible errors/bugs to a developer. Dial-in is still an option, but to be
    able to look at the TOOL code, database setup, etc. without the limitations
    of dial-up may be faster and more efficient. Please let me know if you can
    provide this, as well as the answers to the above questions, or if you have
    any questions.
    Regards,
    At 08:05 AM 3/30/00 -0500, Sharma, Sandeep wrote:
    James, Ken:
    FYI, see attached response from our Sybase expert, Dani Sasmita. She has
    already tried what you suggested and results are enclosed.
    ++
    Sandeep
    -----Original Message-----
    From: SASMITA, DANIAR
    Sent: Wednesday, March 29, 2000 6:43 PM
    To: Pyatetskiy, Alexander
    Cc: Sharma, Sandeep; Tenerelli, Mike
    Subject: Re: FW: Case 59063: Select using LIKE has performance
    issues
    w/ CTLIB and Forte 3M
    We did that trick already.
    When it is hanging, I can see what is doing.
    It is doing OPEN CURSOR. But not clear the exact statement of the cursor
    it is trying to open.
    When we run the query directly to Sybase, not using Forte, it is clearly
    not opening any cursor.
    And running it directly to Sybase many times, the response is always
    consistently fast.
    It is just when the query runs from Forte to Sybase, it opens a cursor.
    But again, in the Forte code, Alex is not using any cursor.
    In trying to capture the query,we even tried to audit any statementcoming
    to Sybase. Same thing, just open cursor. No cursor declaration anywhere.==============================================
    James Min
    Technical Support Engineer - Forte Tools
    Sun Microsystems, Inc.
    1800 Harrison St., 17th Fl.
    Oakland, CA 94612
    james.minsun.com
    510.869.2056
    ==============================================
    Support Hotline: 510-451-5400
    CUSTOMERS open a NEW CASE with Technical Support:
    http://www.forte.com/support/case_entry.html
    CUSTOMERS view your cases and enter follow-up transactions:
    http://www.forte.com/support/view_calls.html

    Earthlink wrote:
    Contrary to my understanding, the <font face="courier">with_pipeline</font> procedure runs 6 time slower than the legacy <font face="courier">no_pipeline</font> procedure. Am I missing something? Well, we're missing a lot here.
    Like:
    - a database version
    - how did you test
    - what data do you have, how is it distributed, indexed
    and so on.
    If you want to find out what's going on then use a TRACE with wait events.
    All nessecary steps are explained in these threads:
    HOW TO: Post a SQL statement tuning request - template posting
    http://oracle-randolf.blogspot.com/2009/02/basic-sql-statement-performance.html
    Another nice one is RUNSTATS:
    http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551378329289980701

  • Performance Issues with Photoshop CS6 64-Bit

    Hello -
    Issue at hand: over the course of the last few weeks, I have noticed significant issues with performance since the last update to PS CS6 via the Adobe Application Manager, ranging from unexpected shut downs to bringing my workstation to a crawl (literally, my cursor seems to crawl across my displays). I'm curious as to if anyone else is experiencing these issues, or if there is a solution I have not yet tried. Here is a list of actions that result in these performance issues - there are likely more that I have either not experienced due to my frustration, or have not documented as occuring multiple times:
    Opening files - results in hanging process, takes 3-10 seconds to resolve
    Pasting from clipboard - results in hanging process, takes 3-10 seconds to resolve
    Saving files - takes 3-10 seconds to open the dialog, another 3-10 seconds to return to normal window (saving a compressed PNG)
    Eyedropper tool - will either crash Photoshop to desktop, or take 5-15 seconds to load
    Attempting to navigate any menu - will either crash Photoshop to desktop, or take 5-15 seconds to load
    Attempts I've taken to resolve this matter, which have failed:
    Uninstalled all fonts that I have added since the last update (this was a pain in the ***, thank you Windows explorer for being glitchy)
    Uninstall application and reinstall application
    Use 32-bit edition
    Changing process priority to Above Normal
    Confirm process affinity to all available CPU cores
    Change configuration of Photoshop performance options
    61% of memory is available to Photoshop to use (8969 MB)
    History states: 20; Cache levels: 6; Cache tile size: 1024K
    Scratch disks: active on production SSD, ~10GB space available
    Dedicated graphics processor is selected (2x nVidia cards in SLI)
    System Information:
    Intel i7 2600K @ 3.40GHz
    16GB DDR3, Dual Channel RAM
    2x nVidia GeForce GTS 450 cards, 1GB each
    Windows 7 Professional 64-bit
    Adobe Creative Cloud
    This issue is costing me time I could be working every day, and I'm about ready to begin searching for alternatives and cancel my membership if I can't get this resolved.

    Adobe Photoshop Version: 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00) x64
    Operating System: Windows 7 64-bit
    Version: 6.1 Service Pack 1
    System architecture: Intel CPU Family:6, Model:10, Stepping:7 with MMX, SSE Integer, SSE FP, SSE2, SSE3, SSE4.1, SSE4.2, HyperThreading
    Physical processor count: 4
    Logical processor count: 8
    Processor speed: 3392 MHz
    Built-in memory: 16350 MB
    Free memory: 12070 MB
    Memory available to Photoshop: 14688 MB
    Memory used by Photoshop: 61 %
    Image tile size: 1024K
    Image cache levels: 6
    OpenGL Drawing: Enabled.
    OpenGL Drawing Mode: Basic
    OpenGL Allow Normal Mode: True.
    OpenGL Allow Advanced Mode: True.
    OpenGL Allow Old GPUs: Not Detected.
    OpenCL Version: 1.1 CUDA 4.2.1
    OpenGL Version: 3.0
    Video Rect Texture Size: 16384
    OpenGL Memory: 1024 MB
    Video Card Vendor: NVIDIA Corporation
    Video Card Renderer: GeForce GTS 450/PCIe/SSE2
    Display: 2
    Display Bounds: top=0, left=1920, bottom=1080, right=3840
    Display: 1
    Display Bounds: top=0, left=0, bottom=1080, right=1920
    Video Card Number: 3
    Video Card: NVIDIA GeForce GTS 450
    Driver Version: 9.18.13.1106
    Driver Date: 20130118000000.000000-000
    Video Card Driver: nvd3dumx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvd3dum,nvwgf2um,nvwgf2um
    Video Mode:
    Video Card Caption: NVIDIA GeForce GTS 450
    Video Card Memory: 1024 MB
    Video Card Number: 2
    Video Card: LogMeIn Mirror Driver
    Driver Version: 7.1.542.0
    Driver Date: 20060522000000.000000-000
    Video Card Driver:
    Video Mode: 1920 x 1080 x 4294967296 colors
    Video Card Caption: LogMeIn Mirror Driver
    Video Card Memory: 0 MB
    Video Card Number: 1
    Video Card: NVIDIA GeForce GTS 450
    Driver Version: 9.18.13.1106
    Driver Date: 20130118000000.000000-000
    Video Card Driver: nvd3dumx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvd3dum,nvwgf2um,nvwgf2um
    Video Mode: 1920 x 1080 x 4294967296 colors
    Video Card Caption: NVIDIA GeForce GTS 450
    Video Card Memory: 1024 MB
    Serial number: 90970233273769828003
    Application folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\
    Temporary file path: C:\Users\ANDREW~1\AppData\Local\Temp\
    Photoshop scratch has async I/O enabled
    Scratch volume(s):
      C:\, 111.8G, 7.68G free
    Required Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Required\
    Primary Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Plug-ins\
    Additional Plug-ins folder: not set
    Installed components:
       ACE.dll   ACE 2012/06/05-15:16:32   66.507768   66.507768
       adbeape.dll   Adobe APE 2012/01/25-10:04:55   66.1025012   66.1025012
       AdobeLinguistic.dll   Adobe Linguisitc Library   6.0.0  
       AdobeOwl.dll   Adobe Owl 2012/09/10-12:31:21   5.0.4   79.517869
       AdobePDFL.dll   PDFL 2011/12/12-16:12:37   66.419471   66.419471
       AdobePIP.dll   Adobe Product Improvement Program   7.0.0.1686  
       AdobeXMP.dll   Adobe XMP Core 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPFiles.dll   Adobe XMP Files 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPScript.dll   Adobe XMP Script 2012/02/06-14:56:27   66.145661   66.145661
       adobe_caps.dll   Adobe CAPS   6,0,29,0  
       AGM.dll   AGM 2012/06/05-15:16:32   66.507768   66.507768
       ahclient.dll    AdobeHelp Dynamic Link Library   1,7,0,56  
       aif_core.dll   AIF   3.0   62.490293
       aif_ocl.dll   AIF   3.0   62.490293
       aif_ogl.dll   AIF   3.0   62.490293
       amtlib.dll   AMTLib (64 Bit)   6.0.0.75 (BuildVersion: 6.0; BuildDate: Mon Jan 16 2012 18:00:00)   1.000000
       ARE.dll   ARE 2012/06/05-15:16:32   66.507768   66.507768
       AXE8SharedExpat.dll   AXE8SharedExpat 2011/12/16-15:10:49   66.26830   66.26830
       AXEDOMCore.dll   AXEDOMCore 2011/12/16-15:10:49   66.26830   66.26830
       Bib.dll   BIB 2012/06/05-15:16:32   66.507768   66.507768
       BIBUtils.dll   BIBUtils 2012/06/05-15:16:32   66.507768   66.507768
       boost_date_time.dll   DVA Product   6.0.0  
       boost_signals.dll   DVA Product   6.0.0  
       boost_system.dll   DVA Product   6.0.0  
       boost_threads.dll   DVA Product   6.0.0  
       cg.dll   NVIDIA Cg Runtime   3.0.00007  
       cgGL.dll   NVIDIA Cg Runtime   3.0.00007  
       CIT.dll   Adobe CIT   2.1.0.20577   2.1.0.20577
       CoolType.dll   CoolType 2012/06/05-15:16:32   66.507768   66.507768
       data_flow.dll   AIF   3.0   62.490293
       dvaaudiodevice.dll   DVA Product   6.0.0  
       dvacore.dll   DVA Product   6.0.0  
       dvamarshal.dll   DVA Product   6.0.0  
       dvamediatypes.dll   DVA Product   6.0.0  
       dvaplayer.dll   DVA Product   6.0.0  
       dvatransport.dll   DVA Product   6.0.0  
       dvaunittesting.dll   DVA Product   6.0.0  
       dynamiclink.dll   DVA Product   6.0.0  
       ExtendScript.dll   ExtendScript 2011/12/14-15:08:46   66.490082   66.490082
       FileInfo.dll   Adobe XMP FileInfo 2012/01/17-15:11:19   66.145433   66.145433
       filter_graph.dll   AIF   3.0   62.490293
       hydra_filters.dll   AIF   3.0   62.490293
       icucnv40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       icudt40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       image_compiler.dll   AIF   3.0   62.490293
       image_flow.dll   AIF   3.0   62.490293
       image_runtime.dll   AIF   3.0   62.490293
       JP2KLib.dll   JP2KLib 2011/12/12-16:12:37   66.236923   66.236923
       libifcoremd.dll   Intel(r) Visual Fortran Compiler   10.0 (Update A)  
       libmmd.dll   Intel(r) C Compiler, Intel(r) C++ Compiler, Intel(r) Fortran Compiler   12.0  
       LogSession.dll   LogSession   2.1.2.1681  
       mediacoreif.dll   DVA Product   6.0.0  
       MPS.dll   MPS 2012/02/03-10:33:13   66.495174   66.495174
       msvcm80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcm90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcp100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcp80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcp90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcr100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcr80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcr90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       pdfsettings.dll   Adobe PDFSettings   1.04  
       Photoshop.dll   Adobe Photoshop CS6   CS6  
       Plugin.dll   Adobe Photoshop CS6   CS6  
       PlugPlug.dll   Adobe(R) CSXS PlugPlug Standard Dll (64 bit)   3.0.0.383  
       PSArt.dll   Adobe Photoshop CS6   CS6  
       PSViews.dll   Adobe Photoshop CS6   CS6  
       SCCore.dll   ScCore 2011/12/14-15:08:46   66.490082   66.490082
       ScriptUIFlex.dll   ScriptUIFlex 2011/12/14-15:08:46   66.490082   66.490082
       svml_dispmd.dll   Intel(r) C Compiler, Intel(r) C++ Compiler, Intel(r) Fortran Compiler   12.0  
       tbb.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       tbbmalloc.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       updaternotifications.dll   Adobe Updater Notifications Library   6.0.0.24 (BuildVersion: 1.0; BuildDate: BUILDDATETIME)   6.0.0.24
       WRServices.dll   WRServices Friday January 27 2012 13:22:12   Build 0.17112   0.17112
    Required plug-ins:
       3D Studio 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Accented Edges 13.0
       Adaptive Wide Angle 13.0
       Angled Strokes 13.0
       Average 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Bas Relief 13.0
       BMP 13.0
       Camera Raw 8.1
       Camera Raw Filter 8.1
       Chalk & Charcoal 13.0
       Charcoal 13.0
       Chrome 13.0
       Cineon 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Clouds 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Collada 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Color Halftone 13.0
       Colored Pencil 13.0
       CompuServe GIF 13.0
       Conté Crayon 13.0
       Craquelure 13.0
       Crop and Straighten Photos 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Crop and Straighten Photos Filter 13.0
       Crosshatch 13.0
       Crystallize 13.0
       Cutout 13.0
       Dark Strokes 13.0
       De-Interlace 13.0
       Dicom 13.0
       Difference Clouds 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Diffuse Glow 13.0
       Displace 13.0
       Dry Brush 13.0
       Eazel Acquire 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Embed Watermark 4.0
       Entropy 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Extrude 13.0
       FastCore Routines 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Fibers 13.0
       Film Grain 13.0
       Filter Gallery 13.0
       Flash 3D 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Fresco 13.0
       Glass 13.0
       Glowing Edges 13.0
       Google Earth 4 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Grain 13.0
       Graphic Pen 13.0
       Halftone Pattern 13.0
       HDRMergeUI 13.0
       IFF Format 13.0
       Ink Outlines 13.0
       JPEG 2000 13.0
       Kurtosis 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Lens Blur 13.0
       Lens Correction 13.0
       Lens Flare 13.0
       Liquify 13.0
       Matlab Operation 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Maximum 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Mean 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Measurement Core 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Median 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Mezzotint 13.0
       Minimum 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       MMXCore Routines 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Mosaic Tiles 13.0
       Multiprocessor Support 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Neon Glow 13.0
       Note Paper 13.0
       NTSC Colors 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Ocean Ripple 13.0
       Oil Paint 13.0
       OpenEXR 13.0
       Paint Daubs 13.0
       Palette Knife 13.0
       Patchwork 13.0
       Paths to Illustrator 13.0
       PCX 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Photocopy 13.0
       Photoshop 3D Engine 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Picture Package Filter 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Pinch 13.0
       Pixar 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Plaster 13.0
       Plastic Wrap 13.0
       PNG 13.0
       Pointillize 13.0
       Polar Coordinates 13.0
       Portable Bit Map 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Poster Edges 13.0
       Radial Blur 13.0
       Radiance 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Range 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Read Watermark 4.0
       Reticulation 13.0
       Ripple 13.0
       Rough Pastels 13.0
       Save for Web 13.0
       ScriptingSupport 13.1.2
       Shear 13.0
       Skewness 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Smart Blur 13.0
       Smudge Stick 13.0
       Solarize 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Spatter 13.0
       Spherize 13.0
       Sponge 13.0
       Sprayed Strokes 13.0
       Stained Glass 13.0
       Stamp 13.0
       Standard Deviation 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       STL 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Sumi-e 13.0
       Summation 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Targa 13.0
       Texturizer 13.0
       Tiles 13.0
       Torn Edges 13.0
       Twirl 13.0
       Underpainting 13.0
       Vanishing Point 13.0
       Variance 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Variations 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Water Paper 13.0
       Watercolor 13.0
       Wave 13.0
       Wavefront|OBJ 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       WIA Support 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       Wind 13.0
       Wireless Bitmap 13.1.2 (13.1.2 20130105.r.224 2013/01/05:23:00:00)
       ZigZag 13.0
    Optional and third party plug-ins: NONE
    Plug-ins that failed to load: NONE
    Flash:
       Mini Bridge
       Kuler
    Installed TWAIN devices: NONE

  • Performance issue with brand new intel iMac extreme

    I am at a loss to explain a problem I've been having and I thought I might put it out to you guys.
    In September I purchased a macbook Pro (2.4 ghz, 4 GB RAM) to use in video editing with Final Cut Pro, and for the most part I've been thrilled. I use 1TB LaCie external drives connected via FW800, and perform Multiclip editing with 4-5 video streams at a time and only on occasion have dropped frames during the editing process.
    In December I determined that I needed to have an additional system, and thought a 2.8Ghz Intel iMac extreme would be an excellent choice, since for the same price I could get a little more power in the processor, more hard drive space and a bigger screen to work on. When we picked up the new system in the store (The Grove Apple Store in LA), we had them upgrade the memory to 4GB.
    Since day one we have had performance issues, including problems playing streaming and DVD video, severe delays mounting and unmounting drives (firewire and USB) and application images, and freezing while doing even simple tasks like printing or checking email. These problems occur even while there are no external drives are connected. I have none of these issues with the Macbook Pro, which has virtually an identical set of programs installed, and both running the same version of Leopard.
    I already took the original iMac back to the store, and they exchanged it, but did not have 4GB sets of RAM in stock so they took the RAM from the original machine and put it in the new one. They said if I continued to have problems then it was most likely the RAM and I should come back when they got more in stock. I DID have the same problems with the new machine, and took it back to the Apple Store and they swapped the memory. It seemed to improve the issue, but now I'm seeing the same severe performance issues again.
    All tech support can do is tell me to do a PRAM reset, which seems to improve things very temporarily (but that may be my imagination) or have me restart, which at least has the ability to make the printing of documents capable.
    What I'm wondering is if it is likely that the RAM is the issue and I just got another bad batch, or if the iMac has some weird glitch that isn't present in the macbook Pro...?? Or could I have possibly gotten 2 bad systems in a row? It's extremely frustrating, and I KNOW it shouldn't be this way! It's so bad I get better performance out of my single-core G5 tower! How do I get a good working system that operates like it should? Am I better off getting another Macbook Pro? I'd rather not for several reasons...
    I have xbench on both the MBP and the iMac and can provide test numbers if they'll help, as well as any other info.
    Thank you so much for reading my novella of a post and also for any insight you have!
    Best,
    Travis

    Hi!
    I got the same problem with my MacBook when it still was new in may 2006. It was supposed to be one of the faster Laptops around but it was soooo slow it drove me nuts. I can only advise to have a look if there is something hugging up your RAM and run some tests using these programs on your machine:
    Xbench:
    http://www.macupdate.com/info.php/id/10081
    MenuMeters:
    http://www.macupdate.com/info.php/id/10451
    If they show any unusual results you might have your problem...
    As to my problem with the MacBook: I did a complete re-install (writing the harddisk over with zeroes) and suddenly everything was just fine. (But be sure to back all your files before that, I learned this one the hard way.) I know it is just a standard answer, but it worked out for me this time...
    Hope this helps in some ways.
    Cheers,
    Rene

  • Performance Issue in a ABAP Report

    Hi All,
    I am facing a big performance issue in a abap program which produce the cash flow details our group of company. This is the logic I used to develop the report. (It is a SAP Script)
    - First I am getting the closed customer payment records from the table BSAD ( eg: - Type 'DZ')
    - Then I am getting the correcponding invoices from the BSAD using the same BELNR ( eg :- Type <> 'DZ')
    - Then checking the GL Entry (BSIS) for the correspongding records which select in the second stage.
    - In a Z tabel I am keeping the account list by grouping   seperate section ( Eg: - Customer recipts, fixed assets...etc).
    I have done the same thing to get the open Item balances also.
    Report is correct and running perfectly, but my issue is it's takeing long time to process. Because of this I made this report to run as a background job. But still it is taking such a long time. ( For Eg: - If 1000 records selected from the first stage, it will take about more than onr hour to process, which is not good enough to run in a live environment)
    Pls advice me how to improve the preformance of this.

    Hi Ravi,
    I am sorry I had problem in my internet connection yesterday, because of that i couldn't reply u. Here is my code. I don't is there any way to send the code as a attachement since it is a little bit big one. I am going to paste that here any way.
    Here zcashflow_matrix is the "Z" table where I am going to keep my account details by grouping.
    REPORT ZCASH_FLOW.
    INCLUDE <%_LIST>.
    *       Author             Thanura .......                            *
    TYPES   :BEGIN OF ty_voucher1,
              kunnr LIKE bseg-kunnr,
              dmbtr LIKE bseg-dmbtr,
              belnr LIKE bseg-belnr,
              hkont LIKE bseg-hkont,
              shkzg LIKE bseg-shkzg,
              xblnr LIKE bsad-xblnr,
              budat LIKE bsad-bldat,
              blart LIKE bsad-blart,
              bldat LIKE bsad-bldat,
              lifnr LIKE bseg-lifnr,
              END OF ty_voucher1.
    DATA     :it_voucher1 TYPE STANDARD TABLE OF ty_voucher1 ,
               wa_voucher1 TYPE ty_voucher1.
    DATA    : it_voucher2 TYPE STANDARD TABLE OF ty_voucher1,
               wa_voucher2 TYPE ty_voucher1.
    DATA    : it_voucher3 TYPE STANDARD TABLE OF ty_voucher1,
               wa_voucher3 TYPE ty_voucher1.
    Data : w_ITCPO type ITCPO.
    Data : w_ITCPP type ITCPP.
    DATA : w_Rcptamt LIKE bseg-dmbtr,
            w_Netamt LIKE bseg-dmbtr,
            w_IntIncomeAmt LIKE bseg-dmbtr,
            w_IntIncome LIKE bseg-dmbtr,
            w_FixedAmt LIKE bseg-dmbtr,
            w_fixedasst LIKE bseg-dmbtr,
            w_Sundry LIKE bseg-dmbtr,
            w_SundryAmt LIKE bseg-dmbtr,
            w_SuppayAmt LIKE bseg-dmbtr,
            w_Suppay LIKE bseg-dmbtr,
            w_SuppayAmt1 LIKE bseg-dmbtr,
            w_Suppay1 LIKE bseg-dmbtr,
            w_DutyAmt LIKE bseg-dmbtr,
            w_Duty LIKE bseg-dmbtr,
            w_SalaryAmt LIKE bseg-dmbtr,
            w_Salary LIKE bseg-dmbtr,
            w_TaxAmt LIKE bseg-dmbtr,
            w_Tax LIKE bseg-dmbtr,
            w_TaxAmt1 LIKE bseg-dmbtr,
            w_Tax1 LIKE bseg-dmbtr,
            w_SellAmt LIKE bseg-dmbtr,
            w_Sell LIKE bseg-dmbtr,
            w_AdminAmt LIKE bseg-dmbtr,
            w_Admin LIKE bseg-dmbtr,
            w_loanAmt LIKE bseg-dmbtr,
            w_loan LIKE bseg-dmbtr,
            w_ManAmt LIKE bseg-dmbtr,
            w_Man LIKE bseg-dmbtr,
            w_CapitalAmt LIKE bseg-dmbtr,
            w_Capital LIKE bseg-dmbtr,
            w_GroupAmt LIKE bseg-dmbtr,
            w_Group LIKE bseg-dmbtr,
            w_IntAmt LIKE bseg-dmbtr,
            w_Int LIKE bseg-dmbtr,
            w_InterAmt LIKE bseg-dmbtr,
            w_Inter LIKE bseg-dmbtr,
            w_AdPayAmt LIKE bseg-dmbtr,
            w_AdPay LIKE bseg-dmbtr,
            w_GTotal LIKE bseg-dmbtr,
            W_COMPANYNAME like zcompany-copmname.
    DATA : w_ORcptamt LIKE bseg-dmbtr,
            w_ONetamt LIKE bseg-dmbtr,
            w_OIntIncomeAmt LIKE bseg-dmbtr,
            w_OIntIncome LIKE bseg-dmbtr,
            w_OFixedAmt LIKE bseg-dmbtr,
            w_Ofixedasst LIKE bseg-dmbtr,
            w_OSundry LIKE bseg-dmbtr,
            w_OSundryAmt LIKE bseg-dmbtr,
            w_OSuppayAmt LIKE bseg-dmbtr,
            w_OSuppay LIKE bseg-dmbtr,
            w_OSuppayAmt1 LIKE bseg-dmbtr,
            w_OSuppay1 LIKE bseg-dmbtr,
            w_ODutyAmt LIKE bseg-dmbtr,
            w_ODuty LIKE bseg-dmbtr,
            w_OSalaryAmt LIKE bseg-dmbtr,
            w_OSalary LIKE bseg-dmbtr,
            w_OTaxAmt LIKE bseg-dmbtr,
            w_OTax LIKE bseg-dmbtr,
            w_OTaxAmt1 LIKE bseg-dmbtr,
            w_OTax1 LIKE bseg-dmbtr,
            w_OSellAmt LIKE bseg-dmbtr,
            w_OSell LIKE bseg-dmbtr,
            w_OAdminAmt LIKE bseg-dmbtr,
            w_OAdmin LIKE bseg-dmbtr,
            w_OloanAmt LIKE bseg-dmbtr,
            w_Oloan LIKE bseg-dmbtr,
            w_OManAmt LIKE bseg-dmbtr,
            w_OMan LIKE bseg-dmbtr,
            w_OCapitalAmt LIKE bseg-dmbtr,
            w_OCapital LIKE bseg-dmbtr,
            w_OGroupAmt LIKE bseg-dmbtr,
            w_OGroup LIKE bseg-dmbtr,
            w_OIntAmt LIKE bseg-dmbtr,
            w_OInt LIKE bseg-dmbtr,
            w_OInterAmt LIKE bseg-dmbtr,
            w_OInter LIKE bseg-dmbtr,
            w_OAdPayAmt LIKE bseg-dmbtr,
            w_OAdPay LIKE bseg-dmbtr.
    DATA : w_NNetamt LIKE bseg-dmbtr,
            w_NIntIncome LIKE bseg-dmbtr,
            w_Nfixedasst LIKE bseg-dmbtr,
            w_NSundry LIKE bseg-dmbtr,
            w_NSuppay LIKE bseg-dmbtr,
            w_NSuppay1 LIKE bseg-dmbtr,
            w_NDuty LIKE bseg-dmbtr,
            w_NSalary LIKE bseg-dmbtr,
            w_NTax LIKE bseg-dmbtr,
            w_NTax1 LIKE bseg-dmbtr,
            w_NSell LIKE bseg-dmbtr,
            w_NAdmin LIKE bseg-dmbtr,
            w_Nloan LIKE bseg-dmbtr,
            w_NMan LIKE bseg-dmbtr,
            w_NCapital LIKE bseg-dmbtr,
            w_NGroup LIKE bseg-dmbtr,
            w_NInt LIKE bseg-dmbtr,
            w_NInter LIKE bseg-dmbtr,
            w_NAdPay LIKE bseg-dmbtr.
    RANGES : r_bwart FOR  bsad-blart.
    TABLES: bsad.
    *       Internal tables          Begin with IT_                       *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS:      p_bukrs LIKE bsad-bukrs OBLIGATORY.
    SELECT-OPTIONS:  s_bldat FOR  bsad-bldat OBLIGATORY.
    * SELECT-OPTIONS:   s_hkont FOR bsad-hkont .
    PARAMETERS:      p_gjahr LIKE bkpf-gjahr OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1 .
    * PARAMETERS : w_local   TYPE char1 RADIOBUTTON GROUP g1 DEFAULT 'X'. .
    * PARAMETERS : w_curr  TYPE char1 RADIOBUTTON GROUP g1 .
    w_ITCPO-TDNEWID = 'X'.
    *w_itcpo-tdgetotf   = 'X'.
    *opern form
       CALL FUNCTION 'OPEN_FORM'
        EXPORTING
    *        APPLICATION                       = 'TX'
    *        ARCHIVE_INDEX                     =
    *        ARCHIVE_PARAMS                    =
    *         DEVICE                            = 'PRINTER'
    *        DIALOG                            = ' '
          form                                 = 'ZCASHFLOW_FORM1'
    *        LANGUAGE                          = SY-LANGU
             OPTIONS                           = w_ITCPO
    *        MAIL_SENDER                       =
    *        MAIL_RECIPIENT                    =
    *        MAIL_APPL_OBJECT                  =
    *        RAW_DATA_INTERFACE                = '*'
    *        SPONUMIV                          =
    *      IMPORTING
    *        LANGUAGE                          =
    *        NEW_ARCHIVE_PARAMS                =
    *        RESULT                            =
    *      EXCEPTIONS
    *        CANCELED                          = 1
    *        DEVICE                            = 2
    *        FORM                              = 3
    *        OPTIONS                           = 4
    *        UNCLOSED                          = 5
    *        MAIL_OPTIONS                      = 6
    *        ARCHIVE_ERROR                     = 7
    *        INVALID_FAX_NUMBER                = 8
    *        MORE_PARAMS_NEEDED_IN_BATCH       = 9
    *        SPOOL_ERROR                       = 10
    *        CODEPAGE                          = 11
    *        OTHERS                            = 12
       IF sy-subrc <> 0.
    *   message id sy-msgid type sy-msgty number sy-msgno
    *           with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       ENDIF.
    PERFORM select_data_closed.
    PERFORM select_data_open.
    * calculate the net figures
    w_NNetamt = w_Netamt + w_ONetamt.
    w_NIntIncome = w_IntIncome + w_OIntIncome.
    *w_NInCompRct = w_InCompRct + w_OInCompRct.
    w_NfixedAsst = w_fixedAsst + w_OfixedAsst.
    w_NSundry = w_Sundry + w_OSundry.
    w_NSuppay = w_Suppay + w_OSuppay.
    w_NSuppay1 = w_Suppay1 + w_OSuppay1.
    w_NDuty = w_Duty + w_ODuty.
    w_NSalary = w_Salary + w_OSalary.
    w_NTax = w_Tax + w_OTax.
    w_NTax1 = w_Tax1 + w_OTax1.
    w_NSell = w_Sell + w_OSell.
    w_NAdmin = w_Admin + w_OAdmin.
    w_NCapital = w_Capital + w_OCapital.
    w_Nloan = w_loan + w_Oloan.
    w_NMan = w_Man + w_OMan.
    w_NGroup = w_Group + w_OGroup.
    w_NInt = w_Int + w_OInt.
    w_NInter = w_Inter + w_OInter.
    w_NAdPay = w_AdPay + w_OAdPay.
    w_GTotal = ( w_NNetamt + w_NIntIncome + w_NfixedAsst + w_NSundry ) - (
    w_NSuppay + w_NSuppay1 + w_NDuty + w_NSalary + w_NTax + w_NTax1 +
    w_NSell + w_NAdmin + w_NCapital + w_Nloan + w_NMan + w_NGroup + w_NInt +
    w_NInter + w_NAdPay ).
    * Write the Main Account Balance
         CALL FUNCTION 'WRITE_FORM'
           EXPORTING
             element  = 'MAIN'
             function = 'SET'
             type     = 'BODY'
             window   = 'MAIN'.
         IF sy-subrc <> 0.
    **   message id sy-msgid type sy-msgty number sy-msgno
    **           with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
         ENDIF.
    w_ITCPP-TDNEWID = 'X'.
       CALL FUNCTION 'CLOSE_FORM'
          IMPORTING
             RESULT                         = w_ITCPP
    *        RDI_RESULT                     =
    *      TABLES
    *        OTFDATA                        =
    *      EXCEPTIONS
    *        UNOPENED                       = 1
    *        BAD_PAGEFORMAT_FOR_PRINT       = 2
    *        SEND_ERROR                     = 3
    *        SPOOL_ERROR                    = 4
    *        CODEPAGE                       = 5
    *        OTHERS                         = 6
       IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.
    FORM select_data_closed.
       SELECT SINGLE copmname INTO w_companyname
          FROM zcompany
           WHERE  copcode = p_bukrs.
    * Select the receipts
       SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
    blart bldat
       INTO CORRESPONDING FIELDS OF TABLE it_voucher3
       FROM  bsad
       WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
               AND augdt IN s_bldat
               AND blart = 'DZ'
    *            AND blart = 'DZ' and shkzg = 'S'
               GROUP BY kunnr belnr hkont shkzg xblnr budat blart bldat.
       SORT it_voucher3 BY kunnr.
       LOOP AT it_voucher3 INTO wa_voucher3.
    * Select the invoices
         SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
    blart bldat
         INTO CORRESPONDING FIELDS OF TABLE it_voucher1
         FROM  bsad
         WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
                 AND augdt IN s_bldat
                 AND blart <> 'DZ' AND
                 augbl = wa_voucher3-belnr AND
                 kunnr = wa_voucher3-kunnr
                 GROUP BY belnr kunnr hkont shkzg xblnr budat blart bldat.
         LOOP AT it_voucher1 INTO wa_voucher1.
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_Rcptamt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX001' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_Rcptamt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX001' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Netamt = w_Netamt + w_Rcptamt.
                  continue.
                ENDIF.
           ELSE.
                 w_Netamt = w_Netamt + w_Rcptamt.
                 continue.
           ENDIF.
    * Interest Income
          SELECT SINGLE dmbtr FROM bsis INTO w_IntIncomeAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX002' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_IntIncomeAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX002' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_IntIncome = w_IntIncome + w_IntIncomeAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_IntIncome = w_IntIncome + w_IntIncomeAmt.
                 continue.
           ENDIF.
    * Sale Of fixed Assets
          SELECT SINGLE dmbtr FROM bsis INTO w_FixedAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX004' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_FixedAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX004' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_fixedasst = w_fixedasst + w_FixedAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_fixedasst = w_fixedasst + w_FixedAmt.
                 continue.
           ENDIF.
    * Gl Receipts ( Sundry Income)
          SELECT SINGLE dmbtr FROM bsis INTO w_SundryAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX005' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_SundryAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX005' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Sundry = w_Sundry + w_SundryAmt.
                                continue.
                ENDIF.
           ELSE.
                 w_Sundry = w_Sundry + w_SundryAmt.
                              continue.
           ENDIF.
         ENDLOOP.
       ENDLOOP.
    *Out Flow
    r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'KZ'.
    APPEND r_bwart TO r_bwart.
    r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'VZ'.
    APPEND r_bwart TO r_bwart.
       SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
    blart bldat
       INTO CORRESPONDING FIELDS OF TABLE it_voucher3
       FROM  bsak
       WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
               AND augdt IN s_bldat
               AND blart IN  r_bwart
    *            AND blart = 'DZ' and shkzg = 'S'
               GROUP BY lifnr belnr hkont shkzg xblnr budat blart bldat.
       SORT it_voucher3 BY lifnr.
       LOOP AT it_voucher3 INTO wa_voucher3.
    * Select the invoices
         SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
    blart bldat
         INTO CORRESPONDING FIELDS OF TABLE it_voucher1
         FROM  bsak
         WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
                 AND augdt IN s_bldat
                 AND blart NOT IN r_bwart AND
                 augbl = wa_voucher3-belnr AND
                 lifnr = wa_voucher3-lifnr
                 GROUP BY belnr lifnr hkont shkzg xblnr budat blart bldat.
         LOOP AT it_voucher1 INTO wa_voucher1.
    * Supplier Payments  (LOCAL)
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_SupPayAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY001' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_SupPayAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY001' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_SupPay = w_SupPay + w_SupPayAmt.
                                continue.
                ENDIF.
           ELSE.
                 w_SupPay = w_SupPay + w_SupPayAmt.
                              continue.
           ENDIF.
    * supplier Payments  (Foreign )
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_SupPayAmt1 WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY002' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_SupPayAmt1  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY002' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_SupPay1 = w_SupPay1 + w_SupPayAmt1.
                  continue.
                ENDIF.
           ELSE.
                 w_SupPay1 = w_SupPay1 + w_SupPayAmt1.
                  continue.
           ENDIF.
    * duty/clearing expenses
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_DutyAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY003' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_DutyAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY003' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Duty = w_Duty + w_DutyAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Duty = w_Duty + w_DutyAmt.
                  continue.
           ENDIF.
    * Salary /EPF/ETF/MSPS/OVERTIME
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_SalaryAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY004' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_SalaryAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY004' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Salary = w_Salary + w_SalaryAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Salary = w_Salary + w_SalaryAmt.
                  continue.
           ENDIF.
    * Income Taxes
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_TaxAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY005' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_TaxAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY005' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Tax = w_Tax + w_TaxAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Tax = w_Tax + w_TaxAmt.
                  continue.
           ENDIF.
    * other taxes ( VAT: TT:Debit tax )
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_TaxAmt1 WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY006' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_TaxAmt1  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY006' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Tax1 = w_Tax1 + w_TaxAmt1.
                  continue.
                ENDIF.
           ELSE.
                 w_Tax1 = w_Tax1 + w_TaxAmt1.
                  continue.
           ENDIF.
    * Selling  & Promotional Costs
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_SellAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY007' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_SellAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY007' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Sell = w_Sell + w_SellAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Sell = w_Sell + w_SellAmt.
                  continue.
           ENDIF.
    * Admistration costs
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_AdminAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY008' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_AdminAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY008' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Admin = w_Admin + w_AdminAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Admin = w_Admin + w_AdminAmt.
                  continue.
           ENDIF.
    * Capital Expenditure
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_CapitalAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY009' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_CapitalAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY009' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Capital = w_Capital + w_CapitalAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Capital = w_Capital + w_CapitalAmt.
                  continue.
           ENDIF.
    * Loan repayments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_LoanAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY010' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_LoanAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY010' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Loan = w_Loan + w_LoanAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Loan = w_Loan + w_LoanAmt.
                  continue.
           ENDIF.
    * maangment fees
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_ManAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY011' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_ManAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY011' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Man = w_Man + w_ManAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Man = w_Man + w_ManAmt.
                  continue.
           ENDIF.
    * Group charges
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_GroupAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY012' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_GroupAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY012' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Group = w_Group + w_GroupAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Group = w_Group + w_GroupAmt.
                  continue.
           ENDIF.
    * Interest Payments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_IntAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY013' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_IntAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY013' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Int = w_Int + w_IntAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Int = w_Int + w_IntAmt.
                  continue.
           ENDIF.
    * Other Intercompany payments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_InterAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY014' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_InterAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY014' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Inter = w_Inter + w_InterAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Inter = w_Inter + w_InterAmt.
                  continue.
           ENDIF.
    * Advacnes/Prepayments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_AdPayAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY015' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_AdPayAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY015' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_AdPay = w_AdPay + w_AdPayAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_AdPay = w_AdPay + w_AdPayAmt.
                  continue.
           ENDIF.
         ENDLOOP.
       ENDLOOP.
    * Open Item Balances
    ENDFORM.                    " Select_Data
    FORM select_data_Open.
    *   SELECT SINGLE copmname INTO w_companyname
    *      FROM zcompany
    *       WHERE  copcode = p_bukrs.
    * Select the receipts
       SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
    blart bldat
       INTO CORRESPONDING FIELDS OF TABLE it_voucher3
       FROM  bsid
       WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
               AND augdt IN s_bldat
               AND blart = 'DZ'
    *            AND blart = 'DZ' and shkzg = 'S'
               GROUP BY kunnr belnr hkont shkzg xblnr budat blart bldat.
       SORT it_voucher3 BY kunnr.
       LOOP AT it_voucher3 INTO wa_voucher3.
    * Select the invoices
         SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
    blart bldat
         INTO CORRESPONDING FIELDS OF TABLE it_voucher1
         FROM  bsid
         WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
                 AND augdt IN s_bldat
                 AND blart <> 'DZ' AND
                 augbl = wa_voucher3-belnr AND
                 kunnr = wa_voucher3-kunnr
                 GROUP BY belnr kunnr hkont shkzg xblnr budat blart bldat.
         LOOP AT it_voucher1 INTO wa_voucher1.
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_ORcptamt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX001' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_ORcptamt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX001' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_ONetamt = w_ONetamt + w_ORcptamt.
                  continue.
                ENDIF.
           ELSE.
                 w_ONetamt = w_ONetamt + w_ORcptamt.
                  continue.
           ENDIF.
    * Interest Income
          SELECT SINGLE dmbtr FROM bsis INTO w_OIntIncomeAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX002' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OIntIncomeAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX002' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OIntIncome = w_OIntIncome + w_OIntIncomeAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OIntIncome = w_OIntIncome + w_OIntIncomeAmt.
                  continue.
           ENDIF.
    * Sale Of fixed Assets
          SELECT SINGLE dmbtr FROM bsis INTO w_OFixedAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX004' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OFixedAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX004' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_Ofixedasst = w_Ofixedasst + w_OFixedAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_Ofixedasst = w_Ofixedasst + w_OFixedAmt.
                  continue.
           ENDIF.
    * Gl Receipts ( Sundry Income)
          SELECT SINGLE dmbtr FROM bsis INTO w_OSundryAmt WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX005' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OSundryAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'XX005' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OSundry = w_OSundry + w_OSundryAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OSundry = w_OSundry + w_OSundryAmt.
                  continue.
           ENDIF.
         ENDLOOP.
       ENDLOOP.
    *Out Flow
    Clear r_bwart.
    refresh r_bwart.
    r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'KZ'.
    APPEND r_bwart TO r_bwart.
    r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'VZ'.
    APPEND r_bwart TO r_bwart.
       SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
    blart bldat
       INTO CORRESPONDING FIELDS OF TABLE it_voucher3
       FROM  bsik
       WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
               AND augdt IN s_bldat
               AND blart IN  r_bwart
    *            AND blart = 'DZ' and shkzg = 'S'
               GROUP BY lifnr belnr hkont shkzg xblnr budat blart bldat.
       SORT it_voucher3 BY lifnr.
       LOOP AT it_voucher3 INTO wa_voucher3.
    * Select the invoices
         SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
    blart bldat
         INTO CORRESPONDING FIELDS OF TABLE it_voucher1
         FROM  bsik
         WHERE   bukrs = p_bukrs AND gjahr = p_gjahr
                 AND augdt IN s_bldat
                 AND blart NOT IN r_bwart AND
                 augbl = wa_voucher3-belnr AND
                 lifnr = wa_voucher3-lifnr
                 GROUP BY belnr lifnr hkont shkzg xblnr budat blart bldat.
         LOOP AT it_voucher1 INTO wa_voucher1.
    * Supplier Payments  (LOCAL)
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OSupPayAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY001' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OSupPayAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY001' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OSupPay = w_OSupPay + w_OSupPayAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OSupPay = w_OSupPay + w_OSupPayAmt.
                  continue.
           ENDIF.
    * supplier Payments  (Foreign )
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OSupPayAmt1 WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY002' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OSupPayAmt1  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY002' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OSupPay1 = w_OSupPay1 + w_OSupPayAmt1.
                  continue.
                ENDIF.
           ELSE.
                 w_OSupPay1 = w_OSupPay1 + w_OSupPayAmt1.
                  continue.
           ENDIF.
    * duty/clearing expenses
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_ODutyAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY003' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_ODutyAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY003' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_ODuty = w_ODuty + w_ODutyAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_ODuty = w_ODuty + w_ODutyAmt.
                  continue.
           ENDIF.
    * Salary /EPF/ETF/MSPS/OVERTIME
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OSalaryAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY004' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OSalaryAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY004' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OSalary = w_OSalary + w_OSalaryAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OSalary = w_OSalary + w_OSalaryAmt.
                  continue.
           ENDIF.
    * Income Taxes
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OTaxAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY005' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OTaxAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY005' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OTax = w_OTax + w_OTaxAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OTax = w_OTax + w_OTaxAmt.
                  continue.
           ENDIF.
    * other taxes ( VAT: TT:Debit tax )
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OTaxAmt1 WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY006' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OTaxAmt1  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY006' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OTax1 = w_OTax1 + w_OTaxAmt1.
                  continue.
                ENDIF.
           ELSE.
                 w_OTax1 = w_OTax1 + w_OTaxAmt1.
                  continue.
           ENDIF.
    * Selling  & Promotional Costs
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OSellAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY007' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OSellAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY007' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OSell = w_OSell + w_OSellAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OSell = w_OSell + w_OSellAmt.
                  continue.
           ENDIF.
    * Admistration costs
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OAdminAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY008' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OAdminAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY008' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OAdmin = w_OAdmin + w_OAdminAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OAdmin = w_OAdmin + w_OAdminAmt.
                  continue.
           ENDIF.
    * Capital Expenditure
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OCapitalAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY009' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OCapitalAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY009' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OCapital = w_OCapital + w_OCapitalAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OCapital = w_OCapital + w_OCapitalAmt.
                  continue.
           ENDIF.
    * Loan repayments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OLoanAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY010' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OLoanAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY010' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OLoan = w_OLoan + w_OLoanAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OLoan = w_OLoan + w_OLoanAmt.
                  continue.
           ENDIF.
    * maangment fees
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OManAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY011' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OManAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY011' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OMan = w_OMan + w_OManAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OMan = w_OMan + w_OManAmt.
                  continue.
           ENDIF.
    * Group charges
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OGroupAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY012' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OGroupAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY012' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OGroup = w_OGroup + w_OGroupAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OGroup = w_OGroup + w_OGroupAmt.
                  continue.
           ENDIF.
    * Interest Payments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OIntAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY013' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OIntAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY013' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OInt = w_OInt + w_OIntAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OInt = w_OInt + w_OIntAmt.
                  continue.
           ENDIF.
    * Other Intercompany payments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OInterAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY014' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OInterAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY014' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OInter = w_OInter + w_OInterAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OInter = w_OInter + w_OInterAmt.
                  continue.
           ENDIF.
    * Advacnes/Prepayments
    *  Find the corresponding entry in the GL open
          SELECT SINGLE dmbtr FROM bsis INTO w_OAdPayAmt WHERE
    *           hkont = '0010003900' AND
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY015' ) AND  bukrs = p_bukrs  AND
                   gjahr = p_gjahr  AND
                   belnr = wa_voucher1-belnr.
           IF sy-subrc <> 0.
    * If the corresponding entry not found in GL open, look in the GL Closed
          SELECT SINGLE dmbtr FROM bsas INTO  w_OAdPayAmt  WHERE
               hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
    'YY015' ) AND bukrs = p_bukrs  AND
                  gjahr = p_gjahr  AND
                  belnr = wa_voucher1-belnr.
                IF sy-subrc = 0.
                  w_OAdPay = w_OAdPay + w_OAdPayAmt.
                  continue.
                ENDIF.
           ELSE.
                 w_OAdPay = w_OAdPay + w_OAdPayAmt.
                  continue.
           ENDIF.
         ENDLOOP.
       ENDLOOP.
    ENDFORM.                    " Select_Data

Maybe you are looking for

  • Dbl-click ics file opens iCal, but no event is created; import works

    I have an ics file that opens iCal when I double-click it (either the file in the Finder, or the same file as an attachment in Mail). However, the event described in the ics file is not created. When I use File->Import in iCal, and select the same fi

  • Ripping to lossless-Why no join tracks option?

    I've found that when I try to rip tracks from CD to Apple Lossless, the option to Join tracks is grayed out. Combining tracks seems to be the only way to get continuous music in separate tracks to play continuously, but it's not available even when I

  • No sound with itunes? why?

    i have no sound with itunes but other programs i do have sound. why and how do i fix it???

  • 3.1 WAS Clustering

    We are upgrading to 3.1 and are evaluating our architecture.  We have hardware F5 load balancer and two webshpere application servers.  Obviously our goal is two have seemless failover in the web tier, should a WAS go down.  The load balancer is set

  • Lift and Stamp - one image only

    I can get Lift and Stamp to work on JPEG images, but it only updates one image. So even if I select 10 and then stamp, only the image with the "thick" white border is updated. I've read lots of complaints on lift and stamp usability, but i think I'm