Zooming in to eliminate periphal material

I have a video downloaded into iMovie 4.0.1, and see that there's objectionable material in the upper left corner of all frames in all clips. I'd like to get rid of that portion of every frame by zooming in just enough to eliminate it. How can I do this? If I were dealing with still photos, the operation would be called trimming or cropping. Is there an equivalent in iMovie?

I understood your original posting that you want to get rid >of some kind of "station tag"...
No, it was a video I had shot of an interview. Seeing the full frame in iMovie, I noticed that, in the upper left corner, the glass front of a picture hanging on the wall behind the subjects was reflecting enough to show me sitting there behind the camera. Very inappropriate! I never noticed it in the view screen while shooting the video, so I guess the viewer didn't show the full width. It only become apparent when I viewed it in iMovie, to my great surprise.
The camera is a Sony DigitalHandycam, model DCR-TRV103, over six years old now. Still works great.

Similar Messages

  • How to eliminate extraneous material in an attempted attachment which prevents the execution of the attachment?

    When attempting to import a pdf as an attachment to an Email, in the attachment box the hierarchy of relevant folders appears before the pdf I want to attach (/Users/barbaraknowles/Desktop/Personal/Family/Christopher/...). When I forward the Email to me, the pdf is not there. Please help.

    When attempting to import a pdf as an attachment to an Email, in the attachment box the hierarchy of relevant folders appears before the pdf I want to attach (/Users/barbaraknowles/Desktop/Personal/Family/Christopher/...). When I forward the Email to me, the pdf is not there. Please help.

  • How do I use pan and zoom on vertical photographs without editing out most of the photo?

    I am trying to make a slide show.  When I have a vertically oriented (portrait) photograph and try to use pan and zoom, the feature eliminates much of the photograph.  It seems the pan and zoom feature only works for horizontally oriented (or landscape) photographs.  Is there a way to use pan and zoom on vertically oriented photographs to capture all or most of the photograph and zoom in from there?

    gtavetian
    I decided to use a different strategy to convey the principle. It is most likely that your photos will be 4:3 and you may or may not be taking them into a SD widescreen or HD widescreen project. With all those variables, to get the basic ideas across, I am going to use two models with a generalized scheme.
    For this post....
    NTSC DV Standard Project - Portrait Oriented JPG, in this case 2448 x 3264 3:4. Could be any Portrait Oriented JPEG any pixel dimensions. But best plan ahead for what you have and what you would like.
    Manually set the project preset to NTSC DV Standard.
    File Menu/New/Project and, in the new project dialog, set for NTSC DV Standard.
    Before exiting the final dialog in that area, put a check mark next to "Force Selected Project Setting on This Project". Close out of there.
    Next go to the Edit Menu/Preferences/General and remove the check mark next to "Default Scale to Frame Size". Close out of the preferences.
    In the opened Premiere Elements Expert workspace, use Add Media/Files and Folders/Project Assets to get your portrait oriented JPG to the beginning of the Timeline.The 2448 x 3264 3:4 will overwhelm the space in the Edit Mode monitor. That is to be expected. The Timeline Indicator is at the beginning of the Timeline @ 00;00;00;00.
    a. Click on the Timeline jpg to select it. With Motion Panel/Scale property (with Constrain Proportions with check mark), you want to scale the image so that the whole is shown within the mode space. You want to see the image's bounding box. See the next screenshot. The bounding box is the white outline around the image. It has handles.
    After the scaling to get that look, the important information that you want is on the right in the Motion Panel
    Position values 360.0 and 240.0
    Scale value 14.6%.
    The next phase is as before (See post 21 of this thread...but much of that is repeated below and modified for what is being described at this moment)
    With Timeline Indicator at the beginning of Video Track 1 (00;00;00;00), go to Tools Menu/Pan and Zoom and click on it to open  the Pan and Zoom workspace.
    In the Pan and Zoom workspace, you will see that the feature has created the initial two Focus Frames for you. 
    Do not do anything to Focus Frame 1 in the bin below the image window.
    Click on Focus Frame 2 in the bin below the image window and set the Focus Frame as wanted.
    Click on New Frame in the panel to the left of the image window  to create a third Focus Frame which will appear in the bin. Set Focus Frame as wanted.
    Click on New Frame in the panel  to the left of the image window to create a fourth Focus Frame which will appear in the bin. Set the Focus Frame as wanted.
    Click Done to the Pan and Zoom workspace so that you are back in the Premiere Elements Expert workspace with its Timeline.
    In the Expert workspace,
    Move the Timeline Indicator to the last frame of the selected pan and zoom clip 1. In Applied Effects Tab/Applied Effects Palette/Motion Panel expanded, (Toggle Animation should be active at this point), make sure Position settings are 360.0 and 240.0 and Scale = 14.6% (with Constrain Proportions used).Then go to Tools Menu/Freeze Frame and set the freeze frame for 3 seconds and hit Insert in Movie.
    Then move the Timeline Indicator to the first frame of the selected pan and zoom clip 1. In Applied Effects Tab/Applied Effects Palette/Motion Panel expanded (Toggle Animation should be active at this point), make sure Position settings are 360.0 and 240.0 and Scale = 14.6% (with Constrain Proportions used). Then go to Tools Menu/Freeze Frame and set the freeze frame for 3 seconds and hit Insert in Movie.
    Render.
    The Timeline content sequence from start to finish should be:
    Freeze Frame 3 seconds First Frame of pan and zoom clip 1
    Pan and zoom clip 1
    Freeze Frame 3 seconds Last Frame of pan and zoom clip 1
    Freeze Frame 3 seconds First Frame of pan and zoom clip 2
    Pan and zoom clip 2
    Freeze Frame 3 seconds Last Frame of pan and zoom clip 2
    A Dissolve/Cross Dissolve Video Transition (1.00 seconds) is placed between end of Freeze Frame  Last Frame of pan and zoom clip 1 and beginning of Freeze Frame 3 First Frame of pan and zoom clip 2.
    Additional pan and zoom portrait oriented jpgs to the Timeline would be treated as above.
    What was done above can be applied to any photo with any project preset. The basic idea is to
    a. Start with determing the whole picture Position and Scale values as described with the Default Scale to Frame Size option disabled.
    b. Do pan and zoom with Pan and Zoom Tool in its workspace
    c. Return to Premiere Elements workspace to apply your Position and Scale values to the last frame of pan and zoom clip so that the last frame presents in full clip view. Then go to the first frame of the pan and zoom clip, and apply the Position and Scale values to it so that the first frame presents in full clip view.
    d. If you want the whole view to present for more than that one frame, do the freeze frame at each end, with the wanted duration.
    e. Apply emblessments as wanted, such as video transitions, an animated graphic flying through the last scene, etc.
    We could take this same clip into a NTSC AVCHD Full HD 1080p30 project and do the same, except the Position and Scale values and the Scale % determined at the beginning and used subsequently will be different than in the NTSC DV Standard project.
    Please check out the above and see how you do with it. If problems, please indicate where and we will work through them.
    Thanks.
    ATR

  • Importing AVCHD: iMovie vs. Voltaic HD

    I'm going to use a new HDD-based camcorder (those who read my previous topics will know why I - or rather someone else - chose HDD over tape). I've narrowed down my choice between a "basic" standard definition model, and a choice of more expensive high-def. models which feature optical image stabilization and take nice still pictures. Since they're HDD-based, they record in AVCHD.
    I've been recently given a 10 s. sample of AVCHD video which I converted using Voltaic HD, but it took about 2 minutes (and I can consistently reproduce this time when converting it again) on my 2.2 GHz MBP. This is far from what I've read here when importing with iMovie '08 (which seems to take about twice as long as the actual footage length, and not ten times).
    For those who own and use an AVCHD camcorder with iMovie '08 (and possibly Voltaic as well), how long does it usually take you to import footage with iMovie? With Voltaic?
    Do you think (or know from personal experience), importing with Voltaic would be faster when importing larger clips, or do I really have to expect it taking ten times as long as the footage to import AVCHD?

    I used "Voltaic" to test a short sequence recorded with a Panasonic AVCHD SD5 camcorder - to see what the quality was like before buying the camera, and before buying an Intel Mac to go with it.
    Like Appleman's ..that camcorder shoots on SD (..or SDHC..) memory chips, not a hard disc.
    Actually, that's what my sample came from (an SD5, or possibly an SD9).
    I was disappointed with the results - though that might have been because I didn't choose some settings correctly - because although normal zooms and pans and static material looked OK, fast-moving material (..e.g; a train passing by..) seemed to have its fields reversed or overlaid, with an annoyingly imprecise location of vertical edges, and strong "comb" effects on moving edges ..as if the interlaced fields had been de-interlaced and then doubled to make Voltaic's frames (..this was using PAL video at 'full' 1920x1080i).
    I'm not sure I understand all of that, but I was also disappointed with Voltaic's results on fast-moving objects (there wre two in the sample clip). Overall quality was very good though, and once the footage was converted from AIC to DV, the problem was less noticeable.
    P.S: ..You say "..it took about 2 minutes (and I can consistently reproduce this time when converting it again) on my 2.2 GHz MBP.."
    On Voltaic's website FAQs (..scroll down about halfway..) they show:
    "How long does the conversion take?
    This depends on your machine, but as a guide, on a 2.0 GHz MacBookPro with 2Gb of RAM, a 10 second AVCHD clip takes about 2 minutes to convert. In other words, it takes about 12 times as long as the original footage to convert the clip."
    Thanks. That settles it. 12x is way to slow, and while iMovie can apparently import the footage faster, I want to keep the ability to transfer the footage from the camcorder's HDD to my drive and convert it later. So, AVCHD is not for me yet.

  • 56HM195 - "Auto Aspect Ratio" feature

    I've just picked up a used Toshiba 56HM195. It has a "Auto Aspect Ratio" feature (page 74 of the owner's manual), which when enabled should display windowboxed (black bars on all four sides) 4:3 images in "TheaterWide 2" display mode, which zooms in to eliminate the windowboxing. 
    We have some SD recordings on our TivoHD. The Tivo is connected to a Component switcher, and the switcher is connected to one of the sets of Component inputs on the TV.
    Enabling the TV's "Auto Aspect Ratio" feature does *not* make the windowboxed Tivo 4:3 images display in "TheaterWide 2" (zoomed) mode. Instead it still displays in "Natural" mode and so is still windowboxed.
    Any idea what the problem is?
    Thanks,
    Greg

    The aspect ratio setting of portrait, landscape, or auto, controls what orientation the app opens up in. Most times you would choose portrait or landscape, but in doing so you’re saying that the app only uses that ratio. If you have an app that is both portrait and landscape, then auto might make sense. You would also want to include all of the possible splash screens, not just the portrait or landscape ones.
    Auto orient controls whether the app will rotate around when the user turns the device 90 or 180 degrees. For iOS apps you would most likely want that to be on, because it’s a requirement for the iTunes store. But, as an alternative you can have it set to be off, then change that at runtime to be on at the right times. One example use case would be if part of the game play involves using the accelerometer, you wouldn’t want the screen to rotate on the user while playing that part of the game.

  • Rejected from Production

    All,
    Pls see the scenario below :
    Suppose vendor supplied 5000kg of 'x' packaging material .
    This is accepted by quality and done the payment for this .
    Now pruduction has already consumed 3000kg last month .
    Now while issuing the other 2000kg to production ,the line leader found this packaging material is not good and shud be rejected .
    Supplier visited and admitted for discount .
    Now production transferred this material to 'Rejected SLocation' in system .
    Now what I can do to eliminate this material from system ?
    For vendor , Finance will do a credit memo , Finance poit of view is okay .
    Whether I shud do a 'Return delivery(122)' or scrap this material to a cost center ?
    Which is the best practice ?
    If I am scrapping , unnecessarily we are charging to a cost center, isn't ?
    Kindly advise.
    regards
    regards

    Steve,
    I have tested by issuing a credit memo via MIRO and done the return delivery , its working fine .
    AS per my understanding , options are:
    1. Issue a credit memo via MIRO for the rejected quantity and do the return
         return delivery with 122.
       PO is updated .
    2. Issue a credit memo via MIRO and write off by physical count or scrap the         material to a cost center .
    3. If not doing return delivery 122 , then can do a 'subsequent credit' to vendor .
        But while doing this the amount is posting to price variance account  also .
       Why this is happening ?
    4. While doing a subsequent credit , its not possible to do return delivery with 122?
    5. Can you please explain the exact difference between credit memo(via MIRO) and subsequent credit  ?
    6. Can you pls tell me some exact scenarios where we can use credit memo(via MIRO) and subsequent credit ?
    7. Can you pls explain what is the  difference between credit memo (via MIRO) and credit memo (thru Finance ) ?
    It will be really helpful and kind of you if you are giving your valuable responses for each items .
    Sorry for bothering you .
    Kindly advise .
    regards

  • Standardization for the masses

    been trying to be patient, and read the manual, and learn this new take on Logic...
    ATM just messing around with some of the channel strip presets, and all I need to say is 'man somebody spent alot of time on this...' but really, I am not hearing anything I can use. At the end of the day nobody in their right mind is going to use these kinds of preset. And I can tell they really spent alot of time on this... instead of, well you name it. I think someone was way off target allocating resources for all of this preset and library BS. Like yeah, I am really going to use the 'Goa Remix' for my Goa /psy track. Its WAY off base... and don't even get me started on the Euro Dance Remix preset...
    ***!!! is this MacLogic or what...? I hope someone smart is reading this so they can quickly change course on the development direction. Alternatively, why couldn't it have been Cubase that was chosen by Apple for this... MAN!
    <its not all that bad, but when you see the corners that were cut, why spend time on this BS..... >

    jord wrote:
    Don't agree at all. Some other person may find it's just what they needed, or is a good base for getting what they need. As for the no lo-cut, it all depends on the genre you're looking at. Some genres boost the lows. Again, sounds rather myopic.
    Goa being a dance music genre you would cut the lows. it has to be correct in the context of the genre to be applicable. just illustrates that anyone in their right mind who may attempt to use the preset is going to laugh the minute they see it
    And I totally disagree with you on what the best EQ preset is... there is no best EQ preset and anyone relying solely on presets is not only not using their ears, but they will hit the imagination wall rather quickly.
    my point exactly - the best EQ preset is no preset. I think perhaps we concur on this, no?
    anyway to state it clearly, I would have liked better audio processing (why not build Soundtrack Pro's functionality into the audio editor?), offline processing of effects to audio a la Cubase's function, editors integrated into the arrange so that you can zoom in an edit the material in the arrange as opposed to having to go into an editor, and not removing external sync to midi clock, and the double click on the track to open the evironment/mixer, grabbing/cutting/pasting of audio in the arrange without the need to cut a region
    no, the presets I dont need. maybe for the beginnners a few good strategic ones, but why so many that are questionable? Euro Dance Remix? Paris House Remix c'mon man? I think I may be the one who needs the anti-troll wizard about now....
    Message was edited by: dalek

  • RH8 Numbering problems

    Hi All,
    I've recently upgraded to RH8 from RH6. Previously I did our stepped instructions like so
    Example:
    "1. Perform the task" using a numbered para style
    Then, if say a screen is displayed I used an indented "step follow on" style which wasn't numbered
    The xx screen is now displayed.
    This typically might be followed by another numbered step. To obtain the correct numbering in RH6 I'd have to format bullets and numbering for the paragraph and set the numbering to the correct value giving me..
    2. Perform the next step etc.
    When I tried this in RH8 the main menu option of bullets and numbering had gone and the right click menu resulted in the default numbe of 1 vanishing leaving an unumbered paragraph.
    What I want to do is:
    a. Not screw up my previous files
    b. Be able to use separate step and stp follow on paragraphs when documenting stepped procedures.
    Please can anyone advise how to solve this problem in RH8?

    Many Thanks Peter.
    For anyone else's benefit, what I decided to do was to create new styles to use from now on. These use the new list for autonumbering features available in RH8. See Peters website detailed above...
    Much to my delight, using this I can now have some stepped instructions with some screens or consequences text in between with out losing the numbering sequence. This is now much more in the style of Framemaker and is a very, very welcome improvement.
    By happy coincidence I'm creating a new help system and so will be able to utilise this going forward.  I'm not however going to change our legacy help systems as they're too large and by creating new para styles I should eliminate corrupting material formatted using the previous system. Should I have to update a legacy topic I could then apply the new styles without adverse effect.

  • How to eliminate "items contains age-restricted material" message

    Hello folks,
    I am an adult with no children.  Is there a way to eliminate the popup message about "items contains age-restricted material" when updating or buying an app on iTunes?  I do not desire to be annoyed by this message.
    Thank you,
    Loren

    This is surely legal protection for Apple &al
    I'm sure Apple could work another way around this, but it would take a lot of people writing to them,
    sending feedback: http://www.apple.com/feedback/itunesapp.html
    Something like this:
    "Is there not another way around avoiding the constant notice pop-up message of 'age-restricted material' when downloading and updating certain apps?
    A declaration that I am the sole users of the PC and iTunes and have no children, for example.
    Or simply having iTunes remember my choice of accepting these apps. (and stating "this notice will appear once - you can reset this in settings if you no longer accept the term"  or something simple like that.)

  • Eliminate zoom for still photos

    I am making a movie with stills and music.  Each photo zooms in.  Can I stop the zoom?

    Hi
    YES - Ken-Burns Effect can be most annoying. I also wished that I was asked to turn it on when needed - Not being forced to turn it off - ALWAYS - as I never use it. (A 100% irritation factor)
    • Select all photo clips in Project.
    • Click on the small double L-shaped black symbol in one of them
    then select Adjust (Anpassa) - followed by Done (Klar)
    Usually this takes effect on all selected Photos.
    Yours Bengt W

  • How do I stabilize shimmering fine lines when zooming or panning?

    I just completed an HD video that was exported in Standard Definition (SD) using Apple ProRes 422 codec. The video came out fine except when the clip of a JPG image zooms in or out using the zoom motion controls. The fine detail "shimmers" or "flutters", especially when zooming at a point when the image is nearly all the way zoomed out. (the fine detail is the smallest, then.) This is not a typical de-interlace problem where the whole image is highly erratic. The disturbance only happens on the fine detail in the JPG; the thicker lines are not affected. I applied a de-interlace filter and then separately applied a de-flicker filter. Neither of these filters had any effect. I was told by a highly regarded technician at our local access station who I would evaluate as an expert in FCP that this shimmering affect for fine detail was normal, especially in SD. HD, he said, will greatly reduce but will not eliminate it.
    Does others have thoughts about this and possible solutions? Thank you

    The flickering is an artifact of the two field structure of interlaced video. It is a result of very thin (often horizontal) elements that exist on one scanline as is common in text or titling. This can also be the case in images with great deal of detail with high contrast as well as when when you are engaged in pan/zoom moves on stills.
    As the alternate fields play, the flashing element is essentially being turned on/off. The basic strategy is to get the element to exist over two scanlines so it is refreshed every time the field plays or to reduce the amount of contrast so the difference between ON and OFF is not noticeable.
    Before you start any of these steps listed below, make sure you are viewing your material on an appropriate monitor. If you are working in an NTSC/PAL interlaced format (eg DV) you need an external TV monitor - not a computer screen. Without the appropriate device, you are playing blind.
    Things to try (In increasing order of image degradation)
    • (in FCP) field order>none
    • (in FCP or Photoshop) reduce whites by 10% - reduces overly bright areas
    • (in FCP) flicker filter - minimum
    • (in Photoshop) motion blur>vertical> .2 - .5 pixels - blurs vertically only
    • (In FCP or Photoshop) Gaussian blur> .2 - .5 pixels -blurs both horizontally as well as vertically
    • (in FCP or Photoshop) deinterlace - throws away half the image and is generally not appropriate on scanned images
    Remember: Unless you are viewing your work in the appropriate external NTSC/PAL monitor, you are playing blind. The computer monitor only shows you a proxy image.
    One final thought, if you have slowed your material significantly, and have not used some sort of frame blending/optical flow processing, you may be simply duplicating frames to create the additional material to pad the playback. The flashing you see is the result of this.
    good luck.
    x

  • CS4 NOT capable of sharp displays at all zoom levels

    I must have been asleep, until now, and missed the significance and importance of what follows.
    In post #11 here:
    http://forums.adobe.com/thread/375478?tstart=30
    on 19 March 2009 Chris Cox (Adobe Photoshop Engineer - his title on the old forums) said this, in a discussion regarding sharpness in CS4:
    "You can't have perfectly sharp images at all zoom levels.". Unfortunately, my experience with CS4 since its release late last year has repeatedly confirmed the correctness of this statement.
    What makes this statement so disturbing is that it contradicts an overwhelming amount of the pre- and post-release promotional advertising of CS4 by Adobe, to the effect that the OpenGL features of CS4 enable it to display sharp images at all zoom levels and magnifications. What is surprising is that this assertion has been picked up and regurgitated in commentary by other, sometimes highly experienced, Ps users (some unconnected with, but also some directly connected with, Adobe). I relied upon these representations when making my decision to purchase the upgrade from CS3 to CS4. In fact, they were my principal reason for upgrading. Without them, I would not have upgraded. Set out in numbered paragraphs 1 to 6 below is a small selection only of this material.  
    1. Watch the video "Photoshop CS4: Buy or Die" by Deke McClelland (inducted into the Photoshop Hall of Fame, according to his bio) on the new features of CS4 in a pre-release commentary to be found here:
    http://fyi.oreilly.com/2008/09/new-dekepod-deke-mcclelland-on.html
    Notice what he says about zooming with Open GL: "every zoom level is a bicubically rendered thing of beauty". That, when viewed with the zooming demonstrated, can only be meant to convey that your image will be "sharp" at all zoom levels. I'm sure he believes it too - Deke is someone who is noted for his outspoken criticism of Photoshop when he believes it to be deserved. It would seem that he must not have experimented and tested to the extent that others posting in this forum have done so.
    2. Here's another Adobe TV video from Deke McClelland:
    http://tv.adobe.com/#vi+f1584v1021
    In this video Deke discusses the "super smooth" and "very smooth" zooming of CS4 at all zoom levels achieved through the use of OpenGL. From the context of his comments about zooming to odd zoom levels like 33.33% and 52.37%, it is beyond doubt that Deke's use of the word "smooth" is intended to convey "sharp". At the conclusion of his discussion on this topic he says that, as a result of CS4's "smooth and accurate" as distinct from "choppy" (quoted words are his) rendering of images at odd zoom levels (example given in this instance was 46.67%), "I can actually soft proof sharpening as it will render for my output device".
    3. In an article by Philip Andrews at photoshopsupport.com entitled 'What's New In Adobe Photoshop CS4 - Photoshop 11 - An overview of all the new features in Adobe Photoshop CS4',
    see: http://www.photoshopsupport.com/photoshop-cs4/what-is-new-in-photoshop-cs4.html
    under the heading 'GPU powered display', this text appears :
    "Smooth Accurate Pan and Zoom functions – Unlike previous versions where certain magnification values produced less than optimal previews on screen, CS4 always presents your image crisply and accurately. Yes, this is irrespective of zoom and rotation settings and available right up to pixel level (3200%)." Now, it would be a brave soul indeed who might try to argue that "crisply and accurately" means anything other than "sharply", and certainly, not even by the wildest stretch of the imagination, could it be taken to mean "slightly blurry but smooth" - to use the further words of Chris Cox also contained in his post #11 mentioned in the initial link at the beginning of this post.
    4. PhotoshopCAFE has several videos on the new features of CS4. One by Chris Smith here:
    http://www.photoshopcafe.com/cs4/vid/CS4Video.htm
    is entitled 'GPU Viewing Options". In it, Chris says, whilst demonstrating zooming an image of a guitar: "as I zoom out or as I zoom in, notice that it looks sharp at any resolution. It used to be in Photoshop we had to be at 25, 50 , 75 (he's wrong about 75) % to get the nice sharp preview but now it shows in every magnification".
    5. Here's another statement about the sharpness of CS4 at odd zoom levels like 33.33%, but inferentially at all zoom levels. It occurs in an Adobe TV video (under the heading 'GPU Accererated Features', starting at 2 min 30 secs into the video) and is made by no less than Bryan O'Neil Hughes, Product Manager on the Photoshop team, found here:
    http://tv.adobe.com/#vi+f1556v1686
    After demonstrating zooming in and out of a bunch of documents on a desk, commenting about the type in the documents which is readily visible, he says : "everything is nice and clean and sharp".
    6. Finally, consider the Ps CS4 pdf Help file itself (both the original released with 11.0 and the revised edition dated 30 March 2009 following upon the release of the 11.0.1 update). Under the heading 'Smoother panning and zooming' on page 5, it has this to say: "Gracefully navigate to any area of an image with smoother panning and zooming. Maintain clarity as you zoom to invididual pixels, and easily edit at the highest magnification with the new Pixel Grid." The use of the word "clarity" can only mean "sharpness" in this context. Additionally, the link towards the top of page 28 of the Help file (topic of Rotate View Tool) takes you to yet another video by Deke McClelland. Remember, this is Adobe itself telling you to watch this video. 5 minutes and 40 seconds into the video he says: "Every single zoom level is fluid and smooth, meaning that Photoshop displays all pixels properly in all views which ensures more accurate still, video and 3D images as well as better painting, text and shapes.". Not much doubt that he is here talking about sharpness.
    So, as you may have concluded, I'm pretty upset about this situation. I have participated in another forum (which raised the lack of sharp rendering by CS4 on several occasions) trying to work with Adobe to overcome what I initially thought may have been only a problem with my aging (but nevertheless, just-complying) system or outdated drivers. But that exercise did not result in any sharpness issue fix, nor was one incorporated in the 11.0.1 update to CS4. And in this forum, I now read that quite a few, perhaps even many, others, with systems whose specifications not only match but well and truly exceed the minimum system requirements for OpenGL compliance with CS4, also continue to experience sharpness problems. It's no surprise, of course, given the admission we now have from Chris Cox. It seems that CS4 is incapable of producing the sharp displays at all zoom levels it was alleged to achieve. Furthermore, it is now abundently clear that, with respect to the issue of sharpness, it is irrelevant whether or not your system meets the advertised minimum OpenGL specifications required for CS4, because the OpenGl features of CS4 simply cannot produce the goods. What makes this state of affairs even more galling is that, unlike CS3 and earlier releases of Photoshop, CS4 with OpenGL activated does not even always produce sharp displays at 12.5, 25, and 50% magnifications (as one example only, see posts #4 and #13 in the initial link at the beginning of this post). It is no answer to say, and it is ridiculous to suggest (as some have done in this forum), that one should turn off OpenGL if one wishes to emulate the sharp display of images formerly available.

    Thanks, Andrew, for bringing this up.  I have seen comments and questions in different forums from several CS4 users who have had doubts about the new OpenGL display functionality and how it affects apparent sharpness at different zoom levels.  I think part of the interest/doubt has been created by the over-the-top hype that has been associated with the feature as you documented very well.
    I have been curious about it myself and honestly I didn't notice it at first but then as I read people's comments I looked a little closer and there is indeed a difference at different zoom levels.  After studying the situation a bit, here are some preliminary conclusions (and I look forward to comments and corrections):
    The "old", non-OpenGL way of display was using nearest-neighbor interpolation.
    I am using observation to come to this conclusion, using comparison of images down-sampled with nearest-neighbor and comparing them to what I see in PS with OpenGL turned off.  They look similar, if not the same.
    The "new", OpenGL way of display is using bilinear interpolation.
    I am using observation as well as some inference: The PS OpenGL preferences have an option to "force" bilinear interpolation because some graphics cards need to be told to force the use of shaders to perform the required interpolation.  This infers that the interpolation is bilinear.
    Nothing is truly "accurate" at less than 100%, regardless of the interpolation used.
    Thomas Knoll, Jeff Schewe, and others have been telling us that for a long time, particularly as a reason for not showing sharpening at less than 100% in ACR (We still want it though ).  It is just the nature of the beast of re-sampling an image from discrete pixels to discrete pixels.
    The "rule of thumb" commonly used for the "old", non-OpenGL display method to use 25%, 50%, etc. for "accurate" display was not really accurate.
    Those zoom percentages just turned out to be less bad than some of the other percentages and provided a way to achieve a sort of standard for comparing things.  Example: "If my output sharpening looks like "this" at 50% then it will look close to "that" in the actual print.
    The "new", OpenGL interpolation is certainly different and arguably better than the old interpolation method.
    This is mainly because the more sophisticated interpolation prevents drop-outs that occurred from the old nearest-neighbor approach (see my grid samples below).  With nearest-neighbor, certain details that fall into "bad" areas of the interpolated image will be eliminated.  With bilinear, those details will still be visible but with less sharpness than other details.  Accuracy with both the nearest-neighbor and bilinear interpolations will vary with zoom percentage and where the detail falls within the image.
    Since the OpenGL interpolation is different, users may need to develop new "rules of thumb" for zoom percentages they prefer when making certain judgements about an image (sharpening, for example).
    Note that anything below 100% is still not "accurate", just as it was not "accurate" before.
    As Andrew pointed out, the hype around the new OpenGL bilinear interpolation went a little overboard in a few cases and has probably led to some incorrect expectations from users.
    The reason that some users seem to notice the sharpness differences with different zooms using OpenGL and some do not (or are not bothered by it) I believe is related to the different ways that users are accustomed to using Photoshop and the resolution/size of their monitors.
    Those people who regularly work with images with fine details (pine tree needles, for example) and/or fine/extreme levels of sharpening are going to see the differences more than people who don't.  To some extent, I see this similar to people who battle with moire: they are going to have this problem more frequently if they regularly shoot screen doors and people in fine-lined shirts.   Resolution of the monitor used may also be a factor.  The size of the monitor in itself is not a factor directly but it may influence how the user uses the zoom and that may in turn have an impact on whether they notice the difference in sharpness or not.  CRT vs LCD may also play a role in noticeability.
    The notion that the new OpenGL/bilinear interpolation is sharp except at integer zoom percentages is incorrect.
    I mention this because I have seen at last one thread implying this and an Adobe employee participated who seemed to back it up.  I do not believe this is correct.  There are some integer zoom percentages that will appear less sharp than others.  It doesn't have anything to do with integers - it has to do with the interaction of the interpolation, the size of the detail, and how that detail falls into the new, interpolated pixel grid.
    Overall conclusion:
    The bilinear interpolation used in the new OpenGL display is better than the old, non-OpenGL nearest-neighbor method but it is not perfect.  I suspect actually, that there is no "perfect" way of "accurately" producing discrete pixels at less than 100%.  It is just a matter of using more sophisticated interpolation techniques as computer processing power allows and adapting higher-resolution displays as that technology allows.  When I think about it, that appears to be just what Adobe is doing.
    Some sample comparisons:
    I am attaching some sample comparisons of nearest-neighbor and bilinear interpolation.  One is of a simple grid made up of 1 pixel wide lines.  The other is of an image of a squirrel.  You might find them interesting.  In particular, check out the following:
    Make sure you are viewing the Jpegs at 100%, otherwise you are applying interpolation onto interpolation.
    Notice how in the grid, a 50% down-sample using nearest-neighbor produces no grid at all!
    Notice how the 66.67% drops out some lines altogether in the nearest-neighbor version and these same lines appear less sharp than others in the bilinear version.
    Notice how nearest-neighbor favors sharp edges.  It isn't accurate but it's sharp.
    On the squirrel image, note how the image is generally more consistent between zooms for the bilinear versions.  There are differences in sharpness though at different zoom percentages for bilinear, though.  I just didn't include enough samples to show that clearly here.  You can see this yourself by comparing results of zooms a few percentages apart.
    Well, I hope that was somewhat helpful.  Comments and corrections are welcomed.

  • How to get the open order quantity for a material

    Hi All,
    We need to get the open order quantity for materials. At present we are using the following logic...
    SELECT VBAKVBELN VBAPPOSNR VBAP~KWMENG                 
        INTO TABLE IT_VBAP                                     
      FROM VBAP
      INNER JOIN VBAK ON VBAKVBELN   = VBAPVBELN             
      INNER JOIN VAPMA ON VAPMAVBELN = VBAPVBELN
                      AND VAPMAPOSNR = VBAPPOSNR
      INNER JOIN VBUP ON VBUPVBELN = VBAPVBELN
                     AND VBUPPOSNR = VBAPPOSNR
    WHERE VAPMA~MATNR = IT_OUTPUT-MATNR
       AND VAPMA~WERKS = IT_OUTPUT-WERKS
        AND VBAK~AUART  IN S_AUART                        
         AND VBUP~GBSTA NE 'C'.     
    But the Query takes quite a long time as it does a full range scan on all the tables. Is there any way the query can be improved, may be by creating an index etc? Or is there anyother way by which i can get the required data?
    Any input is appreciated.
    Regards
    Brain.

    This could help.
    *& Report: zsdvr055                date written: 03/24/00              *
    *& Author: Brian Huntley           last update: 03/24/00               *
    *& Program Title: Open Order Report                                    *
    *& Description: This report will create a list of sales documents      *
    *&   that are open (contain at least one item that is not shipped).    *
    *&   The report will sort by ship-to customer name and by sales        *
    *&   document number.                                                  *
    *& Tables:                                                             *
    *& Files:                                                              *
    *& Transactions:                                                       *
    *& Changes:                                                            *
    REPORT ZSDVR055 LINE-SIZE 255.
    TABLES: VBPA,
            VBAP,
            VBUP,
            VBAK,
            VBKD,
            KNA1,
            VBEP,
            VBFA,
            LIKP,
            LIPS,
            EKET,
            T171T.
    define hashed table for selected ship-to and sold-to SO's
    TYPES: BEGIN OF TVBPA_TYPE,
             VBELN LIKE VBPA-VBELN,               "sales document
             POSNR LIKE VBPA-POSNR,               "item number
             PARVW LIKE VBPA-PARVW,               "partner function
             KUNNR LIKE VBPA-KUNNR,               "customer number
           END OF TVBPA_TYPE.
    DATA: TVBPA TYPE HASHED TABLE OF TVBPA_TYPE
            WITH UNIQUE KEY VBELN POSNR PARVW WITH HEADER LINE.
    define internal table for all selected SO's
    DATA: BEGIN OF ITAB0 OCCURS 0,
            VBELN LIKE VBPA-VBELN,                "sales document
          END OF ITAB0.
    define internal table for all selected SO items
    DATA: BEGIN OF ITAB OCCURS 0,
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            MATNR LIKE VBAP-MATNR,                "material
            ARKTX LIKE VBAP-ARKTX,                "description
            PSTYV LIKE VBAP-PSTYV,                "item category
            KDMAT LIKE VBAP-KDMAT,                "customer material
            NETWR LIKE VBAP-NETWR,                "net value
            WAERK LIKE VBAP-WAERK,                "currency
            KWMENG LIKE VBAP-KWMENG,              "quantity
            ERDAT LIKE VBAP-ERDAT,                "entry date
            NETPR LIKE VBAP-NETPR,                "net price
            KPEIN LIKE VBAP-KPEIN,                "pricing unit
            PRCTR LIKE VBAP-PRCTR,                "profit center
            ERNAM LIKE VBAK-ERNAM,                "entered by
            AUART LIKE VBAK-AUART,                "order type
            VKORG LIKE VBAK-VKORG,                "sales organization
            VTWEG LIKE VBAK-VTWEG,                "distribution channel
            VDATU LIKE VBAK-VDATU,                "requested date (header)
            BNAME LIKE VBAK-BNAME,                "name of orderer
            KUNNR LIKE VBAK-KUNNR,                "sold-to customer
            BZIRK LIKE VBKD-BZIRK,                "sales district
            KURSK LIKE VBKD-KURSK,                "conversion rate
            BSTKD LIKE VBKD-BSTKD,                "customer PO
            LFGSA LIKE VBUP-LFGSA,                "overall delivery status
            FKSAA LIKE VBUP-FKSAA,                "overall billing status
            KUNWE LIKE VBPA-KUNNR,                "ship-to customer
            NAME1 LIKE KNA1-NAME1,                "ship-to customer name
            ORT01 LIKE KNA1-ORT01,                "ship-to address
            REGIO LIKE KNA1-REGIO,                "ship-to region (state)
            LAND1 LIKE KNA1-LAND1,                "ship-to country
          END OF ITAB.
    create internal table for open orders
    DATA: BEGIN OF ITAB1 OCCURS 0,
            KUNNR LIKE VBAK-KUNNR,                "sold-to customer
            KUNWE LIKE VBPA-KUNNR,                "ship-to customer
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            ZDATE1 LIKE VBEP-EDATU,               "requested date
            ZDATE2 LIKE VBEP-EDATU,               "scheduled date (confirm)
            ZDATE3 LIKE VBEP-EDATU,               "committed date
            ZQTY1 LIKE VBAP-KWMENG,               "qty ordered
            ZQTY2 LIKE VBEP-BMENG,                "backlog qty
            ZEXTD LIKE VBAP-NETWR,                "backlog net value
            ZDESC(30) TYPE C,                     "backlog description
          END OF ITAB1.
    define internal table for SO schedule lines
    DATA: BEGIN OF ITAB2A OCCURS 0,
            WADAT LIKE VBEP-WADAT,                "planned goods issue date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            WMENG LIKE VBEP-WMENG,                "qty ordered
            BMENG LIKE VBEP-BMENG,                "qty confirmed
          END OF ITAB2A.
    define internal table for SO item request dates
    DATA: BEGIN OF ITAB2B OCCURS 0,
            EDATU LIKE VBEP-EDATU,                "delivery date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            WMENG LIKE VBEP-WMENG,                "qty ordered
          END OF ITAB2B.
    define internal table for SO item commit dates
    DATA: BEGIN OF ITAB2C OCCURS 0,
            EDATU LIKE VBEP-EDATU,                "delivery date
            VBELN LIKE VBAP-VBELN,                "document number
            POSNR LIKE VBAP-POSNR,                "item number
            ROMS1 LIKE VBEP-WMENG,                "committed qty
          END OF ITAB2C.
    define internal table for SO item deliveries
    DATA: BEGIN OF ITAB3 OCCURS 0,
            VGBEL LIKE LIPS-VGBEL,                "sales document
            VGPOS LIKE LIPS-VGPOS,                "sales document item
            VBELN LIKE LIKP-VBELN,                "delivery number
            POSNR LIKE LIPS-POSNR,                "delivery item number
            WADAT LIKE LIKP-WADAT,                "planned GI date
            WADAT_IST LIKE LIKP-WADAT_IST,        "actual GI date
            LFIMG LIKE LIPS-LFIMG,                "actual qty delivered
            ERDAT LIKE LIKP-ERDAT,                "date created
            ERZET LIKE LIKP-ERZET,                "time created
          END OF ITAB3.
    define internal table for SO item / delivery cross reference
    DATA: BEGIN OF ITAB4 OCCURS 0,
            VBELV LIKE VBFA-VBELV,                "sales document
            POSNV LIKE VBFA-POSNV,                "sales document item
            VBELN LIKE VBFA-VBELN,                "delivery number
            POSNN LIKE VBFA-POSNN,                "delivery item
            VBTYP_N LIKE VBFA-VBTYP_N,            "document category
            RFMNG LIKE VBFA-RFMNG,                "qty delivered
            PLMIN LIKE VBFA-PLMIN,                "plus/minus flag
          END OF ITAB4.
    define local variables
    DATA: ORDR_QTY LIKE VBEP-WMENG,          "order qty
          CONF_QTY LIKE VBEP-BMENG,          "confirmed qty
          NOCONF_QTY LIKE VBEP-BMENG,        "qty not confirmed
          DELV_QTY LIKE VBEP-WMENG,          "qty delivered
          NODELV_QTY LIKE VBEP-WMENG,        "qty not delivered
          REMAIN_QTY LIKE VBEP-WMENG,        "qty remain to get conf date
          REQ_DATE LIKE VBEP-EDATU,          "request date
          COM_DATE LIKE VBEP-EDATU,          "committed date
          DELV_QTY1 LIKE VBEP-WMENG,         "preceding delivery qty
          REMAIN_QTY1 LIKE VBEP-WMENG,       "qty remain to get reqest date
          REMAIN_QTY2 LIKE VBEP-WMENG,       "qty remain to get commit date
          THIRD_QTY LIKE VBEP-WMENG,         "3rd party no PO qty
          SO_STOCK LIKE MSKA-KALAB,          "sales order stock
          ZPRICE LIKE VBAP-NETPR,            "unit price USD
          ADRS1(40) TYPE C,                  "concatenated city and region
          ADRS2(45) TYPE C,                  "city, region and country
          ADRS3(80) TYPE C,                  "name, city, rgn, ctry
          ZCNTR TYPE I.                      "counter
    define select options
    SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1000',
      S_VTWEG FOR VBAK-VTWEG DEFAULT '10' NO-DISPLAY,
      S_SPART FOR VBAK-SPART DEFAULT '00' NO-DISPLAY,
      S_KUNNR FOR VBPA-KUNNR MATCHCODE OBJECT DEBI,
      S_KUNWE FOR VBPA-KUNNR MATCHCODE OBJECT DEBI.
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS:
      S_BZIRK FOR VBKD-BZIRK,
      S_PRCTR FOR VBAP-PRCTR,
      S_MATNR FOR VBAP-MATNR MATCHCODE OBJECT MAT1,
      S_ERNAM FOR VBAK-ERNAM,
      S_ERDAT FOR VBAP-ERDAT.
    SELECTION-SCREEN END OF BLOCK BLK1.
    AT SELECTION-SCREEN.
      IF S_KUNNR IS INITIAL AND S_KUNWE IS INITIAL.
        MESSAGE E005(ZM) WITH TEXT-100.
      ENDIF.
    MAIN PROGRAM
    INITIALIZATION.
      INCLUDE ZSYHEADR.
    START-OF-SELECTION.
      PERFORM 100_GET_SO_ITEMS.
      PERFORM 200_GET_NO_DELIVERY.
      PERFORM 300_GET_NO_GOODS_ISSUE.
      PERFORM 400_GET_PARTIAL_DELIVERY.
      PERFORM 500_GET_THIRD_PARTY.
      PERFORM 900_CREATE_LIST.
    FORM 100_GET_SO_ITEMS
    FORM 100_GET_SO_ITEMS.
    get SO's for selected ship-to and sold-to customers
      REFRESH TVBPA.
      IF NOT S_KUNNR IS INITIAL.
        SELECT VBELN POSNR PARVW KUNNR
          FROM VBPA INTO TABLE TVBPA
         WHERE KUNNR IN S_KUNNR AND PARVW = 'AG' AND VBELN < '0080000000'.
      ENDIF.
      IF NOT S_KUNWE IS INITIAL.
        SELECT VBELN POSNR PARVW KUNNR
          FROM VBPA APPENDING TABLE TVBPA
          WHERE KUNNR IN S_KUNWE AND PARVW = 'WE' AND VBELN < '0080000000'.
      ENDIF.
      DESCRIBE TABLE TVBPA LINES ZCNTR.
      IF ZCNTR = 0.
        WRITE: /1 'No data found for selection'.
        STOP.
      ENDIF.
    eliminate duplicate SO's
      LOOP AT TVBPA.
        CLEAR ITAB0.
        MOVE TVBPA-VBELN TO ITAB0-VBELN.
        APPEND ITAB0.
      ENDLOOP.
      DELETE ADJACENT DUPLICATES FROM ITAB0.
    get SO detail
      SELECT VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~PSTYV
          VBAP~KDMAT VBAP~NETWR VBAP~WAERK VBAP~KWMENG VBAP~ERDAT
          VBAP~NETPR VBAP~KPEIN VBAP~PRCTR VBAK~ERNAM VBAK~AUART
          VBAK~VKORG VBAK~VTWEG VBAK~VDATU VBAK~BNAME VBAK~KUNNR
          VBKD~BZIRK VBKD~KURSK VBKD~BSTKD VBUP~LFGSA VBUP~FKSAA
        FROM VBAP INNER JOIN VBUP ON VBUP~VBELN = VBAP~VBELN AND
            VBUP~POSNR = VBAP~POSNR
          INNER JOIN VBKD ON VBKD~VBELN = VBAP~VBELN AND
            VBKD~POSNR = VBAP~POSNR
          INNER JOIN VBAK ON VBAK~VBELN = VBAP~VBELN
        INTO TABLE ITAB FOR ALL ENTRIES IN ITAB0
        WHERE VBAP~VBELN = ITAB0-VBELN AND VBAP~MATNR IN S_MATNR AND
          VBAP~ERDAT IN S_ERDAT AND VBAP~PRCTR IN S_PRCTR AND
          VBAP~ABGRU = SPACE AND VBKD~BZIRK IN S_BZIRK AND
          VBAK~VKORG IN S_VKORG AND VBAK~VTWEG IN S_VTWEG AND
          VBAK~SPART IN S_SPART AND VBAK~KUNNR IN S_KUNNR AND
          VBAK~ERNAM IN S_ERNAM.
      IF SY-SUBRC <> 0.
        WRITE: /1 'No data found for selection'.
        STOP.
      ENDIF.
    loop thru SO items
      LOOP AT ITAB.
    get ship-to customer
        IF NOT S_KUNWE IS INITIAL.
          CLEAR TVBPA.
          READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
            POSNR = ITAB-POSNR PARVW = 'WE'.
          IF SY-SUBRC <> 0.
            READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
              POSNR = '000000' PARVW = 'WE'.
          ENDIF.
          MOVE TVBPA-KUNNR TO ITAB-KUNWE.
        ELSE.
          CLEAR ITAB-KUNWE.
          SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              PARVW = 'WE'.
          IF SY-SUBRC <> 0.
            SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
              WHERE VBELN = ITAB-VBELN AND POSNR = '000000' AND
                PARVW = 'WE'.
          ENDIF.
        ENDIF.
        IF NOT ITAB-KUNWE IN S_KUNWE.
          DELETE ITAB.
          CONTINUE.
        ENDIF.
    get ship-to customer address info
        SELECT SINGLE NAME1 ORT01 REGIO LAND1 FROM KNA1
          INTO (ITAB-NAME1, ITAB-ORT01, ITAB-REGIO, ITAB-LAND1)
          WHERE KUNNR = ITAB-KUNWE.
        MODIFY ITAB.
      ENDLOOP.
      SORT ITAB BY VBELN POSNR.
    ENDFORM.
    FORM 200_GET_NO_DELIVERY
    get detail for SO items w/ no deliveries for order document types
      (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 200_GET_NO_DELIVERY.
      LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
        AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
        AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
        AUART = 'ZPSO' OR AUART = 'ZZNC'.
    select if delivery status = A (not delivered)
        IF ITAB-LFGSA = 'A'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    select schedule lines for SO item and write to internal table itab2a
          SELECT WADAT VBELN POSNR WMENG BMENG
            FROM VBEP INTO TABLE ITAB2A
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
    select sched lines w/request date and write to internal table itab2b
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    select sched lines w/commit date and write to internal table itab2c
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2A BY WADAT.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
          ORDR_QTY = 0.
          CONF_QTY = 0.
          NOCONF_QTY = 0.
    calculate the unconfirmed qty for a SO item
          LOOP AT ITAB2A.
            CONF_QTY = CONF_QTY + ITAB2A-BMENG.
            ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
          ENDLOOP.
          NOCONF_QTY = ORDR_QTY - CONF_QTY.
          LOOP AT ITAB2A WHERE BMENG <> 0.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING ITAB2A-BMENG REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING ITAB2A-BMENG COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = ITAB2A-WADAT.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = ITAB2A-BMENG.
            ITAB1-ZDESC = 'no delivery, confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDLOOP.
    get request date for SO item
          IF NOCONF_QTY <> 0.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING NOCONF_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING NOCONF_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = NOCONF_QTY.
            ITAB1-ZDESC = 'no delivery, not confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 300_GET_NO_GOODS_ISSUE
    get detail for SO items w/deliveries and no goods issue for
      doc types (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 300_GET_NO_GOODS_ISSUE.
    get detail for deliveries w/no goods issue
      SELECT VBELN WADAT WADAT_IST ERDAT ERZET
        FROM LIKP INTO (LIKP-VBELN, LIKP-WADAT, LIKP-WADAT_IST,
          LIKP-ERDAT, LIKP-ERZET)
        WHERE WADAT_IST = 0.
    select if actual qty delivered <> 0
        CLEAR LIPS.
        SELECT POSNR VGBEL VGPOS LFIMG
          FROM LIPS INTO (LIPS-POSNR, LIPS-VGBEL, LIPS-VGPOS, LIPS-LFIMG)
          WHERE VBELN = LIKP-VBELN AND LFIMG <> 0.
    select if goods movement status on delivery = A (no goods issue)
          CLEAR VBUP.
          SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
            WHERE VBELN = LIKP-VBELN AND POSNR = LIPS-POSNR.
          IF VBUP-WBSTA = 'A'.
            CLEAR ITAB3.
            ITAB3-VGBEL = LIPS-VGBEL.
            ITAB3-VGPOS = LIPS-VGPOS.
            ITAB3-VBELN = LIKP-VBELN.
            ITAB3-POSNR = LIPS-POSNR.
            ITAB3-WADAT = LIKP-WADAT.
            ITAB3-WADAT_IST = LIKP-WADAT_IST.
            ITAB3-LFIMG = LIPS-LFIMG.
            ITAB3-ERDAT = LIKP-ERDAT.
            ITAB3-ERZET = LIKP-ERZET.
            APPEND ITAB3.
          ENDIF.
        ENDSELECT.
      ENDSELECT.
      SORT ITAB3 BY VGBEL VGPOS VBELN POSNR.
    loop thru deliveries w/no goods issue and get SO item detail
      LOOP AT ITAB3.
        CLEAR ITAB.
        READ TABLE ITAB WITH KEY VBELN = ITAB3-VGBEL POSNR = ITAB3-VGPOS.
        IF SY-SUBRC <> 0.
          IF ITAB-AUART = 'ZZOR' OR ITAB-AUART = 'ZZC1' OR
            ITAB-AUART = 'ZZCO' OR ITAB-AUART = 'ZZRP' OR
            ITAB-AUART = 'ZZRW' OR ITAB-AUART = 'KE' OR
            ITAB-AUART = 'KR' OR ITAB-AUART = 'ZCHP' OR
            ITAB-AUART = 'ZPSO' OR ITAB-AUART = 'ZZNC'.
    assign values to detail fields
            CLEAR ITAB1.
            ITAB1-KUNNR = ITAB-KUNNR.
            ITAB1-KUNWE = ITAB-KUNWE.
            ITAB1-VBELN = ITAB-VBELN.
            ITAB1-POSNR = ITAB-POSNR.
            IF ITAB-KURSK = 0.
              ITAB-KURSK = 1.
            ENDIF.
            IF ITAB-KPEIN = 0.
              ITAB-KPEIN = 1.
            ENDIF.
    select delivery qty for SO item and write to internal table
            SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
              FROM VBFA INTO TABLE ITAB4
              WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
                ( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
    calculate total delivery qty for SO item
            DELV_QTY = 0.
            DELV_QTY1 = 0.
            LOOP AT ITAB4.
              IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
                  ITAB-AUART = 'KR').
                IF ITAB4-PLMIN = '-'.
                  ITAB4-RFMNG = ITAB4-RFMNG * -1.
                ENDIF.
    determine if delivery for SO item precedes delivery w/no goods
      issue (to determine request date and qty)
                CLEAR LIKP.
                SELECT SINGLE ERDAT ERZET
                  FROM LIKP INTO (LIKP-ERDAT, LIKP-ERZET)
                  WHERE VBELN = ITAB4-VBELN.
                IF LIKP-ERDAT < ITAB3-ERDAT OR ( LIKP-ERDAT = ITAB3-ERDAT
                    AND LIKP-ERZET < ITAB3-ERZET ).
                  DELV_QTY1 = DELV_QTY1 + ITAB4-RFMNG.
                ENDIF.
                DELV_QTY = DELV_QTY + ITAB4-RFMNG.
              ENDIF.
            ENDLOOP.
    get request dates for SO item
            REFRESH ITAB2B.
            SELECT EDATU VBELN POSNR WMENG
              FROM VBEP INTO TABLE ITAB2B
              WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
                WMENG <> 0.
    select sched lines w/commit date and write to itab2c
            REFRESH ITAB2C.
            SELECT EDATU VBELN POSNR ROMS1
              FROM VBEP INTO TABLE ITAB2C
              WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
                ROMS1 <> 0.
            SORT ITAB2B BY EDATU.
            SORT ITAB2C BY EDATU.
    loop thru request dates and delete request date entries for
      quantity(s) for preceding deliveries
            REMAIN_QTY1 = DELV_QTY1.
            LOOP AT ITAB2B.
              IF ITAB2B-WMENG > REMAIN_QTY1.
                ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
                MODIFY ITAB2B.
                EXIT.
              ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
                DELETE ITAB2B.
                EXIT.
              ELSE.
                REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
                DELETE ITAB2B.
              ENDIF.
            ENDLOOP.
    loop thru commit dates and delete commit date entries for
      quantity(s) for preceding deliveries
            REMAIN_QTY2 = DELV_QTY1.
            LOOP AT ITAB2C.
              IF ITAB2C-ROMS1 > REMAIN_QTY2.
                ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
                MODIFY ITAB2C.
                EXIT.
              ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
                DELETE ITAB2C.
                EXIT.
              ELSE.
                REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
                DELETE ITAB2C.
              ENDIF.
            ENDLOOP.
    if planned goods issue date is 0, put qty in non-confirmed
    get request date for SO item
            IF ITAB3-WADAT <> 0.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING ITAB3-LFIMG REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING ITAB3-LFIMG COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = ITAB3-WADAT.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = ITAB3-LFIMG.
              ITAB1-ZDESC = 'delivery, no goods issue'.
            ELSE.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING ITAB3-LFIMG REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING ITAB3-LFIMG COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = '99991231'.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = ITAB3-LFIMG.
              ITAB1-ZDESC = 'delivery, no goods issue date'.
            ENDIF.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 400_GET_PARTIAL_DELIVERY
    get detail for SO items w/partial deliveries for document types
      (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
    FORM 400_GET_PARTIAL_DELIVERY.
    process SO items for selected order types
      LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
          AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
          AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
          AUART = 'ZPSO' OR AUART = 'ZZNC'.
    select if delivery status = B (partially delivered)
        IF ITAB-LFGSA = 'B'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    select delivery qty for SO item and write to internal table
          SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
            FROM VBFA INTO TABLE ITAB4
            WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
              ( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
    calculate total delivery qty for SO item
          DELV_QTY = 0.
          LOOP AT ITAB4.
            IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
                ITAB-AUART = 'KR').
              IF ITAB4-PLMIN = '-'.
                ITAB4-RFMNG = ITAB4-RFMNG * -1.
              ENDIF.
              DELV_QTY = DELV_QTY + ITAB4-RFMNG.
            ENDIF.
          ENDLOOP.
    select schedule lines for SO item and write to internal table
          REFRESH ITAB2A.
          SELECT WADAT VBELN POSNR WMENG BMENG
            FROM VBEP INTO TABLE ITAB2A
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
    get request dates from schedule line table
          REFRESH ITAB2B.
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    get commit dates from schedule line table
          REFRESH ITAB2C.
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
          SORT ITAB2A BY WADAT.
    loop thru request dates and delete request date entries for
      quantity(s) already delivered
          REMAIN_QTY1 = DELV_QTY.
          LOOP AT ITAB2B.
            IF ITAB2B-WMENG > REMAIN_QTY1.
              ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
              MODIFY ITAB2B.
              EXIT.
            ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
              DELETE ITAB2B.
              EXIT.
            ELSE.
              REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
              DELETE ITAB2B.
            ENDIF.
          ENDLOOP.
    loop thru commit dates and delete request date entries for
      quantity(s) already delivered
          REMAIN_QTY2 = DELV_QTY.
          LOOP AT ITAB2C.
            IF ITAB2C-ROMS1 > REMAIN_QTY2.
              ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
              MODIFY ITAB2C.
              EXIT.
            ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
              DELETE ITAB2C.
              EXIT.
            ELSE.
              REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
              DELETE ITAB2C.
            ENDIF.
          ENDLOOP.
           ORDR_QTY = 0.
           CONF_QTY = 0.
           NOCONF_QTY = 0.
    calculate the unconfirmed qty for SO item
          LOOP AT ITAB2A.
            ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
            CONF_QTY = CONF_QTY + ITAB2A-BMENG.
          ENDLOOP.
          NOCONF_QTY = ORDR_QTY - CONF_QTY.
          NODELV_QTY = ORDR_QTY - DELV_QTY.
    loop thru schedule lines and process entries with no related
      delivery(s)
          REMAIN_QTY = DELV_QTY.
          LOOP AT ITAB2A.
            IF ITAB2A-BMENG <> 0.
              IF ITAB2A-BMENG <= REMAIN_QTY.
                REMAIN_QTY = REMAIN_QTY - ITAB2A-BMENG.
              ELSE.
                ITAB2A-BMENG = ITAB2A-BMENG - REMAIN_QTY.
                PERFORM GET_REQUEST_DATE TABLES ITAB2B
                  USING ITAB2A-BMENG REQ_DATE.
                PERFORM GET_COMMIT_DATE TABLES ITAB2C
                  USING ITAB2A-BMENG COM_DATE.
                ITAB1-ZDATE1 = REQ_DATE.
                ITAB1-ZDATE2 = ITAB2A-WADAT.
                ITAB1-ZDATE3 = COM_DATE.
                ITAB1-ZQTY1 = ITAB-KWMENG.
                ITAB1-ZQTY2 = ITAB2A-BMENG.
                ITAB1-ZDESC = 'partial delivery'.
    calculate net value for backlog qty
                ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
                ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
                IF ITAB-AUART = 'KR'.
                  ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
                  ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
                  ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
                ENDIF.
                APPEND ITAB1.
                REMAIN_QTY = 0.
              ENDIF.
            ENDIF.
          ENDLOOP.
    if total unconfirmed >= total not delivered, qty is unconfirmed
          IF NOCONF_QTY >= NODELV_QTY.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING NODELV_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING NODELV_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE3 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = NODELV_QTY.
            ITAB1-ZDESC = 'partial delv, not confirmed'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
    if order type is consignment return (KR), reverse sign
            IF ITAB-AUART = 'KR'.
              ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
              ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
              ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
            ENDIF.
            APPEND ITAB1.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 500_GET_THIRD_PARTY
    get detail for third party SO items
    FORM 500_GET_THIRD_PARTY.
    process SO items for selected order types
      LOOP AT ITAB WHERE PSTYV = 'TAS' AND ( AUART = 'ZZOR' OR
        AUART = 'ZZC1' OR AUART = 'ZZCO' OR AUART = 'ZZRP' OR
        AUART = 'ZZRW' OR AUART = 'KE' OR AUART = 'KR' OR
        AUART = 'ZCHP' OR AUART = 'ZPSO' OR AUART = 'ZZNC' ).
    select if billing status <> C (billed)
        IF ITAB-FKSAA <> 'C'.
    assign values to detail fields
          CLEAR ITAB1.
          ITAB1-KUNNR = ITAB-KUNNR.
          ITAB1-KUNWE = ITAB-KUNWE.
          ITAB1-VBELN = ITAB-VBELN.
          ITAB1-POSNR = ITAB-POSNR.
          IF ITAB-KURSK = 0.
            ITAB-KURSK = 1.
          ENDIF.
          IF ITAB-KPEIN = 0.
            ITAB-KPEIN = 1.
          ENDIF.
    get request dates from schedule line table
          REFRESH ITAB2B.
          SELECT EDATU VBELN POSNR WMENG
            FROM VBEP INTO TABLE ITAB2B
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              WMENG <> 0.
    get commit dates from schedule line table
          REFRESH ITAB2C.
          SELECT EDATU VBELN POSNR ROMS1
            FROM VBEP INTO TABLE ITAB2C
            WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
              ROMS1 <> 0.
          SORT ITAB2B BY EDATU.
          SORT ITAB2C BY EDATU.
    get PO number(s) for SO item and write to internal table
          REFRESH ITAB4.
          SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
            FROM VBFA INTO TABLE ITAB4
            WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
              VBTYP_N = 'V' AND RFMNG <> 0.
    calculate total delivery qty for PO item
          DELV_QTY = 0.
          LOOP AT ITAB4.
            IF ITAB4-PLMIN = '-'.
              ITAB4-RFMNG = ITAB4-RFMNG * -1.
            ENDIF.
            DELV_QTY = DELV_QTY + ITAB4-RFMNG.
          ENDLOOP.
    loop thru PO's for SO item
          LOOP AT ITAB4.
    select delivery lines for PO item
            SELECT EINDT EBELN EBELP MENGE FROM EKET
              INTO (EKET-EINDT, EKET-EBELN, EKET-EBELP, EKET-MENGE)
              WHERE EBELN = ITAB4-VBELN AND EBELP = ITAB4-POSNN.
              PERFORM GET_REQUEST_DATE TABLES ITAB2B
                USING EKET-MENGE REQ_DATE.
              PERFORM GET_COMMIT_DATE TABLES ITAB2C
                USING EKET-MENGE COM_DATE.
              ITAB1-ZDATE1 = REQ_DATE.
              ITAB1-ZDATE2 = EKET-EINDT.
              ITAB1-ZDATE3 = COM_DATE.
              ITAB1-ZQTY1 = ITAB-KWMENG.
              ITAB1-ZQTY2 = EKET-MENGE.
              ITAB1-ZDESC = '3rd party item'.
    calculate net value for backlog qty
              ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
              ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
              APPEND ITAB1.
            ENDSELECT.
          ENDLOOP.
    if total delivery qty < order qty, put remaining in non-confirmed
          IF DELV_QTY < ITAB-KWMENG.
            THIRD_QTY = ITAB-KWMENG - DELV_QTY.
            PERFORM GET_REQUEST_DATE TABLES ITAB2B
              USING THIRD_QTY REQ_DATE.
            PERFORM GET_COMMIT_DATE TABLES ITAB2C
              USING THIRD_QTY COM_DATE.
            ITAB1-ZDATE1 = REQ_DATE.
            ITAB1-ZDATE2 = '99991231'.
            ITAB1-ZDATE2 = COM_DATE.
            ITAB1-ZQTY1 = ITAB-KWMENG.
            ITAB1-ZQTY2 = THIRD_QTY.
            ITAB1-ZDESC = '3rd party item, no PO'.
    calculate net value for backlog qty
            ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
            ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
            APPEND ITAB1.
            CONTINUE.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    FORM 900_CREATE_LIST
    process open business detail and create list
    FORM 900_CREATE_LIST.
    if internal table is empty, write message and exit
        DESCRIBE TABLE ITAB1 LINES ZCNTR.
        IF ZCNTR = 0.
          WRITE: / 'No Data Found for Selection'.
          STOP.
        ENDIF.
        SORT ITAB1 BY KUNNR KUNWE VBELN POSNR.
    loop thru sorted table and create list
        LOOP AT ITAB1.
          IF ITAB1-ZDATE1 = SPACE.
            ITAB1-ZDATE1 = '99991231'.
          ENDIF.
          IF ITAB1-ZDATE3 = SPACE.
            ITAB1-ZDATE3 = '99991231'.
          ENDIF.
    get SO item detail
          CLEAR ITAB.
          READ TABLE ITAB WITH KEY VBELN = ITAB1-VBELN
                                   POSNR = ITAB1-POSNR BINARY SEARCH.
    print sold-to and ship-to customer header info
          AT NEW KUNWE.
            CLEAR KNA1.
            SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1
              WHERE KUNNR = ITAB1-KUNNR.
            CONCATENATE ITAB-ORT01 ITAB-REGIO INTO ADRS1 SEPARATED BY ', '.
            CONCATENATE ADRS1 ITAB-LAND1 INTO ADRS2 SEPARATED BY '   '.
            CONCATENATE ITAB-NAME1 ADRS2 INTO ADRS3 SEPARATED BY '   '.
            FORMAT COLOR 1 INTENSIFIED OFF.
            WRITE: /1 'Sold-to:', 10 ITAB1-KUNNR, 18 KNA1-NAME1,
              56 'Ship-to:', 65 ITAB1-KUNWE, 73 ADRS3.
            FORMAT RESET.
            SKIP.
          ENDAT.
    print out backlog detail
          CLEAR T171T.
          SELECT SINGLE BZTXT FROM T171T INTO T171T-BZTXT
            WHERE SPRAS = SY-LANGU AND BZIRK = ITAB-BZIRK.
          WRITE: /1 ITAB1-VBELN,
            13(6) ITAB1-POSNR NO-ZERO,
            21 ITAB-MATNR,
            41 ITAB-ARKTX,
            83 ITAB1-ZDATE1,
            95 ITAB1-ZDATE3,
            107 ITAB1-ZDATE2,
            119 ITAB-ERNAM,
            129 ITAB-BZIRK, 135 T171T-BZTXT,
            157(20) ITAB-BSTKD,
            179(12) ITAB1-ZQTY1 DECIMALS 0,
            193(12) ITAB1-ZQTY2 DECIMALS 0,
            207(16) ITAB1-ZEXTD DECIMALS 2,
            225 ITAB1-ZDESC.
          AT END OF VBELN.
            SKIP.
          ENDAT.
    print footing at ship-to customer
          AT END OF KUNWE.
            SUM.
            ULINE: /193(12), 207(16).
            FORMAT COLOR 1 INTENSIFIED OFF.
            WRITE: /1 'Total:  Sold-to:', 18 ITAB1-KUNNR,
              25 '/', 27 'Ship-to:', 36 ITAB1-KUNWE,
              193(12) ITAB1-ZQTY2 DECIMALS 0,
              207(16) ITAB1-ZEXTD DECIMALS 2.
            FORMAT RESET.
            SKIP 2.
          ENDAT.
          AT LAST.
            SUM.
            ULINE: /193(12), 207(16).
            FORMAT COLOR 1 INTENSIFIED ON.
            WRITE: /1 'Report Total:',
              193(12) ITAB1-ZQTY2 DECIMALS 0,
              207(16) ITAB1-ZEXTD DECIMALS 2.
            FORMAT RESET.
          ENDAT.
        ENDLOOP.
    ENDFORM.
    FORM GET_REQUEST_DATE
    subroutine to get request date for SO item
    FORM GET_REQUEST_DATE TABLES FTAB STRUCTURE ITAB2B
                          USING CONF_QTY REQ_DATE.
    DATA: REMAIN LIKE VBEP-WMENG,                 "qty remaining
          CNTR TYPE I,                            "loop counter
          TAB_INDEX TYPE I.                       "table index
    initialize
      REMAIN = 0.
      REQ_DATE = SPACE.
    get first request date from table
      TAB_INDEX = 1.
      READ TABLE FTAB INDEX TAB_INDEX.
    if request date not found, set request date to blank
      IF SY-SUBRC <> 0.
        REQ_DATE = SPACE.
        EXIT.
      ELSE.
        REQ_DATE =  FTAB-EDATU.
      ENDIF.
    calculate quantity remaining for request date
      REMAIN = FTAB-WMENG - CONF_QTY.
    if qty remaining > 0, update request date with qty remaining
      IF REMAIN > 0.
        FTAB-WMENG = REMAIN.
        MODIFY FTAB INDEX TAB_INDEX.
    if qty remaining = 0, delete request date (so next request
      date will be used for next confirmed qty)
      ELSEIF REMAIN = 0.
        DELETE FTAB INDEX TAB_INDEX.
    if qty remaining < 0, find next request date and update
      ELSE.
        CNTR = 0.
        WHILE REMAIN < 0 OR CNTR < 10.
          DELETE FTAB INDEX TAB_INDEX.
          TAB_INDEX = TAB_INDEX + 1.
          READ TABLE FTAB INDEX TAB_INDEX.
          REMAIN = REMAIN + FTAB-WMENG.
          CNTR = CNTR + 1.
        ENDWHILE.
        IF REMAIN = 0.
          DELETE FTAB INDEX TAB_INDEX.
        ELSEIF REMAIN > 0.
          FTAB-WMENG = REMAIN.
          MODIFY FTAB INDEX TAB_INDEX.
        ENDIF.
      ENDIF.
    ENDFORM.
    FORM GET_COMMIT_DATE
    subroutine to get commit date for SO item
    FORM GET_COMMIT_DATE TABLES CTAB STRUCTURE ITAB2C
                          USING CONF_QTY COM_DATE.
    DATA: REMAIN LIKE VBEP-WMENG,                 "qty remaining
          CNTR TYPE I,                            "loop counter
          TAB_INDEX TYPE I.                       "table index
    initialize
      REMAIN = 0.
      COM_DATE = SPACE.
    get first commit date from table
      TAB_INDEX = 1.
      READ TABLE CTAB INDEX TAB_INDEX.
    if request date not found, set request date to blank
      IF SY-SUBRC <> 0.
        COM_DATE = SPACE.
        EXIT.
      ELSE.
        COM_DATE =  CTAB-EDATU.
      ENDIF.
    calculate quantity remaining for request date
      REMAIN = CTAB-ROMS1 - CONF_QTY.
    if qty remaining > 0, update request date with qty remaining
      IF REMAIN > 0.
        CTAB-ROMS1 = REMAIN.
        MODIFY CTAB INDEX TAB_INDEX.
    if qty remaining = 0, delete request date (so next request
      date will be used for next confirmed qty)
      ELSEIF REMAIN = 0.
        DELETE CTAB INDEX TAB_INDEX.
    if qty remaining < 0, find next request date and update
      ELSE.
        CNTR = 0.
        WHILE REMAIN < 0 OR CNTR < 10.
          DELETE CTAB INDEX TAB_INDEX.
          TAB_INDEX = TAB_INDEX + 1.
          READ TABLE CTAB INDEX TAB_INDEX.
          REMAIN = REMAIN + CTAB-ROMS1.
          CNTR = CNTR + 1.
        ENDWHILE.
        IF REMAIN = 0.
          DELETE CTAB INDEX TAB_INDEX.
        ELSEIF REMAIN > 0.
          CTAB-ROMS1 = REMAIN.
          MODIFY CTAB INDEX TAB_INDEX.
        ENDIF.
      ENDIF.
    ENDFORM.
    END-OF-REPORT.

  • Problems with screen tilting and zooming

    I've been using my touch for web browsing quite a bit.
    One persistently annoying problem I keep having is switching between the touch and other devices. The problem is not unique to any platform. It happens on my iMac at home and the XP laptop at work.
    Whenever I browse an web page on my touch I do things like:
    - double tap to zoom text to just the right size
    - flip the device back and forth between horizontal and vertical to make whatever content I'm looking at fit the screen better.
    Overall, I'm very pleased with web viewing on the touch, but whenever I view web content on my iMac or PC, I keep having issues:
    - double tapping on the screen doesn't work. I usually remember that it isn't a touch screen and use the mouse, but double clicking ona web page never does anything but select text or open a new page.
    - flipping the iMac or XP laptop on its side doesn't seem to have any effect on things inside the machine, but frequently has disruptive effects on the surroundings. The XP laptop has so many cables plugged in that when I grab the screen & rotate I inevitablly disconnect something or yank the speakers off the desk. It just plain doesn't work on the iMac as there really isn't any room on my desk. I think I'll go check Ikea's web site for firmware updates on the desk.
    It just seems like the iMac and PC aren't working in a natural way like the touch. I have noticed it usually happens right after I'm using my touch. Maybe I should update the firmware on the iMac or PC? Has anyone had the 1.1.2 update show up for their iMac or PC? (or desk?)
    Is anyone else having these issues?

    Hi and welcome to the discussions!
    I agree with Barbara. That is unacceptable.
    Did they have you try to create a new user account or perform an archive and install? If the problem happens in all apps, or when just the Finder is open, it is either an OS issue, or more likely a hardware problem such as bad video on the midplane. An archive and install or creating a new users account can help eliminate software as a possibility and are two of the steps that Apple almost always suggests when their is odd behavior similar to what you describe.
    Also, try shutting down and unplugging all cables fromyour iMac - including the wall - for 15 minutes. Then plug in the power cord while simultaneously pressing and holding the power button on the back of the computer. Let go of the power button and press the power button once more to start up your iMac. That would reset the SMU.
    Another thing to try before calling them again is to reset the PRAM.
    - Shut down the computer.
    - Locate the following keys on the keyboard: Command, Option, P, and R. You will need to hold these keys down simultaneously in step 4.
    - Turn on the computer.
    - Press and hold the Command-Option-P-R keys. You must press this key combination before the gray screen appears.
    - Hold the keys down until the computer restarts and you hear the startup sound for the second time.
    - Release the keys.
    Your computer's PRAM and the NVRAM are reset to the default values. it might reset date and time settings, but that is not fatal.
    I honestly do not think that any of what I suggest will make a difference, but it will eliminate a great number of possibilities. I think it is either a bad backlight or bad video, but that is just a guess.
    Give those a shot and call Apple back. Then you can tell them what you have done and they will probably recommend that you take it in to an Apple repair center for further diagnostics.

  • Super wide Zoom and Super telephoto Zoom for 6D without vignette effect

    I have a Canon 6D Full frame camera. And I just bought the 24- 70 L II USM lens. 
    To complete my kit, I'm looking to invest a super wide zoom ( as low as 10 going uptil 22/ 24 mm) and super telephoto above 70 mm going uptil 300 mm (both preferably L series USM, with wide openings along the full focal range) 
    Before I make the purchases I want to be sure which lenses do NOT have the problem of vignetting AT ALL. 
    I am okay with barell distorition on the wide. But vignetting is something I want to totally avoid. 
    All you experienced folks out there, please guide me. Would also appreciate any links to lists that enumerate the same. 
    Alternatively I am also open to using prime lenses, but they are really low on my preference. 
    Appreciate your time and response. 

    In most software that allows you to add in some vignetting, you can also subtract it.  
    Some apps have lens profiles so they know how much vignetting occurs with that specific lens and at various focal lengths.
    But you can also do this manually.  In astro imaging we calls these images "flats".  The purpose of a "flat" is to determine how much vignetting there is in an image so that we can correctly adjust for it using a program like Photoshop.  
    To create a "flat" you would cover the lens with a piece of white translucent fabric.  Put some light on the fabric so that the fabric itself is evenly lit.  This means the view through the camera is basically just an all-white field with no contrast or features.   Then take a photo (it doesn't matter that the camera cannot focus on the fabric.)
    What you'll get is an all-white image typically brighter in center and dimmer toward the edges but the image can be used to measure the lens' specific vignetting (and in the case of a zoom that level of vignetting would vary by focal length.)  The image can be used as a reference image with software to completely eliminate vignetting.
    A photographer would normally not go to such extremes to get a perfectly flat field (lighting wise), but astro-imagers have to do this as a matter of routine.
    Tim Campbell
    5D II, 5D III, 60Da

Maybe you are looking for