KeyListener Help Needed for Tetris Game!

* Tetris - Java Enhacned
* By: Kunnel Zachariah, Johnathan Smith, Johnathan Adkins
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.Timer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import static java.lang.Character.*;
import java.awt.*;
import java.awt.image.*;
import java.applet.*;
import java.lang.Math;
import java.lang.System;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.awt.event.KeyAdapter;
public class TetrisMain extends JFrame implements KeyListener
     int s;
     int p;
     int xPos;
     int yPos;
     int level = 1;
     int lines = 0;
     int score = 0;
     int switchPiece;
     private boolean[] keys;
     private int SLEEP = 50; //bigger # = slower animation
     private Timer timer;
     int bologna = 11;
    int posX[], posY[];
     Color color;
     boolean isSquare = false;
     public TetrisMain()
          setSize(550,710);
          setBackground(Color.black);
          setVisible(true);
          getContentPane();
     public static void main( String args[] )
          TetrisMain pongLab = new TetrisMain();
    public void paint (Graphics g)
          s=0;
          keys = new boolean[4];
          this.addKeyListener(this);
          g.setColor(Color.blue);
          g.fillRect(0,0,550,710);
          g.setColor(Color.black);
          g.fillRect(0,0,460,600);          
          g.setColor(Color.blue);
          g.setColor (Color.black);          
          g.setFont(new Font("Helvetica",Font.BOLD,14));
        g.drawString ("Level: " + level, 485, 40);
        g.drawString ("Lines: " + lines, 485, 80);
        g.drawString ("Score: " + score, 485, 120);
         ActionListener paintCaller = new ActionListener(){
               public void actionPerformed(ActionEvent event)
                    repaint();  //recalls paint every SLEEP milliseconds
          timer = new Timer(SLEEP, paintCaller);
          timer.start();
          while (bologna <= 30)
         if ( keys[0] == true )
               //move left paddle up and draw it on the window
               s+=3;
          if ( keys[1] == true )
          //move left paddle down and draw it on the window
               p+=3;
          if ( keys[2] == true )
               s-=3;
          if ( keys[3] == true )
               p-=3;
                    displayRandomPiece(g);
                    bologna++;
  public void drawGridVertical(Graphics g)
         for(xPos = 0; xPos <=460; xPos+=23)
         for(yPos=0; yPos <=600; yPos+=23)
              g.drawLine(xPos,yPos,xPos,yPos);
    public void drawBlock(Graphics g)
     ImageIcon animatedIcon1 = new ImageIcon("untitled.gif");
     for(p =0; p <=530; p+=2)
      animatedIcon1.paintIcon(this,g,s,p);
      delay(100000);
    public void drawTpiece(Graphics g)
       ImageIcon animatedIcon = new ImageIcon("tpiece.gif");
      for(p =0; p <=530; p+=2)
      animatedIcon.paintIcon(this,g,s,p);
      delay(100000);
    public void drawZigZagpiece(Graphics g)
     ImageIcon animatedIcon2 = new ImageIcon("zigzagpiece.gif");
     for(p =0; p <=530; p+=2)
      animatedIcon2.paintIcon(this,g,s,p);
      delay(100000);
    public void Rectanglepiece(Graphics g)
         ImageIcon animatedIcon3 = new ImageIcon("rectangle.gif");
     for(p =0; p <=530; p+=2)
      animatedIcon3.paintIcon(this,g,s,p);
      delay(100000);
    public void Unknownpiece(Graphics g)
         ImageIcon animatedIcon4 = new ImageIcon("unknownpiece.gif");
     for(p =0; p <=530; p+=2)
      animatedIcon4.paintIcon(this,g,s,p);
      delay(100000);
    public void otherZigZagpiece(Graphics g)
         ImageIcon animatedIcon5 = new ImageIcon("otherzigzagpiece.gif");
      for(p =0; p <=530; p+=2)
      animatedIcon5.paintIcon(this,g,s,p);
      delay(100000);
     public void otherUnknownpiece(Graphics g)
         ImageIcon animatedIcon6 = new ImageIcon("otherunknownpiece.gif");
     for(p =0; p <=530; p+=2)
      animatedIcon6.paintIcon(this,g,s,p);
      delay(100000);
    public static void delay(double n)
          for (double x = 0; x <= n; x += .01);
      public boolean keyPressed(Event e, int key)
      if (key == Event.LEFT)
        s=-1;
      else if (key == Event.RIGHT)
        s+=1;
      else if (key == Event.UP)
        p-=1;
      else if (key == Event.DOWN)
      //  fast=true;
      else if (key == Event.ESCAPE)
       // ingame=false;
    return true;
     public void keyPressed(KeyEvent e)
          System.out.println("keypressed");
          switch(toUpperCase(e.getKeyChar()))
               case 'W' : keys[0]=true;System.out.println("W keypressed"); break;
               case 'Z' : keys[1]=true; System.out.println("z keypressed");break;
               case 'I' : keys[2]=true; System.out.println("i keypressed");break;
               case 'M' : keys[3]=true; System.out.println("m keypressed");break;
     public void keyReleased(KeyEvent e)
          System.out.println("released");
          switch(toUpperCase(e.getKeyChar()))
               case 'W' : keys[0]=true; System.out.println("W realeased");break;
               case 'Z' : keys[1]=true; System.out.println("Z realeased");break;
               case 'I' : keys[2]=true; System.out.println("i realeased");break;
               case 'M' : keys[3]=true; System.out.println("m realeased");break;
     public void keyTyped(KeyEvent e)
          //no code needed here
  public void displayRandomPiece(Graphics g)
       Random rand = new Random();
       int c = rand.nextInt((7)+1);
       switch(c)
            case 1:
            drawBlock(g);
            break;
            case 2:
            drawTpiece(g);
            break;
            case 3:
            drawZigZagpiece(g);
            break;
            case 4:
            Rectanglepiece(g);
            break;
            case 5:
            Unknownpiece(g);
            break;
            case 6:
            otherZigZagpiece(g);
            break;
            case 7:
            otherUnknownpiece(g);
            break;
}This is my code so far for Tetris. I am having issues with my keylisteners! I keep pressing the specified keys and the println statements wont show up or the piece wont move! i really need major help. can anyone give me some advice
Much Thanks,
Chris!

