Travel Allowance based on distance traveled

Dear consultants,
My client wants to pay Travel Allowance to employees who travel unplanned during their travel plan. Employees are divided in "Reimbursement Group for M/A Enterprise". There are different rates per KM for each grade. I have specified the rates in table V_T706B2. But when we enter the amount against any expense type in TRIP, we wish the window to receive amount (if traveled by hired vehicle) or number of KM (if traveled by own vehicle).
Where to customize it ?
Regards,
Bindumadhav

Hi,
This is not possible. Its not possible to get a default value for KM and on the Expense Receipt level also. You can hav a default amount value but not a KM.
Regards,
Raynard

Similar Messages

  • Dearness Allowance Based on CPI(PY-IN)

    Dear Experts,
    I have configured VDA based on the CPI and made the changes in  SPRO (V_T7IND1, V_T7IND3...) and  I am updating the VDA value in IT0008 with using PC00_M40_DAB T.code also.
    Burt here my query is If it is normal calculation based on CPI system is calculating correct only:
    If Reference value is 2400, current value is 5746 and the Rupees per point is "15" and calculation is current value - reference value * points increase factor= 5746-2400=3346*15= 50,190/- this calculation is OK for some locations but in some locations VDA calculation is different:
    As per client requirement calculation should be: current value - reference value / 10 * points increase factor = 5746-2400=3346/10=334.6(if decimal is less than 6 it should rounded to lower rupee and if it is greater than or equal to "6" it should rounded off to next rupee)= 335*15= 5025/-
    Can anyone help me on this.
    With kind regards,
    Venkat Polisetty.

    Dear Experts,
    I have achieved this with custom program and I am closing this thread.
    Thanks,
    Venkat Polisetty.

  • Allowance based on Absences

    Dear Gurus
    Attendance Allowance WT1050 is Rs.500 in IT0008 for Sub Area PSA1,PSA2,PSA3,PSA4,PSA4,PSA5,PSA6 EG7, and all Corresponding ESG
    For Absence Type 0001,0002
    0- 1.5 Days Rs.500 Paid
    2-2.5 Days Rs.450 Paid
    3Days Rs400 paid
    Greater than 3days Is 0
    how to write in rule or cover functionality and where to inser in Schema.
    Edited by: HRSAP2011 on Jul 28, 2011 11:07 AM

    Dear HR,
    As per the requirement i worked on below PCR, i am not sure abut the results, It is only for testing......and it may helps u to work on this.....scenario....
    ZZZZ Personnel Calculation Rule  ZZZZ - name of PCR
          1ATT -
    *wage type *
            NUM=TKAU** Set unpaid absences here check any value is storing in the log
            NUM?1.5    Comparison
              <
                AMT= IZHRT1 Set-------* I - T511P table access & ZHRT1 is constant value*
                MULTI NAA  Multipl.amt/no/rate
                ADDWT 1ATT OT   Output table
              >
                NUM?2.5    Comparison
                  <
                    AMT= IZHRT1 Set
                    AMT-50     Subtraction
                    MULTI NAA  Multipl.amt/no/rate
                    ADDWT 1ATT OT   Output table
                  >
                    NUM?3      Comparison
                      <
                        AMT= IZHRT1 Set
                        AMT-100    Subtraction
                        MULTI NAA  Multipl.amt/no/rate
                        ADDWT 1ATT OT   Output table
                      >
                        AMT= IZHRT1 Set
                        AMT*0      Multiplication
                        MULTI NAA  Multipl.amt/no/rate
                        ADDWT 1ATT OT   Output table
    Before this just create a IT0015 with no. 1. (ANZHL),
    then insert this PCR after P0015 function in schema.....
    and i need your feedback if possible ...to work more on this....(all bold are...comments not part of PCR)
    Thank you n all the best.

  • Allowance calculation based on Planned & Actual working hours

    Hi,
    Please advise how to calculate an allowance based on employees Planned working hours & Actual working hours for a particular work schedule rules.
    Example A – Employee on Work Schedule for the Whole Month Employee has a 0007 infotype record that has them on Work Schedule SC112 for the whole of April 2008. System pays 100% of the allocated payment of $166.67 per month
    Example B – Employee on Work Schedule for part of the Month, Employee has a 0007 infotype record that has them on Work Schedule SC112 for the part of April 2008 as they only started on 14th April 2008. Planned Hours for April for SC112 are 180 hours and this person has worked 108 hours which is 60% (=108/180). System should pay 60% of the allocated payment of $166.67 per month which results in a payment of $100.00 for the employee.
    Your help would be really appreciated.
    Regards
    Ranjith Yama

    Hi Manoj,
    Suppose ABCD is the wagetype for xyz allowance. I hope you are getting this 1000 amount from T510.
    This is the logic of PCR for your requirement.
    ABCD
      NUM=TKAU**        --> Getting Unpaid Absences (Suppose 2)
      RTE=KCONS2        --> Maintain CONS2 constant in T511K Table with 200
      MULTI NRA            --> Multiplying No.of Absences with 200.. that is 400
      ADDWT &BUFF     --> Saving that in one Variable
      FILFF NRA            --> Restoring Actual values
      AMT- &BUFF        --> Subtracting from 1000 and you will get the 600
      AMT?0
         ADDWT *
       <              
         AMT=0             --> if amount is less than 0 then amount will bocome 0
    Hope this helps.
    Pradeep.

  • Goods Receipt is allowed through MIGO  for PO's though they hav the confirm

    Goods Receipt is allowed through MIGO  for PO's though they hav the confirmation control key. where as its should allow based on ASN(inbound Delivery).
    Not sure if any system changes has to be made or anything else. please suggest.
    Thanks

    Hi Dear <
      You can also recived the goods  with reference to inbound Delevery,
    1  Select  In Confirmation  Tab Con con key while in  Creating PO
    2  Create a Inbound delevry from T.code: VL31n
    3 Once you create the Inbound delevery wth reference to PO, The inbound delevery no will be propulated in  Confirmation Tab of PO
    4 you can Do the mIGO  with reference to that Inbound delevery

  • Route Determination on Distance

    Hi Gurus,
    I want to determine the route on distance based i.e route should be determine on nearest distance i.e Kilometer based. Can we add Distance as creteria for route determination.
    Thanks in advance.
    Regards
    Mahi

    I dont think it is possible to determine route basing on distance. Bcs route determination is done basing on shipping point,destination zone, transportation group n shipping condition , wieght group (optional). But u can maintain unit of measure distance as kilometers in 
    Img- le- shipping- basic shipping functions- routes- define routes
    -define routes and stages (step)

  • Add Anchor Points by Distance?

    I often need to add anchor points to a shape when I bring it into Cinema 4D to extrude and warp.
    The Object>Path>Add Anchor Points just adds an additional anchor between existing anchor points, effectively doubling the density every time its run.
    This isn't great for shapes with very long segments and very short segments. The short segments don't need subdividing, but the long segments need more subdivisions.
    Is there a script or plug-in that can add anchor points based on distance? Such as: Add an extra anchor point to a path every 10 mm?

    Navarro,
    You may do it in this roundabout way:
    1) Select the object and Select>Object>Direction Handles;
    2) Ctrl/Cmd+X to Cut;
    3) Press Delete;
    4) Ctrl/Cmd+F to Paste in Front;
    Now you have changed the path segments into separate paths;
    5) For each (path segment) path apply Object>Path>Add Anchor Points as needed or maybe (depending on version) use the more versatile free Divide script, see below;
    6) Select the paths and Ctrl/Cmd+J to join them (use Direct Selection in older versions).
    With the rectangle shown, it would be changed into two long horizontal paths and two short vertical ones; you can select each pair and add Anchor Points, or maybe just leave the vertical ones as they are.
    You may download the Divide script here:
    http://park12.wakwak.com/~shp/lc/et/en_aics_script.html

  • I am getting a basic error in AppletPanel.

    Hello Friends,
    I am new to Java3D. Was surfing the web to find out a way as how to have a map of a city in 3d view and came across this code by a certain Mr. Daniel Selman... I am pasting his code as well as the error i am getting when i am trying to run it using eclipse...
    Copyright (C) 2001   Daniel Selman
    First distributed with the book "Java 3D Programming"
    by Daniel Selman and published by Manning Publications.
    http://manning.com/selman
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation, version 2.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    The license can be found on the WWW at:
    http://www.fsf.org/copyleft/gpl.html
    Or by writing to:
    Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    Authors can be contacted at:
    Daniel Selman: [email protected]
    If you make changes you think others would like, please
    contact one of the authors or someone at the
    www.j3d.org web site.
    * This example creates a 3D fly-over of the city of Boston. The viewer is
    * animated using a RotPosScaleTCBSplinePathInterpolator as well as 3
    * helicopters. The example uses PointSounds attached to the helicopters to
    * generate 3D spatial audio.
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.GraphicsConfigTemplate;
    import java.awt.GraphicsDevice;
    import java.awt.GraphicsEnvironment;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.InputStream;
    import java.net.URL;
    import java.util.Enumeration;
    import java.util.Vector;
    import javax.media.j3d.Alpha;
    import javax.media.j3d.Appearance;
    import javax.media.j3d.AudioDevice;
    import javax.media.j3d.Background;
    import javax.media.j3d.BackgroundSound;
    import javax.media.j3d.Behavior;
    import javax.media.j3d.BoundingSphere;
    import javax.media.j3d.Bounds;
    import javax.media.j3d.BranchGroup;
    import javax.media.j3d.Canvas3D;
    import javax.media.j3d.ColoringAttributes;
    import javax.media.j3d.DistanceLOD;
    import javax.media.j3d.GeometryArray;
    import javax.media.j3d.GraphicsConfigTemplate3D;
    import javax.media.j3d.Group;
    import javax.media.j3d.ImageComponent2D;
    import javax.media.j3d.Locale;
    import javax.media.j3d.MediaContainer;
    import javax.media.j3d.Node;
    import javax.media.j3d.PhysicalBody;
    import javax.media.j3d.PhysicalEnvironment;
    import javax.media.j3d.PointSound;
    import javax.media.j3d.QuadArray;
    import javax.media.j3d.Shape3D;
    import javax.media.j3d.Sound;
    import javax.media.j3d.Switch;
    import javax.media.j3d.Texture;
    import javax.media.j3d.Transform3D;
    import javax.media.j3d.TransformGroup;
    import javax.media.j3d.View;
    import javax.media.j3d.ViewPlatform;
    import javax.media.j3d.VirtualUniverse;
    import javax.media.j3d.WakeupCondition;
    import javax.media.j3d.WakeupCriterion;
    import javax.media.j3d.WakeupOnCollisionEntry;
    import javax.media.j3d.WakeupOnCollisionExit;
    import javax.media.j3d.WakeupOr;
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import javax.vecmath.Color3f;
    import javax.vecmath.Point2f;
    import javax.vecmath.Point3d;
    import javax.vecmath.Point3f;
    import javax.vecmath.Quat4f;
    import javax.vecmath.Vector3d;
    import javax.vecmath.Vector3f;
    import javax.vecmath.Vector4f;
    import com.sun.j3d.audioengines.javasound.JavaSoundMixer;
    import com.sun.j3d.loaders.Scene;
    import com.sun.j3d.loaders.objectfile.ObjectFile;
    import com.sun.j3d.utils.applet.MainFrame;
    import com.sun.j3d.utils.behaviors.interpolators.RotPosScaleTCBSplinePathInterpolator;
    import com.sun.j3d.utils.behaviors.interpolators.TCBKeyFrame;
    import com.sun.j3d.utils.geometry.Primitive;
    import com.sun.j3d.utils.geometry.Sphere;
    import com.sun.j3d.utils.image.TextureLoader;
    * This example uses a Spline Interpolator to animate a fly-over the city of
    * Boston. The city is rendered using satellite images with a Level of Detail
    * behavior. The scene includes a number of moving helicopters, each with an
    * associated sound.
    public class SplineInterpolatorTest extends Java3dApplet {
      // size of the 3D window - enlage on powerful systems
      private static int m_kWidth = 200;
      private static int m_kHeight = 200;
      // a shared appearance for the buildings we create
      private Appearance m_BuildingAppearance = null;
      // the size of the high resolution "world".
      // the world is centered at 0,0,0 and extends
      // to +- LAND_WIDTH in the x direction and
      //+- LAND_LENGTH in the z direction.
      // These dimensions are loosely based on pixel
      // coordinates from the texture images
      private static final float LAND_WIDTH = 180;
      private static final float LAND_LENGTH = 180;
      // the satellite images used as textures have
      // been manually edited so that the water in the
      // images corresponds to the following RGB values.
      // this allows the application to avoid creating
      // buildings in the water!
      private static final float WATER_COLOR_RED = 0;
      private static final float WATER_COLOR_GREEN = 57;
      private static final float WATER_COLOR_BLUE = 123;
      public SplineInterpolatorTest() {
        initJava3d();
      // scale eveything so we can use pixel coordinates
      protected double getScale() {
        return 0.1;
      protected int getCanvas3dWidth(Canvas3D c3d) {
        return m_kWidth;
      protected int getCanvas3dHeight(Canvas3D c3d) {
        return m_kHeight;
      protected Bounds createApplicationBounds() {
        m_ApplicationBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),
            10.0);
        return m_ApplicationBounds;
      // we want a texture mapped background of a sky
      protected Background createBackground() {
        // add the sky backdrop
        Background back = new Background();
        back.setApplicationBounds(getApplicationBounds());
        BranchGroup bgGeometry = new BranchGroup();
        // create an appearance and assign the texture image
        Appearance app = new Appearance();
        Texture tex = new TextureLoader("sky.gif", this).getTexture();
        app.setTexture(tex);
        Sphere sphere = new Sphere(1.0f, Primitive.GENERATE_TEXTURE_COORDS
            | Primitive.GENERATE_NORMALS_INWARD, app);
        bgGeometry.addChild(sphere);
        back.setGeometry(bgGeometry);
        return back;
      // this controls how close to a helicopter we can
      // be and still hear it. If the helicopters sound
      // scheduling bounds intersect our ViewPlatformActivationRadius
      // the sound of the helicopter is potentially audible.
      protected float getViewPlatformActivationRadius() {
        return 20;
      // creates the objects within our world
      protected BranchGroup createSceneBranchGroup() {
        BranchGroup objRoot = super.createSceneBranchGroup();
        // create a root TG in case we need to scale the scene
        TransformGroup objTrans = new TransformGroup();
        objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        Transform3D t3d = new Transform3D();
        objTrans.setTransform(t3d);
        Group hiResGroup = createLodLand(objTrans);
        createBuildings(objTrans);
        createHelicopters(objTrans);
        // connect
        objRoot.addChild(objTrans);
        return objRoot;
      // we create 2 TransformGroups above the ViewPlatform:
      // the first merely applies a scale, while the second
      // has a RotPosScaleTCBSplinePathInterpolator attached
      // so that the viewer of the scene is animated along
      // a spline curve.
      public TransformGroup[] getViewTransformGroupArray() {
        TransformGroup[] tgArray = new TransformGroup[2];
        tgArray[0] = new TransformGroup();
        tgArray[1] = new TransformGroup();
        Transform3D t3d = new Transform3D();
        t3d.setScale(getScale());
        t3d.invert();
        tgArray[0].setTransform(t3d);
        // create an Alpha object for the Interpolator
        Alpha alpha = new Alpha(-1, Alpha.INCREASING_ENABLE
            | Alpha.DECREASING_ENABLE, 0, 0, 25000, 4000, 100, 20000, 5000,
            50);
        // ensure the Interpolator can access the TG
        tgArray[1].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        try {
          // create the Interpolator and load the keyframes from disk
          RotPosScaleTCBSplinePathInterpolator splineInterpolator = Utils
              .createSplinePathInterpolator(new UiAlpha(alpha),
                  tgArray[1], new Transform3D(), new URL(
                      getWorkingDirectory(),
                      "rotate_viewer_spline.xls"));
          // set the scheduling bounds and attach to the scenegraph
          splineInterpolator.setSchedulingBounds(getApplicationBounds());
          tgArray[1].addChild(splineInterpolator);
        } catch (Exception e) {
          System.err.println(e.toString());
        return tgArray;
      // overidden so that the example can use audio
      protected AudioDevice createAudioDevice(PhysicalEnvironment pe) {
        return new JavaSoundMixer(pe);
      // creates a Switch group that contains two versions
      // of the world - the first is a high resolution version,
      // the second if a lower resolution version.
      public Group createLodLand(Group g) {
        Switch switchNode = new Switch();
        switchNode.setCapability(Switch.ALLOW_SWITCH_WRITE);
        Group hiResGroup = createLand(switchNode);
        createEnvirons(switchNode);
        // create a DistanceLOD that will select the child of
        // the Switch node based on distance. Here we are selecting
        // child 0 (high res) if we are closer than 180 units to
        // 0,0,0 and child 1 (low res) otherwise.
        float[] distanceArray = { 180 };
        DistanceLOD distanceLod = new DistanceLOD(distanceArray);
        distanceLod.setSchedulingBounds(getApplicationBounds());
        distanceLod.addSwitch(switchNode);
        g.addChild(distanceLod);
        g.addChild(switchNode);
        return hiResGroup;
      // creates a high resolution representation of the world.
      // a single texture mapped square and a larger (water colored)
      // square to act as a horizon.
      public Group createLand(Group g) {
        Land land = new Land(this, g, ComplexObject.GEOMETRY
            | ComplexObject.TEXTURE);
        Group hiResGroup = land.createObject(new Appearance(), new Vector3d(),
            new Vector3d(LAND_WIDTH, 1, LAND_LENGTH), "boston.gif", null,
            null);
        Appearance app = new Appearance();
        app.setColoringAttributes(new ColoringAttributes(
            WATER_COLOR_RED / 255f, WATER_COLOR_GREEN / 255f,
            WATER_COLOR_BLUE / 255f, ColoringAttributes.FASTEST));
        Land base = new Land(this, hiResGroup, ComplexObject.GEOMETRY);
        base.createObject(app, new Vector3d(0, -5, 0), new Vector3d(
            4 * LAND_WIDTH, 1, 4 * LAND_LENGTH), null, null, null);
        return hiResGroup;
      // creates a low resolution version of the world and
      // applies the low resolution satellite image
      public Group createEnvirons(Group g) {
        Land environs = new Land(this, g, ComplexObject.GEOMETRY
            | ComplexObject.TEXTURE);
        return environs.createObject(new Appearance(), new Vector3d(),
            new Vector3d(2 * LAND_WIDTH, 1, 2 * LAND_LENGTH),
            "environs.gif", null, null);
      // returns true if the given x,z location in the world
      // corresponds to water in the satellite image
      protected boolean isLocationWater(BufferedImage image, float posX,
          float posZ) {
        Color color = null;
        float imageWidth = image.getWidth();
        float imageHeight = image.getHeight();
        // range from 0 to 1
        float nPixelX = (posX + LAND_WIDTH) / (2 * LAND_WIDTH);
        float nPixelY = (posZ + LAND_LENGTH) / (2 * LAND_LENGTH);
        // rescale
        nPixelX *= imageWidth;
        nPixelY *= imageHeight;
        if (nPixelX >= 0 && nPixelX < imageWidth && nPixelY >= 0
            && nPixelY < imageHeight) {
          color = new Color(image.getRGB((int) nPixelX, (int) nPixelY));
          return (color.getBlue() >= WATER_COLOR_BLUE
              && color.getGreen() <= WATER_COLOR_GREEN && color.getRed() <= WATER_COLOR_RED);
        return false;
      // creates up to 120 building objects - ensures that
      // buildings are not positioned over water.
      public Group createBuildings(Group g) {
        m_BuildingAppearance = new Appearance();
        BranchGroup bg = new BranchGroup();
        Texture tex = new TextureLoader("boston.gif", this).getTexture();
        BufferedImage image = ((ImageComponent2D) tex.getImage(0)).getImage();
        final int nMaxBuildings = 120;
        for (int n = 0; n < nMaxBuildings; n++) {
          Cuboid building = new Cuboid(this, bg, ComplexObject.GEOMETRY
              | ComplexObject.TEXTURE);
          float posX = (int) Utils.getRandomNumber(0, LAND_WIDTH);
          float posZ = (int) Utils.getRandomNumber(0, LAND_LENGTH);
          if (isLocationWater(image, posX, posZ) == false) {
            building.createObject(m_BuildingAppearance, new Vector3d(posX,
                0, posZ), new Vector3d(Utils.getRandomNumber(3, 2),
                Utils.getRandomNumber(8, 7), Utils
                    .getRandomNumber(3, 2)), "house.gif", null,
                null);
        g.addChild(bg);
        return bg;
      // creates three helicopters
      public void createHelicopters(Group g) {
        for (int n = 0; n < 3; n++)
          createHelicopter(g);
      // edit the positions of the clipping
      // planes so we don't clip on the front
      // plane prematurely
      protected double getBackClipDistance() {
        return 50.0;
      protected double getFrontClipDistance() {
        return 0.1;
      // creates a single helicopter object
      public Group createHelicopter(Group g) {
        BranchGroup bg = new BranchGroup();
        Helicopter heli = new Helicopter(this, bg, ComplexObject.GEOMETRY
            | ComplexObject.SOUND);
        heli.createObject(new Appearance(), new Vector3d(Utils.getRandomNumber(
            0, LAND_WIDTH), Utils.getRandomNumber(15, 5), Utils
            .getRandomNumber(0, LAND_LENGTH)), new Vector3d(10, 10, 10),
            null, "heli.wav", null);
        g.addChild(bg);
        return bg;
      public static void main(String[] args) {
        SplineInterpolatorTest splineInterpolatorTest = new SplineInterpolatorTest();
        splineInterpolatorTest.saveCommandLineArguments(args);
        new MainFrame(splineInterpolatorTest, m_kWidth, m_kHeight);
    * Copyright (C) 2001 Daniel Selman
    * First distributed with the book "Java 3D Programming" by Daniel Selman and
    * published by Manning Publications. http://manning.com/selman
    * This program is free software; you can redistribute it and/or modify it under
    * the terms of the GNU General Public License as published by the Free Software
    * Foundation, version 2.
    * This program is distributed in the hope that it will be useful, but WITHOUT
    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    * details.
    * The license can be found on the WWW at: http://www.fsf.org/copyleft/gpl.html
    * Or by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite
    * 330, Boston, MA 02111-1307, USA.
    * Authors can be contacted at: Daniel Selman: [email protected]
    * If you make changes you think others would like, please contact one of the
    * authors or someone at the www.j3d.org web site.
    * Java3dApplet
    * Base class for defining a Java 3D applet. Contains some useful methods for
    * defining views and scenegraphs etc.
    * @author Daniel Selman
    * @version 1.0
    abstract class Java3dApplet extends Applet {
      public static int m_kWidth = 300;
      public static int m_kHeight = 300;
      protected String[] m_szCommandLineArray = null;
      protected VirtualUniverse m_Universe = null;
      protected BranchGroup m_SceneBranchGroup = null;
      protected Bounds m_ApplicationBounds = null;
      //  protected com.tornadolabs.j3dtree.Java3dTree m_Java3dTree = null;
      public Java3dApplet() {
      public boolean isApplet() {
        try {
          System.getProperty("user.dir");
          System.out.println("Running as Application.");
          return false;
        } catch (Exception e) {
        System.out.println("Running as Applet.");
        return true;
      public URL getWorkingDirectory() throws java.net.MalformedURLException {
        URL url = null;
        try {
          File file = new File(System.getProperty("user.dir"));
          System.out.println("Running as Application:");
          System.out.println("   " + file.toURL());
          return file.toURL();
        } catch (Exception e) {
        System.out.println("Running as Applet:");
        System.out.println("   " + getCodeBase());
        return getCodeBase();
      public VirtualUniverse getVirtualUniverse() {
        return m_Universe;
      //public com.tornadolabs.j3dtree.Java3dTree getJ3dTree() {
      //return m_Java3dTree;
      public Locale getFirstLocale() {
        java.util.Enumeration e = m_Universe.getAllLocales();
        if (e.hasMoreElements() != false)
          return (Locale) e.nextElement();
        return null;
      protected Bounds getApplicationBounds() {
        if (m_ApplicationBounds == null)
          m_ApplicationBounds = createApplicationBounds();
        return m_ApplicationBounds;
      protected Bounds createApplicationBounds() {
        m_ApplicationBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),
            100.0);
        return m_ApplicationBounds;
      protected Background createBackground() {
        Background back = new Background(new Color3f(0.9f, 0.9f, 0.9f));
        back.setApplicationBounds(createApplicationBounds());
        return back;
      public void initJava3d() {
        //  m_Java3dTree = new com.tornadolabs.j3dtree.Java3dTree();
        m_Universe = createVirtualUniverse();
        Locale locale = createLocale(m_Universe);
        BranchGroup sceneBranchGroup = createSceneBranchGroup();
        ViewPlatform vp = createViewPlatform();
        BranchGroup viewBranchGroup = createViewBranchGroup(
            getViewTransformGroupArray(), vp);
        createView(vp);
        Background background = createBackground();
        if (background != null)
          sceneBranchGroup.addChild(background);
        //    m_Java3dTree.recursiveApplyCapability(sceneBranchGroup);
        //  m_Java3dTree.recursiveApplyCapability(viewBranchGroup);
        locale.addBranchGraph(sceneBranchGroup);
        addViewBranchGroup(locale, viewBranchGroup);
        onDoneInit();
      protected void onDoneInit() {
        //  m_Java3dTree.updateNodes(m_Universe);
      protected double getScale() {
        return 1.0;
      public TransformGroup[] getViewTransformGroupArray() {
        TransformGroup[] tgArray = new TransformGroup[1];
        tgArray[0] = new TransformGroup();
        // move the camera BACK a little...
        // note that we have to invert the matrix as
        // we are moving the viewer
        Transform3D t3d = new Transform3D();
        t3d.setScale(getScale());
        t3d.setTranslation(new Vector3d(0.0, 0.0, -20.0));
        t3d.invert();
        tgArray[0].setTransform(t3d);
        return tgArray;
      protected void addViewBranchGroup(Locale locale, BranchGroup bg) {
        locale.addBranchGraph(bg);
      protected Locale createLocale(VirtualUniverse u) {
        return new Locale(u);
      protected BranchGroup createSceneBranchGroup() {
        m_SceneBranchGroup = new BranchGroup();
        return m_SceneBranchGroup;
      protected View createView(ViewPlatform vp) {
        View view = new View();
        PhysicalBody pb = createPhysicalBody();
        PhysicalEnvironment pe = createPhysicalEnvironment();
        AudioDevice audioDevice = createAudioDevice(pe);
        if (audioDevice != null) {
          pe.setAudioDevice(audioDevice);
          audioDevice.initialize();
        view.setPhysicalEnvironment(pe);
        view.setPhysicalBody(pb);
        if (vp != null)
          view.attachViewPlatform(vp);
        view.setBackClipDistance(getBackClipDistance());
        view.setFrontClipDistance(getFrontClipDistance());
        Canvas3D c3d = createCanvas3D();
        view.addCanvas3D(c3d);
        addCanvas3D(c3d);
        return view;
      protected PhysicalBody createPhysicalBody() {
        return new PhysicalBody();
      protected AudioDevice createAudioDevice(PhysicalEnvironment pe) {
        JavaSoundMixer javaSoundMixer = new JavaSoundMixer(pe);
        if (javaSoundMixer == null)
          System.out.println("create of audiodevice failed");
        return javaSoundMixer;
      protected PhysicalEnvironment createPhysicalEnvironment() {
        return new PhysicalEnvironment();
      protected float getViewPlatformActivationRadius() {
        return 100;
      protected ViewPlatform createViewPlatform() {
        ViewPlatform vp = new ViewPlatform();
        vp.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);
        vp.setActivationRadius(getViewPlatformActivationRadius());
        return vp;
      protected Canvas3D createCanvas3D() {
        GraphicsConfigTemplate3D gc3D = new GraphicsConfigTemplate3D();
        gc3D.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED);
        GraphicsDevice gd[] = GraphicsEnvironment.getLocalGraphicsEnvironment()
            .getScreenDevices();
        Canvas3D c3d = new Canvas3D(gd[0].getBestConfiguration(gc3D));
        c3d.setSize(getCanvas3dWidth(c3d), getCanvas3dHeight(c3d));
        return c3d;
      protected int getCanvas3dWidth(Canvas3D c3d) {
        return m_kWidth;
      protected int getCanvas3dHeight(Canvas3D c3d) {
        return m_kHeight;
      protected double getBackClipDistance() {
        return 100.0;
      protected double getFrontClipDistance() {
        return 1.0;
      protected BranchGroup createViewBranchGroup(TransformGroup[] tgArray,
          ViewPlatform vp) {
        BranchGroup vpBranchGroup = new BranchGroup();
        if (tgArray != null && tgArray.length > 0) {
          Group parentGroup = vpBranchGroup;
          TransformGroup curTg = null;
          for (int n = 0; n < tgArray.length; n++) {
            curTg = tgArray[n];
            parentGroup.addChild(curTg);
            parentGroup = curTg;
          tgArray[tgArray.length - 1].addChild(vp);
        } else
          vpBranchGroup.addChild(vp);
        return vpBranchGroup;
      protected void addCanvas3D(Canvas3D c3d) {
        setLayout(new BorderLayout());
        add(c3d, BorderLayout.CENTER);
        doLayout();
      protected VirtualUniverse createVirtualUniverse() {
        return new VirtualUniverse();
      protected void saveCommandLineArguments(String[] szArgs) {
        m_szCommandLineArray = szArgs;
      protected String[] getCommandLineArguments() {
        return m_szCommandLineArray;
    * Utils
    * @author Daniel Selman
    * @version 1.0
    class Utils {
      // convert an angular rotation about an axis to a Quaternion
      static Quat4f createQuaternionFromAxisAndAngle(Vector3d axis, double angle) {
        double sin_a = Math.sin(angle / 2);
        double cos_a = Math.cos(angle / 2);
        // use a vector so we can call normalize
        Vector4f q = new Vector4f();
        q.x = (float) (axis.x * sin_a);
        q.y = (float) (axis.y * sin_a);
        q.z = (float) (axis.z * sin_a);
        q.w = (float) cos_a;
        // It is necessary to normalise the quaternion
        // in case any values are very close to zero.
        q.normalize();
        // convert to a Quat4f and return
        return new Quat4f(q);
      // convert three rotations about the Euler axes to a Quaternion
      static Quat4f createQuaternionFromEuler(double angleX, double angleY,
          double angleZ) {
        // simply call createQuaternionFromAxisAndAngle
        // for each axis and multiply the results
        Quat4f qx = createQuaternionFromAxisAndAngle(new Vector3d(1, 0, 0),
            angleX);
        Quat4f qy = createQuaternionFromAxisAndAngle(new Vector3d(0, 1, 0),
            angleY);
        Quat4f qz = createQuaternionFromAxisAndAngle(new Vector3d(0, 0, 1),
            angleZ);
        // qx = qx * qy
        qx.mul(qy);
        // qx = qx * qz
        qx.mul(qz);
        return qx;
      static public double getRandomNumber(double basis, double random) {
        return basis + ((float) Math.random() * random * 2f) - (random);
      static public double getRandomNumber(double basis, double random,
          double scale) {
        double value = basis + ((float) Math.random() * random * 2f) - (random);
        return value * scale;
      static public StringBuffer readFile(URL urlFile) {
        // allocate a temporary buffer to store the input file
        StringBuffer szBufferData = new StringBuffer();
        Vector keyFramesVector = new Vector();
        try {
          InputStream inputStream = urlFile.openStream();
          int nChar = 0;
          // read the entire file into the StringBuffer
          while (true) {
            nChar = inputStream.read();
            // if we have not hit the end of file
            // add the character to the StringBuffer
            if (nChar != -1)
              szBufferData.append((char) nChar);
            else
              // EOF
              break;
          inputStream.close();
        } catch (Exception e) {
          System.err.println(e.toString());
          return null;
        return szBufferData;
      static public RotPosScaleTCBSplinePathInterpolator createSplinePathInterpolator(
          Alpha alpha, TransformGroup tg, Transform3D axis, URL urlKeyframes) {
        TCBKeyFrame[] keyFrames = readKeyFrames(urlKeyframes);
        if (keyFrames != null)
          return new RotPosScaleTCBSplinePathInterpolator(alpha, tg, axis,
              keyFrames);
        return null;
      static public TCBKeyFrame[] readKeyFrames(URL urlKeyframes) {
        StringBuffer szBufferData = readFile(urlKeyframes);
        if (szBufferData == null)
          return null;
        Vector keyFramesVector = new Vector();
        // create a tokenizer to tokenize the input file at whitespace
        java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(
            szBufferData.toString());
        // each keyframe is defined as follows
        // - knot (0 >= k <= 1)
        // - position (x,y,z)
        // - rotation (rx,ry,rz)
        // - scale (x,y,z)
        // - tension (-1 >= t <= 1)
        // - continuity (-1 >= c <= 1)
        // - bias (-1 >= b <= 1)
        // - linear (int - 0 or 1)
        while (true) {
          try {
            float knot = Float.parseFloat(tokenizer.nextToken());
            float posX = Float.parseFloat(tokenizer.nextToken());
            float posY = Float.parseFloat(tokenizer.nextToken());
            float posZ = Float.parseFloat(tokenizer.nextToken());
            float rotX = Float.parseFloat(tokenizer.nextToken());
            float rotY = Float.parseFloat(tokenizer.nextToken());
            float rotZ = Float.parseFloat(tokenizer.nextToken());
            float scaleX = Float.parseFloat(tokenizer.nextToken());
            float scaleY = Float.parseFloat(tokenizer.nextToken());
            float scaleZ = Float.parseFloat(tokenizer.nextToken());
            float tension = Float.parseFloat(tokenizer.nextToken());
            float continuity = Float.parseFloat(tokenizer.nextToken());
            float bias = Float.parseFloat(tokenizer.nextToken());
            int linear = Integer.parseInt(tokenizer.nextToken());
            TCBKeyFrame keyframe = new TCBKeyFrame(knot, linear,
                new Point3f(posX, posY, posZ),
                createQuaternionFromEuler(rotX, rotY, rotZ),
                new Point3f(scaleX, scaleY, scaleZ), tension,
                continuity, bias);
            keyFramesVector.add(keyframe);
          } catch (Exception e) {
            break;
        // create the return structure and populate
        TCBKeyFrame[] keysReturn = new TCBKeyFrame[keyFramesVector.size()];
        for (int n = 0; n < keysReturn.length; n++)
          keysReturn[n] = (TCBKeyFrame) keyFramesVector.get(n);
        // return the array
        return keysReturn;
    //this class defines an Alpha class that returns a random
    //value every N milliseconds.
    class UiAlpha extends Alpha implements ChangeListener {
      protected Alpha m_Alpha = null;
      protected float m_AlphaValue = 0.5f;
      JButton m_Button = null;
      boolean m_bAuto = true;
      public UiAlpha(Alpha alpha) {
        m_Alpha = alpha;
        Frame frame = new Frame("Alpha Control Panel");
        JPanel panel = new JPanel();
        frame.add(panel);
        addUiToPanel(panel);
        frame.pack();
        frame.setSize(new Dimension(400, 80));
        frame.validate();
        frame.setVisible(true);
      protected void addUiToPanel(JPanel panel) {
        JSlider slider = new JSlider();
        slider.addChangeListener(this);
        panel.add(slider);
        m_Button = new JButton("Auto");
        m_Button.addChangeListener(this);
        panel.add(m_Button);
      public void stateChanged(ChangeEvent e) {
        if (e.getSource() instanceof JSlider) {
          m_AlphaValue = ((JSlider) e.getSource()).getValue() / 100.0f;
          m_bAuto = false;
        } else {
          m_bAuto = true;
      // core method override
      // returns the Alpha value for a given time
      public float value(long time) {
        if (m_bAuto == true)
          return m_Alpha.value(time);
        return m_AlphaValue;
    class Land extends ComplexObject {
      public static final float WIDTH = 1.0f;
      public static final float LENGTH = 1.0f;
      public static final float HEIGHT = 0.0f;
      public Land(Component comp, Group g, int nFlags) {
        super(comp, g, nFlags);
      protected Group createGeometryGroup(Appearance app, Vector3d position,
          Vector3d scale, String szTextureFile, String szSoundFile) {
        int nFlags = GeometryArray.COORDINATES | GeometryArray.NORMALS;
        if ((m_nFlags & TEXTURE) == TEXTURE)
          nFlags |= Geom                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

    If this is not your document class, since button1 is not created within the class, there is nothing provided to reference it as an external object.  You need to pass in a reference to it.

  • "fine/sample delay", mixing down live drums, esp for JustinC!

    I'm curious about the "fine/sample delay" and "phase inversion" techniques briefly mentioned by JustinC in an older post regarding recording live drums. I understand using phase inversion on snare mics that are pointing up/down, but I'm not 100% sure about the fine delay adjustment. Is this actually shifting the audio to line up waveforms from mics that are different distances from the same source? I've done this with an upright bass before (F-hole mic and another a few feet away) and it seemed to get a much fatter, clearer sound. I really appreciate any tips you might have on how to pinpoint and solve the problems.

    hey over-man,
    I was prowling tonight and ran across your post. I don't know your reference specifically but I understand your question.
    Sample delay regarding a multimic'ed source:
    This is based on phase cancellation and reinforcement. It is initiated by everything in a multimic'ed environment. The times, distances, microphone choice, effects choice-it's everywhere.
    The best approach for me (typically) is to get the most appropriate sound earlier on unless you can expect variables ahead of time and factor them in right away. We'll work with an example of simply getting a natural drum sound that will line up with existing tracks (bass, gtr, vox...).
    1) You can set up the sound/mics as close as possible to fit the sound you're after (we'll breeze over these points not specific to your question).
    2) Before destroying the sound with a handful of plugins adjust delays. Some assumptions can be made:
    A: Overheads/Room Mics will typically be the reference for the reason that they are what you have least control over because they represent more sources (Drums in this case).
    B: These Mics will often have the largest delay from the start for the reason that they are farthest from the source.
    C: These Mics should be adjusted less than others, I would EQ them quite minimally. Solve any problems as early in the signal chain as possible and use only what you know you'll need. Do not apply FX you don't need and position mics to better suit your desired sound.
    So your OHs/Rooms are as good as they can sound naturally and sit with the track as well as possible, you can now start adjusting delays/intrtoducing other elements.
    The order can vary here but I tend to start with the tracks/mics which will be more prominent. I will use snare in this example.
    Some useful tools before we resume: Logic's sample delay, Expert Sleepers' Latency Fixer, because Logic's Sample Delay will not predelay. Found here:
    http://www.collective.co.uk/expertsleepers/latencyfixer.html
    I would normally just load both of these up, I use full PDC and apply these AUs to each track-remember to turn off Software Monitoring!
    Create an instance of Latency Fixer, set it to 2048 samples. You have now added 2048 samples of predelay to your track.
    Create an instance of Sample Delay, set it to 2048 samples. You have now adjusted your track to play back at the original record position.
    Copy both instances to each adjacent track.
    So we now have Latency Fixer followed by Sample Delay on each track for the kit (not necessary for the OHs unless you want to shift everything a little, but I will often do this from the arrange by ms).
    At this point you will not need to adjust Latency Fixer's settings and simply use sample delay to offset delay in either direction.
    Bring the snare track up to a reasonable level (the closer you are the better). Adjust Sample Delay in either direction and you will notice the sound changes from phase cancellation/reinforcement. Certain frequencies will stand out more at different settings. It normally won't take much, we don't want it to sound like a delay. Someplace within +/- 300 samples is often best for a natural sound. It's a good idea to have a phase inverter (Gain PlugIn) handy for 2 reasons: It may sound better inverted. You can invert the phase to pronounce things you DON'T want to hear and then flip it around the right way after setting the delay to pronounce them. Volume has a huge bearing on interaction here, a good delay setting may sound bad after reducing the level 2dB so Sample Delay setting, volume and phase should all be updated as soon as possible.
    By now you have noticed how adjusting the delay affects the sound, inverting the phase is an exaggerated example of this principle. Inverting the phase of two identical tracks cancels them entirely, applying fine delay to one will introduce some of the frequencies and leave some cancelled. You can hear it scan through which frequencies by adjusting the delay. With multiple sources, different mics and different distances these delays already exist. Delaying them so they match (based on distance) is not always the best sounding but try to start somplace close. After setting the delay and Volume as close as possible you should be able to get away with much less surgical types of PluggIng and ultimately have more natural sounding tracks. Will often comprise 75% of the sound (if you want natural tracks).
    If there are dynamic effects you know you'll want to apply there are special considerations.
    Many of Logic's "lookahead" paramaters delay the signal.
    Compression/Gating, etc. (on a per track basis) will alter the volume significantly enough that if you know you want a track compressed... ahead of time you should probably set these as you would then adjust the delay.
    I tend to use predelayed tracks as keys for the audible tracks, this allows you to get around the aforementioned lookahead problems and will provide you with more control over the "shape" or envelope.
    Concerning phase inversion based on which head you mic: It is a generalized solution to mic setup, though not a hard and fast rule which applies in every case.
    Delaying in this manner is aligning waveforms. Based on frequency you are causing some frequencies to stand out more or less since we are working with complex waveforms. Very small deviation from original position will affect higher frequencies most and as you get further away from the original postion it begins to affect mids and eventually low frequencies. Of course this is because the frequency/wavelength. Align and misalign the waveforms for your desired sound. It does require you listen very closely when setting it up but I really think the results are worth the effort. Hopefully you'll find this helpful, it's easier to hear the effect than to describe it, hopefully it is apparent once you hear it.
    Finally, I don't have any Platinums. If it doesn't work better for you, don't believe it needs to. Hopefully others will chime in here so you can get some second opinions on the approach and/or general drum mixing techniques.
    Cheers, J

  • Changing to another exchange for Infinity

    Hi, I have a question for you guys, I've already raised this with BT and am awaiting a response....
    I have one line coming into my house from the cabinet some distance away, the local exchange I am connected to has just been upgraded. Due to the distance from the Road side cabinet BT are only able to provide me with 'faster broadband'
    I'm getting 9Mbps (ish) down and 800Kbps (ish) up.
    Anyway, the pole that that feeds my phone line is outside my driveway... HOWEVER... my neighbours phone line (from a different exchange) is at the side of my garden. I have done a check on his postcode and number and am being told he can get Infinity up to 40Mbps down and 10Mbps up.
    I'd like to order another line, dedicated to Internet access, I'd like to know if I can request that the new line is added to my neighbours exchange thus giving me a better internet speed. (It's hard work with kids in the house all wanting to watch Netflix at the same time)
    Do you think this is a resonable request? and is it likely to be done?
    My only other option after that... NO, NOT MOVE HOUSE, is to pay my neighbour for him to get Infinity and me run a Cat5/6 cable over to my house. I'm not yet convinced he would like me doing the cable thing.
    Any thoughts would be great, thanks.

    That rules out that theory then, CAT cable it must be, all being the neighbour will agree to my request.
    Something interesting I have found on the Connecting Cheshire website's FAQ's.....
    From Spring 2013, anyone in an FTTC-enabled area can upgrade to FTTP.  FTTP allows any end-user to have a full fibre connection installed to their home or business premise. There will be a charge for the associated network build and an installation charge – all based on distance from our nearest network nodes. FTTP will allow access to speeds of up to 330Mbit/s downstream and 30Mbit/s upstream.
    Enquiries about FTTP should be directed to your ISP. Please note that orders for FTTP will be subject to a detailed local survey and additional connection charges.

  • App icons changing to another one already installed?

    This has happened to me twice now:
    I installed an app and it had the right picture with it. The app opened and worked. The next time I went to the page on my iphone the app had the icon of another app but it still loads the app right.
    What's going on?!?

    That rules out that theory then, CAT cable it must be, all being the neighbour will agree to my request.
    Something interesting I have found on the Connecting Cheshire website's FAQ's.....
    From Spring 2013, anyone in an FTTC-enabled area can upgrade to FTTP.  FTTP allows any end-user to have a full fibre connection installed to their home or business premise. There will be a charge for the associated network build and an installation charge – all based on distance from our nearest network nodes. FTTP will allow access to speeds of up to 330Mbit/s downstream and 30Mbit/s upstream.
    Enquiries about FTTP should be directed to your ISP. Please note that orders for FTTP will be subject to a detailed local survey and additional connection charges.

  • Best practice for VPD and remote tables

    Not specifically an HTMLDB question, but here goes...
    HTMLDB 1.6 on 9.2.0.4 connecting over database link (fixed username/password) to 9.2.0.4
    I've currently "wrapped" access to the remote tables in views, i.e. view "T" in the HTMLDB parsing schema LOCAL_USER is defined as "SELECT * FROM T@remote"
    I'd like to put VPD controls on my backend tables, but I don't get how v('APP_USER') (or even APP_USER put into an application context) would be seen by the remote database.
    Should I just put VPD policies on LOCAL_USER's views and call it a day?
    Thanks for input!
    -John

    If you implemented the VPD in the remote database, what would your VPD be restricting? All queries would apply the policy based on the DB link fixed username resulting in all users of the HTML DB application having same policy restrictions.
    The policy in the remote database does not has access to the value of v('APP_USER'). That value is only available in the database that has HTML DB. You would have to write APIs in the remote database in PL/SQL functions/procedures to pass in the V('APP_USER') value to the remote database. This is doable, but cumbersome.
    If you want to have your policy modify your WHERE clause on the fly based on your HTML DB user account, then I would implement the VPD in the database which has your HTML DB repository. I am not sure which of the two scenarios below occur when doing a SELECT * FROM T.
    1.) The query goes across the database link, gets all the data out of table T in the remote database, passes back to the HTML DB database, and applies the policy WHERE clause modification in the HTML DB database.
    2.) The query applies the policy WHERE clause modification to the view, goes across the database link with the WHERE clause modified, and gets only the data allowed based on the policy from the remote database.
    You should test this out to find out for performance purposes what query is actually performed on the remote database.
    As always if anyone sees anything inaccurate in what I have written, please correct me.
    Mike

  • Payroll Issue

    Dear Gurus,
    Please provide me with your knowledgeable input....
    1st/ My question here is what is the significance & importance of Allowance Grouping in  payroll-India scenario.....i have gone through the other posts but could get a clear understanding.....
    2nd/ Importance of Generate Payroll period and its relationship with control record.
    Can you all please put forward your views on this, i will be really thankful to you all.

    Hi,
    1) Answer:  You can get below answer by clicking the documentation of " Define Pay Scale Groupings for Allowances"
    you define pay scale groupings for allowances to differentiate between employee groups. These groupings determine which benefits apply to a particular group of employees.
    Example
    Consider a company Thumbtacks Pvt Ltd., with two levels of managers and three levels of regular employees. We will define allowance groupings, such that each level of managers or employees get the benefits entitled to them as per the employers policies.
    To enable this :
    1. Identify the different benefits each person is entitled to
    2. Create groupings for each category, and assign the privileges
    We can now proceed to create employee groupings starting with the top management. Working down the corporate ladder we have:
    o  MN01 for senior managers who receive the benefit of a company provided House, Computer,  Medical Allowance, Car with a driver and an additional 5% Provident Fund (PF) contribution from the employer.
    o  MN02 for junior managers who receive the benefit of a company provided Medical Allowance, Car and an additional 5% PF contribution from the employer.
    o  EE01 for senior employees who receive the benefit of a company provided Car and Cellular
    Phone.
    o  EE02 for junior employees who receive the benefit of a company provided Cellular Phone only.
    o  EE03 for office boys who receive the benefit of a lunch allowance
    In a similar manner, you can create any number of 'Pay Scale Groupings for Allowance' based on the different benefits you wish to provide for your employees.
    Activities
    3. Enter a four digit alphanumeric value for each pay scale grouping for allowances in the AlGrp field.
    4. Enter a description for the grouping in the Allowance grp desc field and save your entries.
    2) Answer: You can get below answer by clicking the documentation of "Generate Payroll Periods"
    you use the report RPUCTP00 (Generate Payroll Periods) to generate the date specifications for a selected period for the payroll periods that are to be valid in your system. For each period parameter that is assigned to a payroll area, the system requires the following date  specifications:
    o  Start date and end date of each payroll period
    o  Payment date of each payroll period
    When you execute the report RPUCTP00, the system creates these dates according to the data that you  enter in the report's selection screen.
    Example
    You generate the payroll periods for the period parameters monthly for the years 1999 to 2004. The start and end dates of the periods should be the same as the start and end dates of the calendar months. The periods' payment dates should be three days before the end of the period.
    Requirements -
    In the step Check Payroll Area, which is in this section of the Implementation Guide (IMG), you have assigned a period parameter to all the payroll areas.
    Standard settings -
    There are no entries in the standard system.
    Recommendation
    Generate the payroll periods for several years in advance.
    Activities -
    1. In the selection screen of the report, enter the required data and run the report.
    2. Check the date specifications that the system has generated for the payroll periods and the payment dates.
    Further notes -
    You must run the report separately for each combination of period parameter and date modifier that is assigned to a payroll period.
    Bhairavareddy

  • Speed on Broadband

    At home we have a very very poor connection with BT Broadband as we are too far from the exchange - our internet connection has been off more than it has been on for the last 6 months or so - no amount of calling/emailling has got anyone in BT interested all I get is Sales calls telling about BT infinity. Now I would be very happy to subscribe to this but.....as I have been paying for a connection which has been non existent I certainly do not want to pay a higher price for the same non existent service. What can I do to ensure this will work - I cannot to the speed test as this would rely on the internet connection be up and running and sadly it hasnt been on all week........
    Any ideas?!!!?!?!?! ANYONE......

    infinity is based on distance from your street cabinet (assuming it has been upgraded) whereas adsl is based on distance from the exchange.  so are you near your cabinet and has it been upgraded ( new cabinet beside old one)
    you could try and improve your existing connection and in order for the forum members to help please can you post the adsl stats from your router may need to 'show detail' to get all stats (if hub enter 192.168.1.254 in your browser and navigate to adsl or use a-z, if netgear enter 192.168.0.1) and run btspeedtester (MAC users may have problems) bt speedtester and post the results .
    are you connected directly via a filter to the NTE5 master or test socket or to somewhere else? Is the master the only phone socket in your home?
    Have you tried the quiet line test? - dial 17070 option 2 - should hear nothing - best done with a corded phone. if cordless phone you may hear a 'dull hum' which is normal
    Someone may then be able to offer help/assistance/suggestions to your problem
    If you like a post, or want to say thanks for a helpful answer, please click on the Ratings star on the left-hand side of the post.
    If someone answers your question correctly please let other members know by clicking on ’Mark as Accepted Solution’.

  • All BAdIs of Real Estate Management

    Thought this list would help you as helped me guys...
    Name of a BAdI Definition       Description
    BADI_REAJ_ADJUSTMENT          Rent Adjustment
    BADI_REAJ_ADJUSTMENT_RLRA     Adjustment of Conditions - RLRA Procedure
    BADI_REAJ_ADJUSTMENT_TASK     Adjustment Measure
    BADI_REAJ_COMPARE_GROUP          Comparative Group of Apartments
    BADI_REAJ_EXPENSE_CALC_RULE     Calculation of Current Expenses
    BADI_REBD_ARCH_OBJECT          Architectural Object
    BADI_REBD_BUILDING          Building
    BADI_REBD_BUSINESS_ENTITY     Business Entity
    BADI_REBD_MEAS_AOHIER          Switch Off Hierarchical Measurements on AO
    BADI_REBD_MEAS_CUST          Measurements Allowed Based on Customizing
    BADI_REBD_PROPERTY          Land
    BADI_REBD_RENTAL_OBJECT          Rental Object
    BADI_REBP_ACCTASS_DETERMINE     Business Partner: Determination of Account Assignment Object
    BADI_REBP_ADD_FIELDS          Business Partner: Own Fields
    BADI_REBP_ATTRIB_DETERM          Business Partner: Specification of Attributes for Partner C
    BADI_RECA_ARCHIVING_OBJECT     Archiving Object
    BADI_RECA_AUTH_CHECK          Authorization Check
    BADI_RECA_BDT               Enhancements in BDT Environment
    BADI_RECA_BUSINESS_DATE          Determination of Working Days in RE-FX
    BADI_RECA_CAD_PROVIDER          Determination of CAD Provider Instance
    BADI_RECA_GUI_TABLE_EXT          Interface Extension of Table Master Data
    BADI_RECA_INTERFACE_IMPL     Implementation of Interfaces
    BADI_RECA_MESSAGE          Change Characteristics of Messages
    BADI_RECA_PROCESS          Intervention in Control of a Process
    BADI_RECA_RANGE_EXT          Change to the Range
    BADI_RECA_RESUBMISSION          Reminders
    BADI_RECA_SEARCH_METHOD          Search Methods for a Search Strategy
    BADI_RECA_STORABLE_EXT          Enhanceable Object
    BADI_RECA_WB               RE Navigator
    BADI_RECA_WB_LIST          Lists on Objects
    BADI_RECD_CALC_RULE          Calculation Formula for Conditions
    BADI_RECD_CASHFLOW          Cash Flow
    BADI_RECD_CONDITION          Condition
    BADI_RECD_DIST_RULE          Distribution Formula for Conditions
    BADI_RECN_CONTRACT          Real Estate Contract
    BADI_RECP_OI               Correspondence with office application
    BADI_RECP_SF               Correspondence with PDF-Based Forms or Smart Forms
    BADI_REEX_AL_ACROBJ          Processing of Accrual Object
    BADI_REEX_FI_BAPI          Before Call of FI BAPI for Document Posting
    BADI_REEX_FI_DUNNING          Dunning
    BADI_REEX_FI_GET_GLACCT          BAdI for FI Account Determination
    BADI_REEX_FI_MM_CAPITAL          COA: Statement of Reserve Fund
    BADI_REEX_FUNC_LOC          RE Functional Location: Create and Change Data
    BADI_REIS_LIST               Info System: ALV Reporting.
    BADI_REIS_RM               Integration of Records Management
    BADI_REIT_DATE_OF_SERVICE     Derivation of Date of Service
    BADI_REIT_DIST_EXCLUDE          Exclusion from Input Tax Distribution
    BADI_REIT_OPTION_RATE          Option Rate Determination
    BADI_REIT_POSTING_RULE          Account Determination for Input Tax Distribution
    BADI_REIT_TAX_CORR_OBJ_ASSIGN     Default Correction Object for Line Item
    BADI_REIT_TAX_CORR_OBJECT     Correction Object
    BADI_RELM_JOINT_LIABILITY     Joint Liability
    BADI_RELM_LAND_REGISTER          Land Register
    BADI_RELM_NOTICE_ASSESSMENT     Notice of Assessment
    BADI_RELM_NUMBER_LRPAGENO     Conversion Exits for the Page Number of Land Register
    BADI_RELM_NUMBER_LRREGNO     Conversion Exits for Numbers in the Real Estate Register
    BADI_RELM_NUMBER_PLNO          Conversion Exits for Parcel Number
    BADI_RELM_NUMBER_SECNO          Conversion Exits for Numbers in Sections II and III
    BADI_RELM_PARCEL_OF_LAND     Parcel of Land
    BADI_RELM_PUBLIC_ENCUMBRANCE     Other Public Registers
    BADI_RELM_RECORD_CHANGE          Parcel Update
    BADI_REMM_MANDATE          Mandate
    BADI_REMM_OBJ_ADOPT          Conversion to Condominiums
    BADI_REOR_COST               Costs of Reservation/Continuous Occupancy
    BADI_REOR_COST_DERIV          Price Derivation for Reservation/Continuous Occupancy
    BADI_REOR_OFFER               Contract Offer
    BADI_REOR_OFFER_OBJECT          Offered Object
    BADI_REOR_PO_OCCUPANT_OBJECTS     Edit Assigned Objects for Move Planning
    BADI_REOR_PO_PARTNER_TREE     Determine Partner Using Hierarchy
    BADI_REOR_PO_SUGGEST_POSITIONS     Determine Possible Available Desk Assignments
    BADI_REOR_POSITIONS          BAdI: Desk Assignments on Reservation Object
    BADI_REOR_RENTAL_REQUEST     RE Search Request
    BADI_REOR_RESERVATION          Reservation
    BADI_REOR_REVERSAL_COST          Costs of a Cancellation
    BADI_REOR_SEARCH          BAdI for Real Estate Search
    BADI_REOR_SERVICE_COST          Costs of a Service
    BADI_REOR_SERVICE_COST_DERIV     Price Derivation for Service
    BADI_RERA_ACCT_SHEET          Overview of Tenant Account
    BADI_RERA_ADVPAY          Determination of Advance Payment
    BADI_RERA_DOC               Creation of RE Document
    BADI_RERA_INVOICE          RE Invoice
    BADI_RERA_OP               Create One-Time Posting
    BADI_RESC_ACCRUAL          Accrual/Deferral of Apportionable Costs
    BADI_RESC_INFO_SYSTEM          SCS: Reports
    BADI_RESC_PARTICIP_GROUP     Participation Group
    BADI_RESC_SETTL_UNIT          Settlement Unit
    BADI_RESC_SETTLPARTICIP          Settlement Participation

    Hi,
    For tables in real estate:
    Just do like this to know about your tables,
    go to se11,
    give table name as DD03L(which is a table for table fields),
    display,
    excute,
    under the field name input u can VIOROO and VIBPOBJREL
    then excute, u can get the table names for your fields.
    Please refer to this link:
    http://www.sapmaterial.com/
    Reward Points if found helpfull..
    Cheers,
    Chandra Sekhar.

Maybe you are looking for