Contrain PointAt to z-axis of object

I'm trying to use the point at method but I only want the
model to point at the target with one axis. How can I do this?
Thanks.

Have you looked at the pointAtOrientation property of 3D
objects?
Alternatively you can do some 3D mathematics, and rotate the
model by hand. To rotate your model, you can use the syntax:
  myModel.rotate(vPosition, vAxis, vAngle, #world)
You'll need to work out vAxis and vAngle from the current
orientation of the model:
vPosition = myModel.worldPosition
vZAxis = myModel.getWorldTransform().zAxis -- current
vPointToPointAt = <some vector>
vDirection - vPointToPointAt - vPosition -- desired
vAxis = vZAxis.cross(vDirection)
vAngle = angleBetween(vZAxis, vDirection)
If vAxis has a magnitude of 0, but vAngle is not 0, then your
model is pointing in diametrically the opposite direction: vAngle
will be 180. Rotating your model about any axis of rotation will
make it point in the right direction, but it will probably be
tilted or upside down. You will need to choose your rotatition
vector with care to make sure that your model ends up the right way
up.

Similar Messages

  • How do i change axis label object type from label to text? (to allow wrapping)

    In the example of a barChart, how does one change the LABEL type from "Label" to "Text"?
    I am trying to allow for long labels to wrap (ie. multi-line labels), but the default object type of labels is "Label" (which are single-line only).
    I have been researching this issue all day, and have enountered a similar situation for changing the Legend component labels where a method override is implemented in a custom itemRenderer.
    But I have not been able to figure out how to do this for an Axis label.
    Any help would be greatly appreciated!  
    J

    Yes, thank you.  I am aware of the AxisRenderer.... but I'm not sure how to implement it to change the label type from "Label" to "Text" to allow for wrapping.
    I guess what I'm looking for is a good example....  

  • Two universe objects on the same graph axis

    I am trying to create a bar-stacked graph in the Web Intelligence document. I add \[Period\] universe object to X axis, \[Total\] object to Y axis. Then I want to add two objects to Z axis:
    \[Sector\] (has values: Europe, Asia, America) and \[Status\] (has values: Active, Validating)
    The problem that it makes a cartezian product between all value, so the output is:
    Europe/Active
    Europe/Validating
    Asia/Active
    Asia/Validating
    America/Active
    America/Validating
    But, what I want is:
    Europe
    Asia
    America
    Active
    Validaing
    Is there any way to do this? Maybe with the help of some universe parameters, or REBean SDK...

    this is cross topic

  • Coordinate axis

    how can I draw a coordinate axis in java3d? I want to draw a 3 lines but there's a problem with displaying it on screen.
    It's only part of my code:
    .... {...      LineArray line = new LineArray(4,GeometryArray.COORDINATES);
            line.setCoordinate( 2, new Point3f(0.0f, 0.2f, 0.0f));
            shape.setGeometry(line);
            root.addChild(objTrans);}....and that's ok, there's a line and everything is ok but....if I add another line
    LineArray line2 = new LineArray(4,GeometryArray.COORDINATES);
            line2.setCoordinate( 2, new Point3f(0.0f, 0.2f, 0.0f));
             shape.setGeometry(line2);
            LineArray line = new LineArray(4,GeometryArray.COORDINATES);
            line.setCoordinate( 2, new Point3f(0.2f, 0.0f, 0.0f));
            shape.setGeometry(line);
            root.addChild(objTrans);I can see only one line :/
    I don't know if I use this objects well :/. Anybody know what's wrong?
    PS. I'm not good enough at Java3d (I've just started and I have to write this program to school for 2 days:/)
    Thanks in advance

    You have not gone throught the Chapter2 of Java3D for Creating Geometry.
    [http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch2.pdf]
    In the link below, there are samples , you can read those.
    [http://java.sun.com/developer/onlineTraining/java3d/index.html]
    *      Axis.java 1.0 98/11/25
    * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
    * POSSIBILITY OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear
    * facility. Licensee represents and warrants that it will not use or
    * redistribute the Software for such purposes.
    * Getting Started with the Java 3D API
    * written in Java 3D
    * This program demonstrates:
    *   1. writing a visual object class
    *      In this program, Axis class defines a visual object
    *      This particular class extends Shape3D
    *      See the text for a discussion.
    *   2. Using LineArray to draw 3D lines.
    import javax.media.j3d.*;
    import javax.vecmath.*;
        public class Axis extends Shape3D{
         // create axis visual object
         public Axis() {
             this.setGeometry(createGeometry());
         private Geometry createGeometry(){
             // create line for X axis
                IndexedLineArray axisLines = new IndexedLineArray(18, GeometryArray.COORDINATES, 30);
             axisLines.setCoordinate( 0, new Point3f(-1.0f, 0.0f, 0.0f));
             axisLines.setCoordinate( 1, new Point3f( 1.0f, 0.0f, 0.0f));
             axisLines.setCoordinate( 2, new Point3f( 0.9f, 0.1f, 0.1f));
             axisLines.setCoordinate( 3, new Point3f( 0.9f,-0.1f, 0.1f));
             axisLines.setCoordinate( 4, new Point3f( 0.9f, 0.1f,-0.1f));
             axisLines.setCoordinate( 5, new Point3f( 0.9f,-0.1f,-0.1f));
             axisLines.setCoordinate( 6, new Point3f( 0.0f,-1.0f, 0.0f));
             axisLines.setCoordinate( 7, new Point3f( 0.0f, 1.0f, 0.0f));
             axisLines.setCoordinate( 8, new Point3f( 0.1f, 0.9f, 0.1f));
             axisLines.setCoordinate( 9, new Point3f(-0.1f, 0.9f, 0.1f));
             axisLines.setCoordinate(10, new Point3f( 0.1f, 0.9f,-0.1f));
             axisLines.setCoordinate(11, new Point3f(-0.1f, 0.9f,-0.1f));
             axisLines.setCoordinate(12, new Point3f( 0.0f, 0.0f,-1.0f));
             axisLines.setCoordinate(13, new Point3f( 0.0f, 0.0f, 1.0f));
             axisLines.setCoordinate(14, new Point3f( 0.1f, 0.1f, 0.9f));
             axisLines.setCoordinate(15, new Point3f(-0.1f, 0.1f, 0.9f));
             axisLines.setCoordinate(16, new Point3f( 0.1f,-0.1f, 0.9f));
             axisLines.setCoordinate(17, new Point3f(-0.1f,-0.1f, 0.9f));
                axisLines.setCoordinateIndex( 0, 0);
                axisLines.setCoordinateIndex( 1, 1);
                axisLines.setCoordinateIndex( 2, 2);
                axisLines.setCoordinateIndex( 3, 1);
                axisLines.setCoordinateIndex( 4, 3);
                axisLines.setCoordinateIndex( 5, 1);
                axisLines.setCoordinateIndex( 6, 4);
                axisLines.setCoordinateIndex( 7, 1);
                axisLines.setCoordinateIndex( 8, 5);
                axisLines.setCoordinateIndex( 9, 1);
                axisLines.setCoordinateIndex(10, 6);
                axisLines.setCoordinateIndex(11, 7);
                axisLines.setCoordinateIndex(12, 8);
                axisLines.setCoordinateIndex(13, 7);
                axisLines.setCoordinateIndex(14, 9);
                axisLines.setCoordinateIndex(15, 7);
                axisLines.setCoordinateIndex(16,10);
                axisLines.setCoordinateIndex(17, 7);
                axisLines.setCoordinateIndex(18,11);
                axisLines.setCoordinateIndex(19, 7);
                axisLines.setCoordinateIndex(20,12);
                axisLines.setCoordinateIndex(21,13);
                axisLines.setCoordinateIndex(22,14);
                axisLines.setCoordinateIndex(23,13);
                axisLines.setCoordinateIndex(24,15);
                axisLines.setCoordinateIndex(25,13);
                axisLines.setCoordinateIndex(26,16);
                axisLines.setCoordinateIndex(27,13);
                axisLines.setCoordinateIndex(28,17);
                axisLines.setCoordinateIndex(29,13);
                return axisLines;
         } // end of Axis createGeometry()
        } // end of class Axis

  • HandlerBean - AXIS Framework

    Hello XI SDN'ers,
    Can any one tell me, How to use this HandlerBean to read the Set-Cookie from the header of the SOAP response message?
    Thanks & Regards,
    Satish.

    Hi,
    Handlers are important elements of the Axis framework. They are processing steps at runtime that process and forward a message. You can assemble them into processing chains like modules in the module processor.
    The following modules are provided for using the Axis framework in the SOAP adapter:
    ●      The HandlerBean module (AF_Adapters/axis/HandlerBean) calls an Axis handler.
    You use the module to call the Axis handler that you want to use.
    ●      The Adapter Framework module (AF_Adapters/axis/AFAdapterBean) converts the Axis message object to an Adapter Framework message object and the other way around.
    You use the module at the boundary between message processing in the Adapter Framework and in the Axis framework.
    To transfer the HTTP header parameter Set-Cookie to the XIu2019s Dynamic Configuration header called SetCookie add a module of type AF_Adapters/axis/HandlerBean to your processing sequence of the SOAP receiver Communication Channel created before. It has to be inserted just before the predefined module u201Cxiresu201D. You may choose an arbitrary name as module key.
    Have a look into this and refer to last 3 settings link
    http://help.sap.com/saphelp_nw04/helpdata/en/45/a4f8bbdfdc0d36e10000000a114a6b/content.htm
    Regards
    Aashish Sinha
    PS : reward points if helpful

  • Alignment off upon object placement

    I just started to do a new project for a lower 3rd title. I placed a shape and opened up the 3d adjust tool. When i tried to rotate the object (along the x axis) the object wasn't aligned straight (i could see the back of the 3d circle instead of it just looking like a line as it would if i were looking straight on.) I checked both the object and the camera in the inspector and none showed any rotation. Further more when the object was rotated to what looked like 90 degrees it was actually at 80.3 degrees.
    any ideas?
    thanks

    Have you checked the camera's position? If it's off center, then that might explain it. An object will only look like a line if viewed at 90 degree rotation at the center of the frame.
    Andy

  • Problems with GFW Classes

    Hi
    I use the GFW classes to show a chart ! I works fine! When I leave the dynpro who show the chart, I call the method CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE.
    When I call this Dynpro again It dow not show the chart not again! The Problem is that the USER can edit the chart Data in the dynpro which call the dynpro who show the chart!
    What can I do that the user  can edit the data? When I do not call CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE. Than the Chart do not consider the new Data in the Chart! How I can delete teh data of a Chart ??
    Thanx for help??
    sicnerly
    Arne

    hi this is the code
    retval = cl_gfw=>ok.
    if dc_manage is initial.
    *erstellen und initallieren des Datencontainers
        CREATE OBJECT dc_inst.
        if sy-subrc <> 0.
          clear dc_inst.
        else.
          dc_manage = dc_inst.
          call method dc_manage->init
            IMPORTING
              id     = my_id_at_dc
              retval = retval.
          if retval <> cl_gfw=>ok.
            clear dc_inst.
            clear dc_manage.
          else.
    **kann man mit Daten füllen
          endif.
        endif.
    endif.
      if retval <> cl_gfw=>ok.
        call method cl_gfw=>show_msg
          EXPORTING
            msgno = retval.
      endif.
    *****ENDE Erstellen eines Datencontainers
    *Dem Datencontainer mitteilen, das Änderungen der Daten der Grafik mitgeteilt werden
      if not dc_manage is initial.
        call method dc_manage->distribute_changes
          IMPORTING
            retval = retval.
        if retval <> cl_gfw=>ok.
          CALL METHOD cl_gfw=>show_msg
            EXPORTING
              msgno = retval.
        endif.
      endif.
    *Aktivierung des Multiplexers
      CALL METHOD cl_gfw_mux=>activate
        IMPORTING
          retval = retval.
    *Überprüfen ob start des Multiplexers erfolgreich war
      if retval <> cl_gfw=>ok.
        CALL METHOD cl_gfw=>show_msg
          EXPORTING
            msgno = retval.
      endif.
    *Objekt Chart daten anlegen!
    IF Chart_Daten IS INITIAL.
        CREATE OBJECT Chart_Daten.
    ENDIF.
    *Daten für den Chart füllen
      Loop at IT_erg_anz where selected ne 'X'.
      read table it_erg into wa_erg index sy-tabix.
        CALL METHOD Chart_Daten->fuellen
          EXPORTING
            DC_MANAGE = dc_manage
            wa_data   = wa_erg
          IMPORTING
            RETVAL    = retval.
        CALL METHOD Chart_Daten->fuellen_ogw
          EXPORTING
            DC_MANAGE = dc_manage
            wa_data   = wa_erg
          IMPORTING
            RETVAL    = retval.
        CALL METHOD Chart_Daten->fuellen_ugw
          EXPORTING
            DC_MANAGE = dc_manage
            wa_data   = wa_erg
          IMPORTING
            RETVAL    = retval.
      endloop.
    *Container erzeugen
      create object custom_container
              exporting container_name = 'LINE_DIAGRAMM'.
    *DEM Grafik-proxy die Attribute mitteilen
      CREATE OBJECT GP_INST.
      create, initialize and activate graphics proxy
        CREATE OBJECT GP_INST.
        CALL METHOD GP_INST->IF_GRAPHIC_PROXY~INIT
                     EXPORTING DC        = DC_INST
                               PARENT    = CUSTOM_CONTAINER
                               prod_id   = cl_gui_gp_pres=>co_prod_chart
                     IMPORTING RETVAL    = RETVAL.
        IF RETVAL = CL_GFW=>OK.
        set DC names
          CALL METHOD GP_INST->SET_DC_NAMES
                        EXPORTING
                           OBJ_ID    = 'OBJID'
                           DIM1      = 'X_VAL'
                           DIM2      = 'Y_VAL'
                           GRP_ID    = 'GRPID'
                        IMPORTING RETVAL = RETVAL.
        ENDIF. "// set dc names
    *setzen von customizing einstellungen
    set default display context
      create object bundle_display exporting instance_id = 'GFWTA'.
    set background color
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bg_clr_plt_id
                  value   = 18. " grey
    gitterraster
       call method bundle_display->if_customizing~set
         exporting attr_id = cl_cu_display_context=>co_visibility
                   value = 1.
    disable lines
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_style
                  value   = 1. " no line
    call method bundle_display->if_customizing~set
              exporting attr_id = cl_cu_display_context=>co_pt_alignment
       value = '4'.
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_diagram
                  bundle = bundle_display
        importing retval = retval.
    drawing area (used to set chart title)
      create object bundle_drawing exporting instance_id = 'GFWTAS'.
    set title
      call method bundle_drawing->if_customizing~set
        exporting attr_id = cl_cu_drawing_area=>co_title
                  value   = uschrift.
    *call method bundle_drawing->if_customizing~set
       exporting attr_id = cl_cu_drawing_area=>CO_LEGEND_CONTEXT
                 value   = 1.
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart
                  bundle = bundle_drawing
        importing retval = retval.
    Für Chart 1***********************************************
    values (group 1)
      create object bundle_values1 exporting instance_id = 'GFWTA1'.
    prepare display context for values
      create object bundle_display exporting instance_id = 'dummy'.
    set color of line and markers
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_clr_plt_id
                  value   = 1. " schwarz
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_style
                  value   = 2.
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_bg_clr_plt_id
                  value   = 1.
    copy display context into values
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_curve_context
                  value   = bundle_display.
    set chart type
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_style
                  value   = 34. " xy scatter
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart
                  key    = 'Mittelwert'
                  bundle = bundle_values1
        importing retval = retval.
    Für unterer Grenzertwert***********************************************
    values (group 1)
      create object bundle_values1 exporting instance_id = 'GFWTA2'.
    prepare display context for values
      create object bundle_display exporting instance_id = 'dummy'.
    set color of line and markers
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_clr_plt_id
                  value   = 3. " rot
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_style
                  value   = 0.
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_bg_clr_plt_id
                  value   = 2.
    copy display context into values
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_curve_context
                  value   = bundle_display.
    set chart type
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_style
                  value   = 34. " xy scatter
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart
                  key    = 'u.Grenzwert' "Name
                  bundle = bundle_values1
        importing retval = retval.
    *Für oberer Grenzertwert***********************************************
    values (group 1)
      create object bundle_values1 exporting instance_id = 'GFWTA3'.
    prepare display context for values
      create object bundle_display exporting instance_id = 'dummy'.
    set color of line and markers
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_clr_plt_id
                  value   = 7. " schwarz
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_style
                  value   = 0.
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_mr_bg_clr_plt_id
                  value   = 2.
    copy display context into values
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_curve_context
                  value   = bundle_display.
    set chart type
      call method bundle_values1->if_customizing~set
        exporting attr_id = cl_cu_values=>co_style
                  value   = 34. " xy scatter
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart
                  key    = 'o.Grenzwert' "Name
                  bundle = bundle_values1
        importing retval = retval.
    ****X-ACHSE
    primary x-axis
      create object bundle_axis_x exporting instance_id = 'GFWTA_X'.
    prepare display context for axis title
      create object bundle_display exporting instance_id = 'dummy'.
    disable axis title
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_style
                  value   = 1.
      call method bundle_axis_x->if_customizing~set
          exporting attr_id = cl_cu_axis=>co_title
                    value   = 'Zähler'.
    enable scrollbar of axis and set view port
    call method bundle_axis_x->if_customizing~set
    exporting attr_id = cl_cu_axis=>CO_VISIBLE_CATEGORIES_AUTO
    value = gfw_false.
    call method bundle_axis_x->if_customizing~set
    exporting attr_id = cl_cu_axis=>CO_VISIBLE_CATEGORIES
    value = 7.
    call method bundle_axis_x->if_customizing~set
    exporting attr_id = cl_cu_axis=>CO_START_CATEGORY
    value = 1.
    copy display context into axis
      call method bundle_axis_x->if_customizing~set
        exporting attr_id = cl_cu_axis=>co_title_context
                  value   = bundle_display.
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart_x_prim_axis
                  bundle = bundle_axis_x
        importing retval = retval.
    ***X-ACHSE GRID
    create object bundle_grid_x exporting instance_id = 'GFWTA_X_GRID'.
    prepare display context for grid
      create object bundle_display exporting instance_id = 'dummy'.
    minor grid lines should be invisible
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_visibility
                  value   = gfw_false.
    copy display context into grid (for minor lines)
      call method bundle_grid_x->if_customizing~set
        exporting attr_id = cl_cu_grid=>co_minor_context
                  value   = bundle_display.
    copy display context into grid (for major lines)
      call method bundle_grid_x->if_customizing~set
        exporting attr_id = cl_cu_grid=>co_MAJOR_context
                  value   = bundle_display.
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart_x_prim_axis
                  bundle = bundle_grid_x
        importing retval = retval.
    ***Y-ACHSE GRID
    create object bundle_grid_y exporting instance_id = 'GFWTAYGRID'.
    prepare display context for grid
    create object bundle_display exporting instance_id = 'dummy'.
    minor grid lines should be invisible
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_visibility
                  value   = gfw_false.
    copy display context into grid (for minor lines)
      call method bundle_grid_y->if_customizing~set
        exporting attr_id = cl_cu_grid=>co_minor_context
                  value   = bundle_display.
    copy display context into grid (for major lines)
      call method bundle_grid_y->if_customizing~set
        exporting attr_id = cl_cu_grid=>co_MAJOR_context
                  value   = bundle_display.
    tell the proxy where to use the bundle
      call method gp_inst->if_graphic_proxy~add_cu_bundle
        exporting port   = if_graphic_proxy=>co_port_chart_y_prim_axis
                  bundle = bundle_grid_y
        importing retval = retval.
    *Y_ACHSE----
    primary y-axis
      create object bundle_axis_y exporting instance_id = 'GFWTA_Y'.
      create object bundle_display exporting instance_id = 'dummy'.
      call method bundle_display->if_customizing~set
      exporting attr_id = cl_cu_display_context=>co_visibility
      value = gfw_false.
    *min range title
      CALL METHOD BUNDLE_AXIS_Y->IF_CUSTOMIZING~SET
        EXPORTING ATTR_ID = CL_CU_AXIS=>CO_MIN_RANGE_TITLE
                VALUE = 'MIN'.
      CALL METHOD BUNDLE_AXIS_Y->IF_CUSTOMIZING~SET
        EXPORTING ATTR_ID = CL_CU_AXIS=>CO_MIN_RANGE_VALUE
                  VALUE = 400.
      CALL METHOD BUNDLE_AXIS_Y->IF_CUSTOMIZING~SET
        EXPORTING ATTR_ID = CL_CU_AXIS=>CO_RANGE_CONTEXT
        VALUE = BUNDLE_DISPLAY.
    prepare display context for axis title
      create object bundle_display exporting instance_id = 'dummy'.
    axis title
      call method bundle_display->if_customizing~set
        exporting attr_id = cl_cu_display_context=>co_bl_style
                  value   = 1.
      call method bundle_axis_y->if_customizing~set
          exporting attr_id = cl_cu_axis=>co_title
                    value   = wa_erg_anz-prueflosa.
    copy display context into axis
      call method bundle_axis_y->if_customizing~set
        exporting attr_id = cl_cu_axis=>co_title_context
                  value   = bundle_display.
    CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
        EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART_Y_PRIM_AXIS
                            BUNDLE = BUNDLE_AXIS_Y
                  IMPORTING RETVAL = RETVAL.
    CALL METHOD GP_INST->FREE.
      IF RETVAL <> CL_GFW=>OK.
          CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE. "//ignore return value(keep 1st)
          CALL METHOD dc_manage->FREE.
          CLEAR GP_INST.
          free gp_inst.
        ELSE.
          CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ACTIVATE
                                   IMPORTING RETVAL = RETVAL.
          CALL METHOD dc_manage->FREE.
        ENDIF.
        IF RETVAL <> CL_GFW=>OK.
          CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
          free gp_inst.
        ENDIF.
    *CALL METHOD GP_INST->if_dc_access~del_object.
    abt user command this code will be executed:
    when 'BACK'.
          CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE. "//ignore return value(keep 1st)
          CALL METHOD dc_manage->FREE.
          CLEAR GP_INST.
          free gp_inst.
          CLEAR dc_manage.
          free dc_manage.
    leave to screen 0.

  • Is it possible to create a hyperlink in a WebI chart?

    Hi,
    I am trying to create a grouped bar chart in WebI (BO XI 3.1) in which clicking on a column should open a different WebI report, passing the selected values as parameters to the report. I have tried to create a hyperlink on the x-axis dimension object, but even when the "read content as hyperlink" option is checked, the axis labels still show the "<a href=http .... " text instead of the hyperlink interpretation and the hyperlink does not work.
    When the same link is applied to a table, it works fine.
    Any suggestions are appreciated.
    Thanks,
    Sander

    Hi Praven,
    Thanks for your reply. However, the problem is not in creating a hyperlink in a cell. As I mentioned in the initial question, the hyperlink works perfectly when part of a table. It will show the other report with the dimension objects filtered as you would expect.
    The table holds three columns:
    - Shoporder
    - Operation
    - Count
    I have set the hyperlink on the operation dimension and when a row is clicked, the target report is opened for that operation and that shoporder.
    The problem is that this hyperlink functionality seems not available (or not working correctly) in a chart.
    Thanks,
    Sander

  • Mapping Java Types to XML Types

    Hi, I have a small doubt in web services,
    1)  how a java data type can match with xml data type in wsdl,
    2)  how and where the java program can find the matching java
        data type to xml data type and vice versa
    3)  whether any mechanism is available for this data conversion?
    4)  where can i find that one?
    Please advice me
    Regards
    Marimuthu.N

    Hi Marimuthu.N,
    My answers for your question, Kindly let me know if you need some more inputs.
    +1) how a java data type can match with xml data type in wsdl,+
    In SOAP 1.1 you have the following data types which is in XSD(XML Schema Definition), the same data type is also available in Java. For example (string, normalizedstring in xml is available as java.lang.String)
    The complete list can be found in the table below.
    XSD to Java Mapping.
    XSD Type--------------------------------Java Type
    base64Binary----------------------------byte[]
    hexBinary---------------------------------byte[]
    boolean------------------------------------Boolean
    byte-----------------------------------------Byte
    dateTime----------------------------------java.util.Calendar
    date-----------------------------------------java.util.Calendar
    time-----------------------------------------java.util.Calendar
    decimal------------------------------------java.math.BigDecimal
    double-------------------------------------Double
    float-----------------------------------------Float
    hexBinary---------------------------------byte[]
    int--------------------------------------------Int
    unsignedShort---------------------------Int
    integer--------------------------------------java.math.BigInteger
    long------------------------------------------Long
    unsignedInt-------------------------------Long
    QName-------------------------------------javax.xml.namespace.QName
    short----------------------------------------Short
    unsignedByte---------------------------Short
    string---------------------------------------java.lang.String
    anySimpleType-------------------------java.lang.String
    +2) how and where the java program can find the matching java+
    data type to xml data type and vice versa
    Here is my WSDL which has a method getHello --> Pass Input as String --> Get Response as String.
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://zackria.googlepages.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://zackria.googlepages.com" xmlns:intf="http://zackria.googlepages.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!--WSDL created by Apache Axis version: 1.4
    Built on Apr 22, 2006 (06:55:48 PDT)-->
    <wsdl:types>
      <schema elementFormDefault="qualified" targetNamespace="http://zackria.googlepages.com" xmlns="http://www.w3.org/2001/XMLSchema">
       <element name="getHello">
        <complexType>
         <sequence>
          <element name="s" type="xsd:string"/>
         </sequence>
        </complexType>
       </element>
       <element name="getHelloResponse">
        <complexType>
         <sequence>
          <element name="getHelloReturn" type="xsd:string"/>
         </sequence>
        </complexType>
       </element>
      </schema>
    </wsdl:types>
       <wsdl:message name="getHelloResponse">
          <wsdl:part element="impl:getHelloResponse" name="parameters"/>
       </wsdl:message>
       <wsdl:message name="getHelloRequest">
          <wsdl:part element="impl:getHello" name="parameters"/>
       </wsdl:message>
       <wsdl:portType name="Test">
          <wsdl:operation name="getHello">
             <wsdl:input message="impl:getHelloRequest" name="getHelloRequest"/>
             <wsdl:output message="impl:getHelloResponse" name="getHelloResponse"/>
          </wsdl:operation>
       </wsdl:portType>
       <wsdl:binding name="TestSoapBinding" type="impl:Test">
          <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
          <wsdl:operation name="getHello">
             <wsdlsoap:operation soapAction=""/>
             <wsdl:input name="getHelloRequest">
                <wsdlsoap:body use="literal"/>
             </wsdl:input>
             <wsdl:output name="getHelloResponse">
                <wsdlsoap:body use="literal"/>
             </wsdl:output>
          </wsdl:operation>
       </wsdl:binding>
       <wsdl:service name="TestService">
          <wsdl:port binding="impl:TestSoapBinding" name="Test">
             <wsdlsoap:address location="http://localhost:8080/TestWebService/services/Test"/>
          </wsdl:port>
       </wsdl:service>
    </wsdl:definitions>I use apache axis for the client side code. I also suggest to start using this to get quickly into SOA(Service Oriented Architecture)
    package com.googlepages.zackria;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import javax.xml.namespace.QName;
    * TestClient for Webservice
    * @author $author$Mohammed Zackria
    * @version $Revision$1.00
    public class TestClient {
         * main method
         * @param args pass nothing as far now
        public static void main(String[] args) {
            try {
                String endpoint = "http://localhost:8080/TestWebService/services/Test";
                Service service = new Service();
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(endpoint));
                call.setOperationName(new QName("http://zackria.googlepages.com", "getHello"));
                //String Conversion
                String ret = (String) call.invoke(new Object[] { "Zack" });
                System.out.println("Sent 'Zack', got '" + ret + "'");
            } catch (Exception e) {
                System.err.println(e.toString());
    }+3) whether any mechanism is available for this data conversion?+
    Check the above code which has the following portion
    //String Conversion
    String ret = (String) call.invoke(new Object[] { "Zack" });
    By default APACHE Axis returns Object Array which can be Casted to your WSDL defined data type.
    +4) where can i find that one?+
    [Eclipse Webservice|http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/BottomUpWebService/BottomUpWebService.html]
    Hope this helps out, Kindly Let me know if you need some more or if i have not answered your question.
    Regards,
    Zack
    Edited by: zack on Nov 22, 2008 1:47 PM
    Edited by: zack on Nov 22, 2008 1:49 PM

  • Extend OWSM with Custom Policy Step: MessageContext.setResponseMessage()?

    Hi,
    I intend to create a custom policy step for OWSM.
    In the execute method of my step (that extends AbstractStep) I want to set the Response Message using the setResponseMessage() method. According to the Extensibility Guide, this method should be passed a com.cfluent.ccore.message.SOAPMessage object as parameter.
    Basically, the code looks something like this:
    public IResult execute(IMessageContext messageContext) throws Fault {
    MessageContext msgCtxt = (MessageContext)messageContext;
    Result result = new Result();
    msgCtxt.setResponseMessage(msgCtxt.getRequestMessage());
    result.setStatus(IResult.SUCCEEDED);
    return result;
    At compile time however, JDeveloper throws the following error:
    SOAPMessage not found in class nl.amis.soa.CustomStep
    and points to the line
    msgCtxt.setResponseMessage(msgCtxt.getRequestMessage());
    Should I use AXIS SOAP objects (knowing OWSM is based on AXIS or uses it)? Or a MessageFactory? Or ... ?
    Any tips and preferably a code sample is much appreciated!
    Thanks, Sjoerd

    Hi Sjoerd ,
    Looks like documentation error. Are you importing the om.cfluent.ccore.message.SOAPMessage class? Try compiling without the import. I was able to compile your code with no issues. All I have is coresv-4.0.jar added to my jDev project.
    FYI MessageContext.get/setRequestMessage() really takes javax.xml.soap.SOAPMessage as parameter.
    Here is the code I can compile:
    package com.junk.wsm;
    import com.cfluent.pipelineengine.container.MessageContext;
    import com.cfluent.policysteps.sdk.AbstractStep;
    import com.cfluent.policysteps.sdk.IMessageContext;
    import com.cfluent.policysteps.sdk.IResult;
    import com.cfluent.policysteps.sdk.Result;
    public class junkStep extends AbstractStep {
    public junkStep() {
    public IResult execute(IMessageContext messageContext) {
    MessageContext msgCtxt = (MessageContext)messageContext;
    Result result = new Result();
    msgCtxt.setResponseMessage(msgCtxt.getRequestMessage());
    result.setStatus(IResult.SUCCEEDED);
    return result;
    Regards,
    Rajesh

  • Unable to deploy Webservice through NWDI

    I have created a DC for Webservice and after activate the DC
    able to view the Webservice at Visual Administration>server>services-->deploy -->application , and the status of the webservcie was started but the Webservice does not exist in WebServiceNavigator ((http://<hostname>:<portno>/index.html)
    and click on WebserviceNavigator).
    Please find the Default Trace log
    java.rmi.RemoteException: Error in getting status of application WEB SERVICE PORTS:
    /AdminPartySrvc/AdminPartySrvc
    - webservices : Application WEB SERVICE PORTS:
    /AdminPartySrvc~AdminPartySrvc
    - webservices is not deployed on cluster element Server 0 0_87195 and it is not possible to get its status.
         at com.sap.engine.services.deploy.server.DeployServiceImpl.getApplicationStatus(DeployServiceImpl.java:1370)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.getApplicationStatus(DeployServiceImpl.java:1387)
         at com.sap.engine.services.deploy.server.DeployRuntimeControlImpl.getApplicationStatus(DeployRuntimeControlImpl.java:409)
         at sun.reflect.GeneratedMethodAccessor502.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at com.sap.pj.jmx.introspect.DefaultMBeanInvoker.invoke(DefaultMBeanInvoker.java:58)
         at com.sap.pj.jmx.mbeaninfo.AdditionalInfoProviderMBean.invoke(AdditionalInfoProviderMBean.java:289)
         at com.sap.pj.jmx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:944)
         at com.sap.pj.jmx.server.interceptor.MBeanServerWrapperInterceptor.invoke(MBeanServerWrapperInterceptor.java:288)
         at com.sap.engine.services.jmx.CompletionInterceptor.invoke(CompletionInterceptor.java:409)
         at com.sap.pj.jmx.server.interceptor.BasicMBeanServerInterceptor.invoke(BasicMBeanServerInterceptor.java:277)
         at com.sap.jmx.provider.ProviderInterceptor.invoke(ProviderInterceptor.java:258)
         at com.sap.engine.services.jmx.RedirectInterceptor.invoke(RedirectInterceptor.java:340)
         at com.sap.pj.jmx.server.interceptor.MBeanServerInterceptorChain.invoke(MBeanServerInterceptorChain.java:330)
         at com.sap.engine.services.jmx.MBeanServerSecurityWrapper.invoke(MBeanServerSecurityWrapper.java:287)
         at com.sap.engine.services.jmx.MBeanServerInvoker.invokeMbs(MBeanServerInvoker.java:131)
         at com.sap.engine.services.jmx.ClusterInterceptor.invokeMbs(ClusterInterceptor.java:212)
         at com.sap.engine.services.jmx.ClusterInterceptor.invoke(ClusterInterceptor.java:766)
         at com.sap.engine.services.jmx.MBeanServerInterceptorInvoker.invokeMbs(MBeanServerInterceptorInvoker.java:102)
         at com.sap.engine.services.jmx.connector.p4.P4ConnectorServerImpl.invokeMbs(P4ConnectorServerImpl.java:61)
         at com.sap.engine.services.jmx.connector.p4.P4ConnectorServerImplp4_Skel.dispatch(P4ConnectorServerImplp4_Skel.java:64)
         at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:320)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:198)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:129)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

    Friends,
    I looked at the javadocs for axis and came to know the following points
    bq. quote: \\ ----- \\ Gets the axis configuration object by loading the repository. The order of initialization is according the the following precedence: \\ If the parameter axis2.repository.path is present, this folder is used as the location to the repository. \\ Otherwise, if the parameter axis2.repository.url is present, the URL is used as the location to the repository. \\ Otherwise, when both of the above init parameters are not present, the web applications WEB-INF folder is used as the folder for the repository -----
    When I have deployed the application in weblogic 9.2 the directory structure is as follows
    bq. code: \\ ----- \\ {noformat}domain-name \\ |- servers \\ |-Trac \\ |- data \\ |- logs \\ |- security \\ |- stage \\ |- tmp \\ |- .internal \\ |- WLinternal \\ |- WLuser \\ |- Trac \\ |- ptntnw \\ |- public \\ |- war \\ |- axis2-web \\ |- META-INF \\ |- WEB-INF \\ |- classes \\ |- conf \\ |- modules \\ |- services{noformat} \\ -----
    conf folder has axis2.xml and services folder has all the services I had deployed. Now if I mention absolute path in web.xml for axis2.xml.path and absolute path for axis2.repository.path then everything works fine.. I am able to see all the webservices I have deployed when I hit the above url.
    Can anyone tell me how can I specify the relative path? If I dont specify any init param tag in web.xml, still it doesnt work.
    Can anyone please help me ?
    Thanks
    Rohit.
    Edited by: Rohit_India on Dec 11, 2008 10:02 PM

  • I am trying to convert latitude and longitude into UTM coordinates.

    I am trying to convert latitude and longitude into UTM coordinates. can sombody please help

    Hi....I am 'anu' from india.
    I want to draw 3D plot of aircraft trajetory by using the latitude,longittude and altitude of aircraft is it possible with labview8.5. If you have any similar VI pls share. And is it possible to define a 3D object like aircraft, 2 axis moving objects?
    Thanks in Advance

  • Can't See 3d Scene Icons

    Hi,
    In motion 3, I have to simple objects in a 3d group and then I added a camera and a light.
    I made sure my 3d overlays was checked on, and the 3d scene icons was checked on and the 3d grid and compass were checked on as well. When I click on a view in the compass say top view, or right view I can't see the added camera, can't see the added light I can't even see the lines of my objects either. I can see the grid, and the compass but no scene icons.
    help, please!
    thanks

    yes and yes. Nada. I have plenty of room on my monitor to fit the window. When select the camera in the layers pallette and press F, to frame the camera, Motion zooms in to some point displaying nothing at all but the grid.
    The only thing that I can see are grid, and the red, green and blue lines representing the x,y, and z axis'. I see the objects themselves but ONLY if they are not perpendicular to an axis (the objects are simple 2d illustrations, a clock and a pair of scissors). If they are perpendicular to an axis in a view, say the top view, all see are the colored axis lines and the grid.

  • Graphical representation of report

    hi  ..
    How do we  provide  graphical representation of  report  output.

    Hi
    1st example
    report GRAPHICS_GUI_CE_DEMO.
    global data
    data: G_CE_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER.
    data: G_CE_NEW_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER.
    data: G_CE_VIEWER type ref to CL_GUI_CHART_ENGINE.
    data: G_CE_VIEWER_NEW type ref to CL_GUI_CHART_ENGINE.
    data: G_IXML type ref to IF_IXML.
    data: G_IXML_SF type ref to IF_IXML_STREAM_FACTORY.
    data: G_DESIGN_MODE type C.
    data: G_VALUE_CHANGE type C.
    data: G_SAVE_OKCODE like SY-UCOMM.
    dynpro data
    data: OKCODE like SY-UCOMM,
    GT_SFLIGHT type table of SFLIGHT,
    G_REPID like SY-REPID,
    G_MAX type I value 100,
    MYCONTAINER type SCRFNAME value 'NEW_CONTAINER',
    reference to custom container: neccessary to bind ALV Control
    CUSTOM_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER,
    GRID1 type ref to CL_GUI_ALV_GRID.
    'x_save' contains a flag to control which kind of a layout the user
    can save (see below).
    'gs_layout' identifies a layout. It must contain
    at least the report-id.
    § 1.Declare a structure of type DISVARIANT to identify a layout
    and a variable to define the saving options for users.
    data: X_SAVE, "for Parameter I_SAVE
    GS_LAYOUT type DISVARIANT. "for parameter IS_VARIANT
    event handler
    class LCL_CE_VIEWER_EH definition.
    public section.
    methods ON_CLICK for event CLICK of CL_GUI_CHART_ENGINE
    importing
    ELEMENT SERIES POINT.
    methods ON_VALUE_CHANGE for event VALUE_CHANGE of
    CL_GUI_CHART_ENGINE
    importing
    SERIES POINT VALUE.
    methods ON_PROPERTY_CHANGE for event PROPERTY_CHANGE of
    CL_GUI_CHART_ENGINE
    importing
    ELEMENT NAME VALUE.
    endclass. "lcl_ce_viewer_eh DEFINITION
    data: G_CE_VIEWER_EH type ref to LCL_CE_VIEWER_EH.
    data: G_CE_VIEWER_EH_NEW type ref to LCL_CE_VIEWER_EH.
    entry point
    start-of-selection.
    *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    start-of-selection.
    select * from SFLIGHT into table GT_SFLIGHT up to G_MAX rows.
    *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    clear GS_LAYOUT.
    create global objects
    G_IXML = CL_IXML=>CREATE( ).
    G_IXML_SF = G_IXML->CREATE_STREAM_FACTORY( ).
    G_REPID = SY-REPID.
    § 2.At least field REPORT of this structure has to be filled!
    GS_LAYOUT-REPORT = G_REPID.
    X_SAVE = 'A'. "The user may save all types of a layout
    call screen '100'.
    ENDREPORT GRAPHICS_GUI_CE_DEMO.
    *& Module STATUS_0100 OUTPUT
    text
    module STATUS_0100 output.
    data: L_IXML_DATA_DOC type ref to IF_IXML_DOCUMENT,
    L_IXML_CUSTOM_DOC type ref to IF_IXML_DOCUMENT,
    L_OSTREAM type ref to IF_IXML_OSTREAM,
    L_XSTR type XSTRING.
    set pf-status '100'.
    if G_CE_CONTAINER is initial.
    create object G_CE_CONTAINER
    exporting
    CONTAINER_NAME = 'CONTAINER'.
    create object G_CE_VIEWER
    exporting
    PARENT = G_CE_CONTAINER.
    create object G_CE_VIEWER_EH.
    set handler G_CE_VIEWER_EH->ON_CLICK for G_CE_VIEWER.
    set handler G_CE_VIEWER_EH->ON_VALUE_CHANGE for G_CE_VIEWER.
    set handler G_CE_VIEWER_EH->ON_PROPERTY_CHANGE for G_CE_VIEWER.
    perform CREATE_DATA_DEMO using L_IXML_DATA_DOC.
    L_OSTREAM = G_IXML_SF->CREATE_OSTREAM_XSTRING( L_XSTR ).
    call method L_IXML_DATA_DOC->RENDER
    exporting
    OSTREAM = L_OSTREAM.
    G_CE_VIEWER->SET_DATA( XDATA = L_XSTR ).
    clear L_XSTR.
    perform CREATE_CUSTOM_DEMO using L_IXML_CUSTOM_DOC.
    L_OSTREAM = G_IXML_SF->CREATE_OSTREAM_XSTRING( L_XSTR ).
    call method L_IXML_CUSTOM_DOC->RENDER
    exporting
    OSTREAM = L_OSTREAM.
    G_CE_VIEWER->SET_CUSTOMIZING( XDATA = L_XSTR ).
    endif.
    call method G_CE_VIEWER->RENDER.
    if CUSTOM_CONTAINER is initial.
    create a custom container control for our ALV Control
    create object CUSTOM_CONTAINER
    exporting
    CONTAINER_NAME = MYCONTAINER
    exceptions
    CNTL_ERROR = 1
    CNTL_SYSTEM_ERROR = 2
    CREATE_ERROR = 3
    LIFETIME_ERROR = 4
    LIFETIME_DYNPRO_DYNPRO_LINK = 5.
    if SY-SUBRC ne 0.
    add your handling, for example
    call function 'POPUP_TO_INFORM'
    exporting
    TITEL = G_REPID
    TXT2 = SY-SUBRC
    TXT1 = 'The control could not be created'(510).
    endif.
    create object GRID1
    exporting I_PARENT = CUSTOM_CONTAINER.
    § 4.Transfer your structure and your variable using parameters
    IS_VARIANT and I_SAVE of method set_table_for_first_display.
    call method GRID1->SET_TABLE_FOR_FIRST_DISPLAY
    exporting
    I_STRUCTURE_NAME = 'SFLIGHT'
    IS_VARIANT = GS_LAYOUT "&see below
    I_SAVE = X_SAVE "&see below
    I_DEFAULT = 'X'
    changing
    IT_OUTTAB = GT_SFLIGHT.
    & If you leave out the these parameters, the menu beneath
    the layout icon disappears.
    endif.
    endmodule. " STATUS_0100 OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    text
    module USER_COMMAND_0100 input.
    G_SAVE_OKCODE = OKCODE.
    clear OKCODE.
    case G_SAVE_OKCODE.
    when 'DESIGN'.
    perform TOGGLE_DESIGN_MODE.
    when 'VALUE'.
    perform TOGGLE_VALUE_CHANGE.
    when 'SAVE'.
    perform SAVE_CUSTOMIZING.
    when 'PRINT'.
    perform PRINT.
    when 'EXIT'.
    leave program.
    when 'BACK'.
    leave program.
    endcase.
    endmodule. " USER_COMMAND_0100 INPUT
    *& IMPLEMENTATION
    text
    class CL_ABAP_CHAR_UTILITIES definition load.
    *& Form create_data_demo
    text
    form CREATE_DATA_DEMO using P_IXML_DOC type ref to IF_IXML_DOCUMENT.
    data: L_SIMPLECHARTDATA type ref to IF_IXML_ELEMENT,
    L_CATEGORIES type ref to IF_IXML_ELEMENT,
    L_SERIES type ref to IF_IXML_ELEMENT,
    L_ELEMENT type ref to IF_IXML_ELEMENT,
    L_ENCODING type ref to IF_IXML_ENCODING.
    P_IXML_DOC = G_IXML->CREATE_DOCUMENT( ).
    L_ENCODING = G_IXML->CREATE_ENCODING(
    BYTE_ORDER = IF_IXML_ENCODING=>CO_LITTLE_ENDIAN
    CHARACTER_SET = 'utf-8' ).
    P_IXML_DOC->SET_ENCODING( L_ENCODING ).
    L_SIMPLECHARTDATA = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'SimpleChartData' PARENT = P_IXML_DOC ).
    L_CATEGORIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Categories' PARENT = L_SIMPLECHARTDATA ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'C' PARENT = L_CATEGORIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '1st quarter' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'C' PARENT = L_CATEGORIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '2nd quarter' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'C' PARENT = L_CATEGORIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '3rd quarter' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'C' PARENT = L_CATEGORIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '4th quarter' ).
    L_SERIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Series' PARENT = L_SIMPLECHARTDATA ).
    L_SERIES->SET_ATTRIBUTE( NAME = 'label' VALUE = 'Coffee' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '94' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '110' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '139' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '192' ).
    L_SERIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Series' PARENT = L_SIMPLECHARTDATA ).
    L_SERIES->SET_ATTRIBUTE( NAME = 'label' VALUE = 'Espresso' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '35' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '39' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '38' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'S' PARENT = L_SERIES ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '59' ).
    endform. " create_data_demo
    *& Form create_custom_demo
    text
    form CREATE_CUSTOM_DEMO using P_IXML_DOC type ref to IF_IXML_DOCUMENT.
    data: L_ROOT type ref to IF_IXML_ELEMENT,
    L_GLOBALSETTINGS type ref to IF_IXML_ELEMENT,
    L_DEFAULT type ref to IF_IXML_ELEMENT,
    L_ELEMENTS type ref to IF_IXML_ELEMENT,
    L_CHARTELEMENTS type ref to IF_IXML_ELEMENT,
    L_TITLE type ref to IF_IXML_ELEMENT,
    L_ELEMENT type ref to IF_IXML_ELEMENT,
    L_ENCODING type ref to IF_IXML_ENCODING.
    P_IXML_DOC = G_IXML->CREATE_DOCUMENT( ).
    L_ENCODING = G_IXML->CREATE_ENCODING(
    BYTE_ORDER = IF_IXML_ENCODING=>CO_LITTLE_ENDIAN
    CHARACTER_SET = 'utf-8' ).
    P_IXML_DOC->SET_ENCODING( L_ENCODING ).
    L_ROOT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'SAPChartCustomizing' PARENT = P_IXML_DOC ).
    L_ROOT->SET_ATTRIBUTE( NAME = 'version' VALUE = '1.1' ).
    L_GLOBALSETTINGS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'GlobalSettings' PARENT = L_ROOT ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'FileType' PARENT = L_GLOBALSETTINGS ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'PNG' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Dimension' PARENT = L_GLOBALSETTINGS ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'PseudoThree' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Width' PARENT = L_GLOBALSETTINGS ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '640' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Height' PARENT = L_GLOBALSETTINGS ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( '360' ).
    L_DEFAULT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Defaults' PARENT = L_GLOBALSETTINGS ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'FontFamily' PARENT = L_DEFAULT ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'Arial' ).
    L_ELEMENTS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Elements' PARENT = L_ROOT ).
    L_CHARTELEMENTS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'ChartElements' PARENT = L_ELEMENTS ).
    L_TITLE = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Title' PARENT = L_CHARTELEMENTS ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Extension' PARENT = L_TITLE ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'href="sapevent:onclick?Title"' ).
    L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
    NAME = 'Caption' PARENT = L_TITLE ).
    L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'Caffeine Consumption' ).
    endform. " create_custom_demo
    *& Form toggle_design_mode
    text
    form TOGGLE_DESIGN_MODE .
    data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN.
    catch system-exceptions MOVE_CAST_ERROR = 1.
    L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
    endcatch.
    if SY-SUBRC is initial.
    if G_DESIGN_MODE is initial.
    G_DESIGN_MODE = 'X'.
    else.
    G_DESIGN_MODE = ' '.
    endif.
    L_WIN_CHART->SET_DESIGN_MODE( FLAG = G_DESIGN_MODE EVENT = 'X' ).
    L_WIN_CHART->RESTRICT_CHART_TYPES( CHARTTYPES = 'Columns|Lines' ).
    L_WIN_CHART->RESTRICT_PROPERTY_EVENTS( EVENTS = 'ChartType' ).
    endif.
    endform. " toggle_design_mode
    *& Form toggle_value_change
    text
    form TOGGLE_VALUE_CHANGE .
    data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN.
    catch system-exceptions MOVE_CAST_ERROR = 1.
    L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
    endcatch.
    if SY-SUBRC is initial.
    if G_VALUE_CHANGE is initial.
    G_VALUE_CHANGE = 'X'.
    L_WIN_CHART->ENABLE_VALUE_CHANGE( ).
    else.
    G_VALUE_CHANGE = ' '.
    L_WIN_CHART->DISABLE_VALUE_CHANGE( ).
    endif.
    endif.
    endform. " toggle_value_change
    *& Form save_customizing
    text
    form SAVE_CUSTOMIZING .
    data: L_XML_CUSTOMIZING type W3HTMLTABTYPE,
    L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN,
    L_FILENAME type STRING,
    L_FILEPATH type STRING,
    L_FILESIZE type I,
    L_PATH type STRING.
    catch system-exceptions MOVE_CAST_ERROR = 1.
    L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
    endcatch.
    if SY-SUBRC is initial.
    L_WIN_CHART->GET_CUSTOMIZING(
    importing
    DATA_TABLE = L_XML_CUSTOMIZING
    describe table L_XML_CUSTOMIZING lines L_FILESIZE.
    multiply L_FILESIZE by 255.
    L_FILENAME = 'customizing.xml'.
    call method CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    exporting
    DEFAULT_FILE_NAME = L_FILENAME
    changing
    FILENAME = L_FILENAME
    PATH = L_PATH
    FULLPATH = L_FILEPATH.
    if not L_FILEPATH is initial.
    call method CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    exporting
    FILETYPE = 'BIN'
    FILENAME = L_FILEPATH
    BIN_FILESIZE = L_FILESIZE
    changing
    DATA_TAB = L_XML_CUSTOMIZING
    exceptions
    FILE_WRITE_ERROR = 1
    others = 22.
    endif.
    endif.
    endform. " save_customizing
    *& Form print
    text
    form PRINT .
    data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN,
    L_S_PRINT_PARAMETERS type PRI_PARAMS.
    call function 'GET_PRINT_PARAMETERS'
    exporting
    DESTINATION = 'LOCL'
    MODE = 'CURRENT'
    NO_DIALOG = ''
    importing
    OUT_PARAMETERS = L_S_PRINT_PARAMETERS
    VALID = L_VALID
    exceptions
    ARCHIVE_INFO_NOT_FOUND = 1
    INVALID_PRINT_PARAMS = 2
    INVALID_ARCHIVE_PARAMS = 3
    others = 4.
    if SY-SUBRC <> 0.
    BREAK USCGXS22.
    endif.
    catch system-exceptions MOVE_CAST_ERROR = 1.
    L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
    endcatch.
    if SY-SUBRC is initial.
    new-page print on parameters L_S_PRINT_PARAMETERS no dialog.
    L_WIN_CHART->PRINT( ).
    new-page print off.
    endif.
    endform. " print
    *& Clas lcl_ce_viewer_eh
    text
    class LCL_CE_VIEWER_EH implementation.
    method ON_CLICK.
    data: L_MSG type STRING,
    L_SERIES type STRING,
    L_POINT type STRING.
    L_SERIES = SERIES.
    L_POINT = POINT.
    concatenate 'Element clicked:'(M01) ELEMENT
    'Series:'(T01) L_SERIES
    'Point:'(T02) L_POINT
    into L_MSG separated by SPACE.
    message L_MSG type 'S'.
    endmethod. "on_click
    method ON_VALUE_CHANGE.
    data: L_MSG type STRING,
    L_SERIES type STRING,
    L_POINT type STRING,
    L_VALUE type STRING.
    L_SERIES = SERIES.
    L_POINT = POINT.
    L_VALUE = VALUE.
    concatenate 'Value changed:'(M02)
    'Series:'(T01) L_SERIES
    'Point:'(T02) L_POINT
    'Value:'(T03) L_VALUE
    into L_MSG separated by SPACE.
    message L_MSG type 'S'.
    endmethod. "on_value_change
    method ON_PROPERTY_CHANGE.
    data: L_MSG type STRING.
    concatenate 'Property changed:'(M03)
    'Element:'(T04) ELEMENT
    'Name:'(T05) NAME
    'Value:'(T03) VALUE
    into L_MSG separated by SPACE.
    message L_MSG type 'S'.
    endmethod. "on_property_change
    endclass. "lcl_ce_viewer_eh IMPLEMENTATION
    2nd Example:
    REPORT zmar_graphics .
    This program illustrates a call to SAP Business Graphics. *
    Each row in the DATA table contains one text label and a *
    single numeric value. *
    DATA: BEGIN OF data OCCURS 1,
    text(25),
    value TYPE p,
    END OF data.
    DATA: tcol1(5) VALUE '#1991'.
    DATA: title(25) VALUE 'Sales'.
    SET PF-STATUS 'GRAF'.
    data-text = 'Product_1'.
    data-value = 153470.
    APPEND data.
    data-text = 'Product_2'.
    data-value = 253150.
    APPEND data.
    data-text = 'Product_3'.
    data-value = 53470.
    APPEND data.
    data-text = 'Product_4'.
    data-value = 182000.
    APPEND data.
    data-text = 'Product_5'.
    data-value = 92410.
    APPEND data.
    WRITE: / 'Products',22 tcol1.
    SKIP 2.
    LOOP AT data.
      WRITE: / data-text, 12 data-value.
    ENDLOOP.
    PF11: Put out a 2D graphic *
    AT PF11.
      CALL FUNCTION 'GRAPH_2D'
           EXPORTING
                titl = title
           TABLES
                data = data.
    2nd Example:
    REPORT zmar_graphics1.
    Data for 2D-Modification
    DATA: BEGIN OF data OCCURS 1,
    text(25),
    value TYPE p,
    END OF data.
    DATA: tcol1(5) VALUE '#1993'.
    DATA: title(25) VALUE 'Merchandise 1993'.
    DATA: tit2(10) VALUE 'Product'.
    DATA: mod_row(5), mod_col(5), mod_val(20).
    DATA: m_typ, b_typ, busg_stat.
    FIELD-SYMBOLS: .
    data-text = 'Refrigerators'.
    data-value = 12345.
    APPEND data.
    data-text = 'Freezers'.
    data-value = 22222.
    APPEND data.
    data-text = 'Ovens'.
    data-value = 11111.
    APPEND data.
    data-text = 'Dishwashers'.
    data-value = 54321.
    APPEND data.
    PERFORM output_2d.
    AT PF08.
      busg_stat = space. "// start and wait
    Event-Loop
      DO.
        CALL FUNCTION 'GRAPH_2D'
             EXPORTING
                  stat       = busg_stat
                  inform     = '7'  "// allow modify
                  mail_allow = 'X'  "// allow mail
             IMPORTING
                  m_typ      = m_typ
                  b_typ      = b_typ
                  mod_row    = mod_row
                  mod_col    = mod_col
                  mod_val    = mod_val
             TABLES
                  data       = data.
        busg_stat = '4'. "// Just wait next time
        CASE m_typ.
          WHEN 'D'. "// Programm ended
            EXIT.
          WHEN 'I'. "// Valid message
            IF b_typ = 'M'. "// Modify-event
              READ TABLE data INDEX mod_row.
              ASSIGN COMPONENT mod_col OF STRUCTURE data TO  = mod_val.
              MODIFY data INDEX mod_row.
            ENDIF.
            IF b_typ = 'S'. "// Select-event (ignored)
            ENDIF. "// For element (MOD_ROW-MOD_COL)
        ENDCASE.
      ENDDO.
      PERFORM output_2d.
    FORM OUTPUT_2D (Show the actual data)
    FORM output_2d.
      WRITE: / 'Products',22 tcol1.
      SKIP 2.
      LOOP AT data.
        WRITE: / data-text, 22 data-value.
      ENDLOOP.
    ENDFORM.
    3rd Example:
    REPORT zmar_graphics3.
    DATA: BEGIN OF hpgl OCCURS 1,
    entry(128),
    END OF hpgl.
    hpgl = 'SP6;PUPA0,0;'. APPEND hpgl.
    hpgl = 'PDPA100,100,100,200,200,200,200,100,100,100;'. APPEND hpgl.
    hpgl = 'SP1;PUPA100,150;'. APPEND hpgl.
    hpgl = 'PDPA100,150,150,200,200,150,150,100,100,150;'. APPEND hpgl.
    CALL FUNCTION 'GRAPH_HPGL'
         TABLES
              data = hpgl.
    4th Example:
    REPORT zmar_graphics4.
    DATA: BEGIN OF objt OCCURS 1. "// Object Attributes
            INCLUDE STRUCTURE gpoobjt.
    DATA: END OF objt.
    DATA: BEGIN OF area_tab OCCURS 1. "// Areas (unused)
            INCLUDE STRUCTURE gpoarea.
    DATA: END OF area_tab.
    DATA: BEGIN OF col_text OCCURS 1, "// Value columns
    c(40),
    END OF col_text.
    DATA: BEGIN OF values OCCURS 1, "// Object fields
    p1 TYPE p,
    p2 TYPE p,
    p3 TYPE p,
    p4 TYPE p,
    p5 TYPE p,
    p6 TYPE p,
    p7 TYPE p,
    p8 TYPE p,
    p9 TYPE p,
    END OF values.
    DATA: BEGIN OF axis OCCURS 4.
            INCLUDE STRUCTURE gpoaxis.
    DATA: END OF axis.
    DATA save LIKE sy-tabix.
    SET PF-STATUS 'GRAF'.
    Constraints: Number of VALUES rows == Number of OBJT rows
    : Num of VALUES columns == Number of COL_TEXT rows
    Column title for $OBJD::VALTIT
    col_text = '% Market share'. APPEND col_text.
    col_text = '% Growth'. APPEND col_text.
    col_text = 'Sales'. APPEND col_text.
    col_text = 'Market share trend'. APPEND col_text.
    col_text = 'Growth trend'. APPEND col_text.
    col_text = 'Fixed costs'. APPEND col_text.
    col_text = 'Overhead costs'. APPEND col_text.
    col_text = 'Admin. costs'. APPEND col_text.
    col_text = 'Estimated profits'. APPEND col_text.
    Attributes for $AXIS
    axis-pos = 'RIGHT'.
    axis-backclr = 'DARKGRAY'.
    axis-textclr = 'WHITE'.
    axis-scalclr = 'WHITE'.
    axis-shadow = 'N'.
    axis-ticks = '50'.
    axis-start = '0'.
    axis-end = '100'.
    APPEND axis.
    axis-pos = 'TOP'.
    axis-backclr = 'DARKGRAY'.
    axis-textclr = 'WHITE'.
    axis-scalclr = 'WHITE'.
    axis-shadow = space.
    axis-ticks = '50'.
    axis-start = '0'.
    axis-end = '100'.
    APPEND axis.
    axis-pos = 'LEFT'.
    axis-backclr = 'DARKGRAY'.
    axis-textclr = 'WHITE'.
    axis-scalclr = 'WHITE'.
    axis-shadow = 'N'.
    axis-ticks = '10'.
    axis-start = '0'.
    axis-end = '100'.
    APPEND axis.
    axis-pos = 'BOTTOM'.
    axis-backclr = 'DARKGRAY'.
    axis-textclr = 'WHITE'.
    axis-scalclr = 'WHITE'.
    axis-shadow = 'N'.
    axis-ticks = '50'.
    axis-start = '0'.
    axis-end = '100'.
    APPEND axis.
    Objects
    *BJT-LINECLR = 'WHITE'.
    1. Trend line
    objt-form = 'RECTANGLE'.
    objt-fillclr = 'YELLOW'.
    objt-textclr = 'BLUE'.
    objt-title = 'Clarion 1990'.
    objt-info = 'Sales in 1990'.
    values-p1 = 10.
    values-p2 = 20.
    values-p3 = 10000.
    values-p4 = 22.
    values-p5 = 22.
    values-p6 = 400.
    values-p7 = 300.
    values-p8 = 200.
    values-p9 = 100.
    APPEND objt.
    APPEND values.
    objt-form = 'RECTANGLE'.
    objt-fillclr = 'YELLOW'.
    objt-textclr = 'BLUE'.
    objt-title = 'Clarion 1991'.
    objt-info = 'Sales in 1991'.
    values-p1 = 22.
    values-p2 = 22.
    values-p3 = 15000.
    values-p4 = 45.
    values-p5 = 35.
    values-p6 = 100.
    values-p7 = 200.
    values-p8 = 300.
    values-p9 = 400.
    APPEND objt.
    APPEND values.
    objt-form = 'RECTANGLE'.
    objt-fillclr = 'YELLOW'.
    objt-textclr = 'BLUE'.
    objt-title = 'Clarion 1992'.
    objt-info = 'Sales in 1992'.
    values-p1 = 45.
    values-p2 = 35.
    values-p3 = 22000.
    values-p4 = 62.
    values-p5 = 33.
    values-p6 = 20.
    values-p7 = 40.
    values-p8 = 80.
    values-p9 = 160.
    APPEND objt.
    APPEND values.
    objt-form = 'RECTANGLE'.
    objt-fillclr = 'YELLOW'.
    objt-textclr = 'BLUE'.
    objt-title = 'Clarion 1993'.
    objt-info = 'Sales in 1993'.
    values-p1 = 62.
    values-p2 = 33.
    values-p3 = 12000.
    values-p4 = 62.
    values-p5 = 33.
    values-p6 = 600.
    values-p7 = 700.
    values-p8 = 600.
    values-p9 = 700.
    APPEND objt.
    APPEND values.
    2. Trend line
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1988'.
    objt-info = 'Sony UX400/CD, Sales in 1988'.
    values-p1 = 2.
    values-p2 = 50.
    values-p3 = 2500.
    values-p4 = 26.
    values-p5 = 57.
    values-p6 = 100.
    values-p7 = 700.
    values-p8 = 20.
    values-p9 = 50.
    APPEND objt.
    APPEND values.
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1989'.
    objt-info = 'Sony UX400/CD, Sales in 1989'.
    values-p1 = 26.
    values-p2 = 57.
    values-p3 = 3500.
    values-p4 = 58.
    values-p5 = 70.
    values-p6 = 100.
    values-p7 = 600.
    values-p8 = 20.
    values-p9 = 70.
    APPEND objt.
    APPEND values.
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1990'.
    objt-info = 'Sony UX400/CD, Sales in 1990'.
    values-p1 = 58.
    values-p2 = 70.
    values-p3 = 11000.
    values-p4 = 79.
    values-p5 = 68.
    values-p6 = 100.
    values-p7 = 500.
    values-p8 = 25.
    values-p9 = 90.
    APPEND objt.
    APPEND values.
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1991'.
    objt-info = 'Sony UX400/CD, Sales 1991'.
    values-p1 = 79.
    values-p2 = 68.
    values-p3 = 13000.
    values-p4 = 87.
    values-p5 = 54.
    values-p6 = 100.
    values-p7 = 430.
    values-p8 = 45.
    values-p9 = 120.
    APPEND objt.
    APPEND values.
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1992'.
    objt-info = 'Sony UX400/CD, Sales in 1992'.
    values-p1 = 87.
    values-p2 = 54.
    values-p3 = 13500.
    values-p4 = 80.
    values-p5 = 34.
    values-p6 = 90.
    values-p7 = 390.
    values-p8 = 44.
    values-p9 = 150.
    APPEND objt.
    APPEND values.
    objt-form = 'CIRCLE'.
    objt-fillclr = 'GREEN'.
    objt-textclr = 'BLUE'.
    objt-title = 'Sony 1993'.
    objt-info = 'Sony UX400/CD, Sales in 1993'.
    values-p1 = 80.
    values-p2 = 34.
    values-p3 = 23000.
    values-p4 = 80. "// Line to itself
    values-p5 = 34.
    values-p6 = 90.
    values-p7 = 370.
    values-p8 = 47.
    values-p9 = 165.
    APPEND objt.
    APPEND values.
    area_tab-form = 'RECTANGLE'.
    area_tab-fillclr = 'RED'.
    area_tab-xfrom = '10'.
    area_tab-yfrom = '70'.
    area_tab-xto = '40'.
    area_tab-yto = '90'.
    area_tab-title = 'Winner takes all'.
    APPEND area_tab.
    LOOP AT objt.
      WRITE: / objt-title(20).
      save = sy-tabix.
      READ TABLE values INDEX save.
      WRITE 25 values-p3.
    ENDLOOP.
    AT PF11.
      CALL FUNCTION 'GRAPH_PORT'
           EXPORTING
                title_title   = 'Trend-Portfolio for Sony and Clarion Radio'
                title_info    = 'The two objects over several years'
                title_textclr = 'YELLOW'
                title_backclr = 'DARKGRAY'
                title_size    = '2'
                frm_backclr   = 'GRAY'
                frm_cordclr   = 'WHITE'
                frm_scalclr   = 'WHITE'
                frm_scalmod   = 'LONGDASH'
                frm_gridx     = '10'
                frm_gridy     = '10'
                frm_shadow    = 'X'
                obj_xval      = '0'
                obj_yval      = '1'
                obj_sval      = '2'
                obj_xarr      = '3'
                obj_yarr      = '4'
           TABLES
                axis          = axis
                col_text      = col_text
                objt          = objt
                values        = values
                area_tab      = area_tab.[/code]
    Reward if usefull

  • Problem with the Z axis...blurred objects...what'd I miss?

    Howdy,
    I've got some vector objects in Flash that start out real small--like 20-30 pixels square. When I change their position on the Z axis to 'zoom in' on them, the larger they get, the blurrier they get.
    When I just tween the x/y size, and not move the z axis they look fine.
    For example draw a 20x20 square on the stage.
    Convert it to a movie clip so that I can 3D it.
    Scale it up to 300 pixels.
    Looks fine.
    Adjust the Z axis by 1.
    Blllluuuurrrrrrrrr.
    Did I miss a setting somewhere or is this just a limitation that needs to be worked around?
    Thanks in advance,
    -Ted

    Rothrock, Excellent link, thanks for that! Have some points.
    After reading it:
    crap.
    Looks like I need to learn about hand coding the 3d effects, or using scaling instead and adding switch when I need the z....
    Hmmm...that'll require a little mor coffee.

Maybe you are looking for