http://forum.java.sun.com/thread.jspa?threadID=5175447
Don't double post! No help for you!

Similar Messages

  • Why there's no Need for Speed game in the apple store?

    Hi, I really wanna have Need For Speed game for my macpro, I only found it through my ipad but not from mac, can you help me for that? Thank you

    Google, "Need For Speed on a mac" and find the links.

  • Help needed for writing query

    help needed for writing query
    i have the following tables(with data) as mentioned below
    FK*-foregin key (SUBJECTS)
    FK**-foregin key (COMBINATION)
    1)SUBJECTS(table name)     
    SUB_ID(NUMBER) SUB_CODE(VARCHAR2) SUB_NAME (VARCHAR2)
    2           02           Computer Science
    3           03           Physics
    4           04           Chemistry
    5           05           Mathematics
    7           07           Commerce
    8           08           Computer Applications
    9           09           Biology
    2)COMBINATION
    COMB_ID(NUMBER) COMB_NAME(VARCHAR2) SUB_ID1(NUMBER(FK*)) SUB_ID2(NUMBER(FK*)) SUB_ID3(NUMBER(FK*)) SUBJ_ID4(NUMBER(FK*))
    383           S1      9           4           2           3
    384           S2      4           2           5           3
    ---------I actually designed the ABOVE table also like this
    3) a)COMBINATION
    COMB_ID(NUMBER) COMB_NAME(VARCHAR2)
    383           S1
    384           S2
    b)COMBINATION_DET
    COMBDET_ID(NUMBER) COMB_ID(FK**) SUB_ID(FK*)
    1               383          9
    2               383          4
    3               383          2
    4               383          3
    5               384          4
    6               384          2          
    7               384          5
    8               384          3
    Business rule: a combination consists of a maximum of 4 subjects (must contain)
    and the user is less relevant to a COMB_NAME(name of combinations) but user need
    the subjects contained in combinations
    i need the following output
    COMB_ID COMB_NAME SUBJECT1 SUBJECT2      SUBJECT3      SUBJECT4
    383     S1     Biology Chemistry      Computer Science Physics
    384     S2     Chemistry Computer Science Mathematics Physics
    or even this is enough(what i actually needed)
    COMB_ID     subjects
    383           Biology,Chemistry,Computer Science,Physics
    384           Chemistry,Computer Science,Mathematics,Physics
    you can use any of the COMBINATION table(either (2) or (3))
    and i want to know
    1)which design is good in this case
    (i think SUB_ID1,SUB_ID2,SUB_ID3,SUB_ID4 is not a
    good method to link with same table but if 4 subjects only(and must) comes
    detail table is not neccessary )
    now i am achieving the result by program-coding in C# after getting the rows from oracle
    i am using oracle 9i (also ODP.NET)
    i want to know how can i get the result in the stored procedure itsef.
    2)how it could be designed in any other way.
    any help/suggestion is welcome
    thanks for your time --Pradeesh

    Well I forgot the table-alias, here now with:
    SELECT C.COMB_ID
    , C.COMB_NAME
    , (SELECT SUB_NAME
    FROM SUBJECTS
    WHERE SUB_ID = C.SUB_ID1) AS SUBJECT_NAME1
    , (SELECT SUB_NAME
    FROM SUBJECTS
    WHERE SUB_ID = C.SUB_ID2) AS SUBJECT_NAME2
    , (SELECT SUB_NAME
    FROM SUBJECTS
    WHERE SUB_ID = C.SUB_ID3) AS SUBJECT_NAME3
    , (SELECT SUB_NAME
    FROM SUBJECTS
    WHERE SUB_ID = C.SUB_ID4) AS SUBJECT_NAME4
    FROM COMBINATION C;
    As you need exactly 4 subjects, the columns-solution is just fine I would say.

  • Color management help needed for adobe CS5 and Epson printer 1400-Prints coming out too dark with re

    Color management help needed for adobe CS5 and Epson printer 1400-Prints coming out too dark with reddish cast and loss of detail
    System: Windows 7
    Adobe CS5
    Printer: Epson Stylus Photo 1400
    Paper: Inkjet matte presentation paper with slight luster
    Installed latest patch for Adobe CS5
    Epson driver up to date
    After reading solutions online and trying them for my settings for 2 days I am still unable to print what I am seeing on my screen in Adobe CS5. I calibrated my monitor, but am not sure once calibration is saved if I somehow use this setting in Photoshop’s color management.
    The files I am printing are photographs of dogs with lots of detail  I digitally painted with my Wacom tablet in Photoshop CS5 and then printed with Epson Stylus 1400 on inkjet paper 20lb with slight luster.
    My Printed images lose a lot of the detail & come out way to dark with a reddish cast and loss of detail when I used these settings in the printing window:
    Color Handling: Photoshop manages color, Color management -ICM, OFF no color adjustment.
    When I change to these settings in printer window: Color Handling:  Printer manages color.  Color management- Color Controls, 1.8 Gamma and choose Epson Standard it prints lighter, but with reddish cast and very little detail and this is the best setting I have used so far.
    Based on what I have read on line, I think the issue is mainly to do with what controls are set in the Photoshop Color Settings window and the Epson Printer preferences. I have screen images attached of these windows and would appreciate knowing what you recommend I enter for each choice.
    Also I am confused as to what ICM color management system to use with this printer and CS5:
    What is the best ICM to use with PS CS5 & the Epson 1400 printer? Should I use the same ICM for both?
    Do I embed the ICM I choose into the new files I create? 
    Do I view all files in the CS5 workspace in this default ICM?
    Do I set my monitor setting to the same ICM?
    If new file opens in CS5 workspace and it has a different embedded profile than my workspace, do I convert it?
    Do I set my printer, Monitor and PS CS5 color settings to the same ICM?
    Is using the same ICM for all devices what is called a consistent workflow?
    I appreciate any and all advice that can be sent my way on this complicated issue. Thank you in advance for your time and kind help.

    It may be possible to figure out by watching a Dr.Brown video on the subject of color printing. Adobe tv
    I hope this may help...............

  • File missing (file\BCD error code 0Xc0000034 help need for work!

    file missing (file\BCD  error code 0Xc0000034 help need for work!    what can i do?
    have an p 2000 notebook pc

     Hi bobkunkle, welcome to the HP Forums. I understand you cannot boot passed the error you are receiving.
    What is the model or product number of your notebook? What version of Windows is installed?
    Guide to finding your product number
    Which Windows operating system am I running?
    TwoPointOh
    I work on behalf of HP
    Please click “Accept as Solution ” if you feel my post solved your issue, it will help others find the solution.
    Click the “Kudos, Thumbs Up" on the bottom to say “Thanks” for helping!

  • Help need for force to signout All session ! how...

    hi
         help need for force to  signout All session !  how ??
    Solved!
    Go to Solution.

    Hi and welcome to the Skype Community,
    To force a signout of all instances your Skype is signed into please change your password: https://support.skype.com/en/faq/FA95/how-do-i-change-my-password
    Follow the latest Skype Community News
    ↓ Did my reply answer your question? Accept it as a solution to help others, Thanks. ↓

  • Help Needed For Creating A Game

    Hi, I recently decided to make a MMORPG.A game people will enjoy and have fun, I would of course keep it free sense I have play many games that cost 5-15 dollars a month.I have many creative ideas, but I need someone to show me the ropes and teach me how to use Java and i currently looking for a site to download it at.If anyone would care to teach me how to use this or would like to help me create this game(Medievil type game, Swords armor gold houses dragonslaying and plenty more) post here or send me a pm and we can talk more private.
    I need:
    *A site to download the best possiable Java console
    *Helpful tutorial sites
    *Or any other sites or tips you think i should know.
    Extra Info On Me:
    I dont know if this matters or not probably doesnt but I know how to handle and make a site, ive had some dbz rpgs back in the day(kinda rusty but i can manage).
    Some more recent information:
    I tried game maker and that doesnt seem to helpful.It would only be helpful if I played them 20 bucks which I am not going to do.
    Also i am downloading now JS2E 5.0 for Java.
    I am stilling waiting on some type of input or even a mentor.

    Hi there!
    I'm not really a game programmer.. but here's some links anyway.
    Someone pointed out this tutorial to me, and I think it is worthwhile:
    http://fivedots.coe.psu.ac.th/~ad/jg/
    It has stuff on Java 3D, networking, games for mobile phones/PDAs, isometric tile games, etc. It also has an appendix on loaders and Java Web Start.
    Also, if you want to create 3D games, you might want to check out
    http://www.3dcafe.com/asp/freestuff.asp
    They have free 3D models in various formats.
    For more 3D links and tutorials try:
    http://www.3dlinks.com/
    For a 3D tool, I like Anim8or. That it's free helps a lot ;)
    http://www.anim8or.com/
    And... ms paint!?! You will not be able to draw decent graphics with that. Adobe Photoshop Elements is a nice, low-cost program for 2D images.
    There are lots of sites devoted to java game programming. Try the google. Love the google. Google is your friend. ;)
    :) jen

  • Query help needed for querybuilder to use with lcm cli

    Hi,
    I had set up several queries to run with the lcm cli in order to back up personal folders, inboxes, etc. to lcmbiar files to use as backups.  I have seen a few posts that are similar, but I have a specific question/concern.
    I just recently had to reference one of these back ups only to find it was incomplete.  Does the query used by the lcm cli also only pull the first 1000 rows? Is there a way to change this limit somwhere?
    Also, since when importing this lcmbiar file for something 'generic' like 'all personal folders', pulls in WAY too much stuff, is there a better way to limit this? I am open to suggestions, but it would almost be better if I could create individual lcmbiar output files on a per user basis.  This way, when/if I need to restore someone's personal folder contents, for example, I could find them by username and import just that lcmbiar file, as opposed to all 3000 of our users.  I am not quite sure how to accomplish this...
    Currently, with my limited windows scripting knowledge, I have set up a bat script to run each morning, that creates a 'runtime' properties file from a template, such that the lcmbiar file gets named uniquely for that day and its content.  Then I call the lcm_cli using the proper command.  The query within the properties file is currently very straightforward - select * from CI_INFOOBJECTS WHERE SI_ANCESTOR = 18.
    To do what I want to do...
    1) I'd first need a current list of usernames in a text file, that could be read (?) in and parsed to single out each user (remember we are talking about 3000) - not sure the best way to get this.
    2) Then instead of just updating the the lcmbiar file name with a unique name as I do currently, I would also update the query (which would be different altogether):  SELECT * from CI_INFOOBJECTS where SI_OWNER = '<username>' AND SI_ANCESTOR = 18.
    In theory, that would grab everything owned by that user in their personal folder - right? and write it to its own lcmbiar file to a location I specify.
    I just think chunking something like this is more effective and BO has no built in back up capability that already does this.  We are on BO 4.0 SP7 right now, move to 4.1 SP4 over the summer.
    Any thoughts on this would be much appreciated.
    thanks,
    Missy

    Just wanted to pass along that SAP Support pointed me to KBA 1969259 which had some good example queries in it (they were helping me with a concern I had over the lcmbiar file output, not with query design).  I was able to tweak one of the sample queries in this KBA to give me more of what I was after...
    SELECT TOP 10000 static, relationships, SI_PARENT_FOLDER_CUID, SI_OWNER, SI_PATH FROM CI_INFOOBJECTS,CI_APPOBJECTS,CI_SYSTEMOBJECTS WHERE (DESCENDENTS ("si_name='Folder Hierarchy'","si_name='<username>'"))
    This exports inboxes, personal folders, categories, and roles, which is more than I was after, but still necessary to back up.. so in a way, it is actually better because I have one lcmbiar file per user - contains all their 'personal' objects.
    So between narrowing down my set of users to only those who actually have saved things to their personal folder and now having a query that actually returns what I expect it to return, along with the help below for a job to clean up these excessive amounts of promotion jobs I am now creating... I am all set!
    Hopefully this can help someone else too!
    Thanks,
    missy

  • Help needed for using BASIC authentication through JDBCRealm

    Help needed.
    Hello,
    I am doing a degree project, so far it works fine in my local machine, I need to try it on my virtual hosting (as it is a live server).
    My project requires JDBCRealm, that is BASIC authentication loading access data from mysql database. Normally this setup can be done in Server.xml file, because my Tomcat hosting is a virtual one, I only have permission to access the web.xml file.
    My question is: is it possible to get it done in an alternative way? In web.xml? Some properties file maybe?
    Thank you very much.

    You can set this up for your context using META-INF/context.xml instead of working with server.xml.
    Make a directory called META-INF under your webapp ( it'll be at the same level as WEB-INF ). Under this, add a context.xml with all your context specific configuration including the realm. A sample is below
    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/myApp" reloadable="true">
        <Realm
            className="org.apache.catalina.realm.JDBCRealm"            
            driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"         
            connectionURL="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=myDB;SelectMethod=Cursor;"
            connectionName="username" connectionPassword="password"
            digest="MD5" userTable="users" userNameCol="userid" userCredCol="userpassword"
            userRoleTable="user_roles" roleNameCol="rolename"
        />
    </Context>Hope this helps.
    People on the forum help others voluntarily, it's not their job.
    Help them help you.
    Learn how to ask questions first: http://faq.javaranch.com/java/HowToAskQuestionsOnJavaRanch
    ----------------------------------------------------------------

  • Will playing excessive need for speed  games on my macbook pro damage the arrow keys(i play using them) ??

    hey guyz i wanted to ask whether playing excessive (1-2 hours daily) need for speed carbon on my macbook pro using the arrow keys to control the car damage the arrow keys of the MBP??
    pls answer asap i am worried..

    I don't think that you have to worry about arrow keys because they won't damage with their use (unless you hit heavily these keys). Using games, there are other things to worry, as the temperature of the Mac, but fans will turn on automatically when your Mac needs

  • Help Needed for T42 Start-up Problem

    Urgent help need!!!
    I have a ThinkPad T42 with Windows XP installed.  It works perfectly for a while without ever have any problem or error message.  Then suddenly it won’t work anymore.  The symptom is following:
    After power on the laptop the Microsoft window would show up and it prompt me for window logon password.  After I type in the password it then shows “window is loading your personal setting”.  After a long while nothing would show up on the screen other than the background of the normal screen.  There is no window bar at the bottom or any icon on the screen.  If I start in safe mode then everything would show up.  I don’t know what is going on.
    This happened two months ago and I ended up restoring a backup image to get it work again.  It happens again today with the same symptom.  I am really tired of having to restore image backup every 2 months. 
    I would really appreciate it if any of your experts can offer me some insight into this problem.  I am desperate in need of help.
    Thanks very much!

    wangy26, welcome to the forum,
    Have a look at this thread to see if my post there helps. The problem seems to mostly occur at the start of a month, why I don't know. Unfortunately the member didin't report back whether or not this was a viable solution for them.
    Andy  ______________________________________
    Please remember to come back and mark the post that you feel solved your question as the solution, it earns the member + points
    Did you find a post helpfull? You can thank the member by clicking on the star to the left awarding them Kudos Please add your type, model number and OS to your signature, it helps to help you. Forum Search Option T430 2347-G7U W8 x64, Yoga 10 HD+, Tablet 1838-2BG, T61p 6460-67G W7 x64, T43p 2668-G2G XP, T23 2647-9LG XP, plus a few more. FYI Unsolicited Personal Messages will be ignored.
      Deutsche Community     Comunidad en Español    English Community Русскоязычное Сообщество
    PepperonI blog 

  • Help need for badi method me_process_po_cust~check

    Dear All expert
    Pl see following thread
    I am stuck
    Help needed
    http://scn.sap.com/thread/3610303

    See the issue here is HOLD feature in PO should not be there if it meets the error condition.
    For this you can refer another BADI for this purpose ME_HOLD_PO.
    Refer one of my previous threads below , it might be helpful :
    Held Purchase order need not be created.
    Reiterating a thread related to same topic is not a good practice.

  • Preloaded Need for Speed game

    So according to the website, they are inclueding the full game.  Here's the description from the site:
    "Push it to the limit on Android. Drive 28 of the world’s fastest cars through 18 international tracks and feed your need for speed."
    But when I play it, I get ONE car and ONE track....a bit of a false advertisement here.  Maybe you guys should fix the description on the site.

    Amen.  I believe I read that it included the full game, but the one car, one track was underwhelming.  Are we missing something?

  • XMLAGG structure, performance help needed for odd nesting in schema

    Hello,
    I have to produce XML to look like:
    <?xml version='1.0'?>
      <enterprise>
        <membership>
          <sourcedid>
            <id>PHYS_101_001_FA2007</id>
          </sourcedid>
        <!-- NOTE: absence of "members" level tag for XMLAGG! -->
        <member>
          <sourcedid>
            <id>D2LU0001</id>
          </sourcedid>
          <role roletype="Sample Role">
            <status>1</status>
          </role>
        </member>
        <member>
          <sourcedid>
            <id>D2LU0002</id>
          </sourcedid>
          <role roletype="Sample Role">
            <status>1</status>
          </role>
        </member>
      </membership>
    </enterprise>This would be straightforward if the schema allowed for a "<members>" tag under which to nest the <member> tags. But, it does not allow for that tag or any other than those listed above.
    I have a query which does produce that output (except for the roletype attribute), but its performance is horrible; it takes about 40 minutes to return data:
    SELECT
         XMLROOT(
             XMLELEMENT("enterprise",
               XMLAGG(
                 XMLELEMENT("membership",
                   XMLFOREST( XMLELEMENT("id",cx.mapped_course_id) as "sourcedid"
                   (SELECT XMLAGG(
                     XMLELEMENT("member",
                       XMLFOREST(XMLELEMENT("id",spriden_id) AS "sourcedid",
                                 XMLELEMENT("status",'1') AS "role"
                      FROM enrollments_fall_sfrstca efs
                         , spriden sp
                         , gzv_tuid t
                     WHERE sp.spriden_change_ind IS NULL
                       AND sp.spriden_pidm       = t.pidm
                       AND t.tuid                = efs.user_name
                       AND efs.mapped_course_id  = cx.mapped_course_id
                       AND efs.term              = cx.semester
                , VERSION '1.0', STANDALONE NO VALUE)
      FROM courses_xt cx
    WHERE cx.semester = :term_code
    ;Similar queries are producing courses and users XML fine with no performance issues, but these are driven off either the courses view or the enrollments view, but not both.
    Is there some other way I can produce the nesting I need for the vendor's schema?
    The source views are basically as follows (showing relevant columns only):
    courses_xt:
    MAPPED_COURSE_ID       SEMEST
    AVFT209-13307-201210   201210
    AVFT210-13308-201210   201210enrollments_fall_sfrstca:
    MAPPED_COURSE_ID       USER_NAME
    AVFT209-13307-201210    FULLERC8
    AVFT209-13307-201210    SHUPEK
    AVFT209-13307-201210    NOMAN
    AVFT210-13308-201210    SHUPEK
    AVFT210-13308-201210    PELLONMWhen I have the query without the XML (with the subquery as a column of the outer query), this returns the correct data quickly (a couple of minutes).
    I have tried various permutations of XMLFOREST, XMLELEMENT, XMLAGG but either I get syntax errors, or the data is wrong (e.g. repeated '<membership>' for each '<member>', or I have to create an invalid tag '<members>' to be filtered later).
    Please advise!
    Thanks,
    Anita Lees

    Hi Anita,
    Have you tried with a GROUP BY and no subquery?
    Here's an example using SCOTT schema.
    I've used the same tag names and structure so that you can see the analogy :
    SELECT XMLElement("enterprise",
             XMLAgg(
               XMLElement("membership",
                 XMLElement("sourceid", xmlelement("id", d.deptno))
               , XMLAgg(
                   XMLElement("member",
                     XMLElement("sourceid",
                       XMLElement("id", e.empno)
                   , XMLElement("role",
                       XMLAttributes(e.job as "roletype")
                     , XMLElement("status", '1')
    FROM scott.dept d
         LEFT OUTER JOIN scott.emp e ON e.deptno = d.deptno
    WHERE d.deptno IN (10,20)
    GROUP BY d.deptno
    ;which gives :
    <enterprise>
      <membership>
        <sourceid>
          <id>10</id>
        </sourceid>
        <member>
          <sourceid>
            <id>7782</id>
          </sourceid>
          <role roletype="MANAGER">
            <status>1</status>
          </role>
        </member>
        <member>
          <sourceid>
            <id>7934</id>
          </sourceid>
          <role roletype="CLERK">
            <status>1</status>
          </role>
        </member>
        <member>
          <sourceid>
            <id>7839</id>
          </sourceid>
          <role roletype="PRESIDENT">
            <status>1</status>
          </role>
        </member>
      </membership>
      <membership>
        <sourceid>
          <id>20</id>
        </sourceid>
        <member>
          <sourceid>
            <id>7369</id>
          </sourceid>
          <role roletype="CLERK">
            <status>1</status>
          </role>
        </member>
        <member>
          <sourceid>
            <id>7902</id>
          </sourceid>
          <role roletype="ANALYST">
            <status>1</status>
          </role>
        </member>
        <member>
          <sourceid>
            <id>7566</id>
          </sourceid>
          <role roletype="MANAGER">
            <status>1</status>
          </role>
        </member>
      </membership>
    </enterprise>

  • Help needed for grouping.

    Hi,
        Help needed .
    I have an internal table having 6 .
    Ex :
    f1     f2    f3     f4    f5    f6
    a     aa    11    p1  10    10
    a     aa    12    p1  20    20
    b     aa    11    p2  30    30
    b     aa    12    p2  40    30
    Now i want to sum the fields f5 and f6 individually and need to display based upon the fields f1 and f4.
    To Display :
    f1     f2    f3     f4    f5    f6
    a     aa    11    p1  30    30.
    b     aa    11    p2  70    60.
    can anyone help me.How to do this..?
    Thanks

    Here you go
    DATA:
      BEGIN OF cur_tab OCCURS 0,
        f1        TYPE c,
        f2(2)     TYPE c,
        f3(2)     TYPE c,
        f4(2)     TYPE c,
        f5(2)     TYPE c,
        f6(2)     TYPE n,
      END OF cur_tab.
    DATA:
      BEGIN OF sum_tab OCCURS 0,
        f1        TYPE c,
        f4(2)     TYPE c,
        f5        TYPE p,
        f6        TYPE p,
      END OF sum_tab.
    DATA:
      BEGIN OF final_tab OCCURS 0,
        f1        TYPE c,
        f2(2)     TYPE c,
        f3(2)     TYPE c,
        f4(2)     TYPE c,
        f5(5)     TYPE c,
        f6(5)     TYPE c,
      END OF final_tab.
    START-OF-SELECTION.
      cur_tab-f1 = 'a'.
      cur_tab-f2 = 'aa'.
      cur_tab-f3 = '11'.
      cur_tab-f4 = 'p1'.
      cur_tab-f5 = '10'.
      cur_tab-f6 = '10'.
      APPEND cur_tab.
      cur_tab-f1 = 'a'.
      cur_tab-f2 = 'aa'.
      cur_tab-f3 = '11'.
      cur_tab-f4 = 'p1'.
      cur_tab-f5 = '20'.
      cur_tab-f6 = '20'.
      APPEND cur_tab.
      cur_tab-f1 = 'b'.
      cur_tab-f2 = 'aa'.
      cur_tab-f3 = '11'.
      cur_tab-f4 = 'p2'.
      cur_tab-f5 = '30'.
      cur_tab-f6 = '30'.
      APPEND cur_tab.
      cur_tab-f1 = 'b'.
      cur_tab-f2 = 'aa'.
      cur_tab-f3 = '11'.
      cur_tab-f4 = 'p2'.
      cur_tab-f5 = '40'.
      cur_tab-f6 = '30'.
      APPEND cur_tab.
      LOOP AT cur_tab.
        MOVE-CORRESPONDING cur_tab TO sum_tab.
        COLLECT sum_tab.
      ENDLOOP.
      LOOP AT sum_tab.
        READ TABLE cur_tab WITH KEY f1 = sum_tab-f1
                                    f4 = sum_tab-f4.
        IF sy-subrc NE 0.
          WRITE:/ 'Something went very wrong'.
          CONTINUE.
        ENDIF.
        MOVE-CORRESPONDING cur_tab TO final_tab.
        MOVE-CORRESPONDING sum_tab TO final_tab.
        APPEND final_tab.
      ENDLOOP.
      LOOP AT final_tab.
        WRITE:/1 final_tab-f1,
              AT 5 final_tab-f2,
              AT 10 final_tab-f3,
              AT 15 final_tab-f4,
              AT 20 final_tab-f5,
              AT 25 final_tab-f6.
      ENDLOOP.
    and the output
    a   aa   11   p1     30   30  
    b   aa   11   p2     70   60  

Maybe you are looking for

  • Can't play songs purchased under old AOL account after upgrade to Apple ID

    I guess I've been abandoned by the iTunesStoreSupport. They basically told me what caused my problem and now will not return any of my emails. This message is mostly to inform anyone who "upgrades" an old AOL iTunes account to an Apple ID to be sure

  • My imac starts up but I can't see the internal hard drive

    The hard drice appears to have disappeared from the desktop

  • Photoshop CC (64 bit): Entry Point not found

    Hi, Just updated the Photoshop CC (64 bit) and after update the whole thing does not work anymore. When you try to start Photoshop CC you get an ugly message stating: Photoshop.exe - Entry Point Not Found The procedure entry point ?ProposeSearchBound

  • PDF's do not open in new window

    I am attempting to open a series of PDF files as part of a Captivate program using click boxes. Although I have selected "New" in the pulldown menu, the files open in the same window in which the SWF file is running. Consequently, if the user closes

  • Auto-increase of numeric value in autocomplete

    What I'm wondering is can autocomplete use the value entered into the previous field and increase that value by one numeric digit for the new autocomplete?  For example, if the first entry is manually entered as "W1234" can you have autocomplete ente