HI, about va21

Can any body tell me the business purpose of uploading the quotation order, why we r uploading, furthur when it will be useful.I am in technical side , but i want to know the reqirment.

Hi Kumar,
its very simple. assume that u r into the bussiness and am one of ur customer. u will have ur competetors i need not but the goods always from u as sometimes ur competetor may be much cheaper to u or even u may be selling the goods much cheaper to ur competitors. Now say i have to buy products X and Y so i will ask u for the Quotation and also i may collect the Quotations from other vendors too.
there fore ur quotation contains the rates of the products X and Y and the quotations validity which is assumed that even if the rates of the produts X and Y goes high, u need to supply the goods to the rate which u have quoted in ur quotation.
By this the company will also have a trace on how many quotations have been converted into sales order for analysis.
please feel free to ask any doubts regarding.
cheers,
anil.

Similar Messages

  • Bonus VA01 / VA21 routine 24     Only in billing doc.

    Hello SAP experts,
    in our sales documents ( VA01 / VA21 ) we need the bonusinformation, like in the invoice.
    For SAP Standard we have the routine 24     Only in billing doc.
    Do you know why?
    Performance?
    Thanks for your help and information.
    Best regards
    Petra Schober

    Hi,
    This 24 is requirement it will be used in rebates or bonus .
    example -when billing is happening that time only system will calculate the rebates or bonus other wise system will not bothered about the rebates or bonus  this requirement 24 will assigned in pricing procedure in rebate or bonus condition type in requirement .then system will not do unnessery search the performance  will not slow

  • Screen Exits for VA21

    I have to add a field(date) in the screen in the transaction VA21 .
    Is there any Screen exit for transaction VA21 ? if not how do i go about doing the same

    Hello Amit,
    The requirement is can be met as follows....
    U can add the required field in the Additional data tab for header.
    User exits in the screens
    Additional header data is on screen SAPMV45A 0309, This screens contain the Include screens SAPMV45A 8309 as user exits.
    Fields which are also to be included in the sales document for a specific installation should be included on the Include screens for maintaining. If an application-specific check module is needed for the fields, this can be included in the Include MV45AIZZ. The module is called up in the processing logic of the Include screens.
    For field transports, you do not have to make changes or adjustments.
    Example
    A new field, VBAK-ZZKUN, should be included in table VBAK.
    If the check is defined via the Dictionary (fixed values or check table) the field must be included with the fullscreen editor in the Include screen SAPMV45A 8309. In this case, no change has to be made to the processing logic.
    This should resolve ur problem.

  • Can anybody tell me about SD Functionality and the main tables used in SD

    Hi,
    Can anybody tell me about SD Functionality and the main tables used in SD.
    Thanks,
    bsv.

    Hi
    SD FLOW
    SD Flow Cycle:
    INQUIRY ( VA11)
    |
    QUOTATION (VA21)
    |
    PURCHASE ORDER (ME21)
    |
    ORDER CONFIRMATION (VA01)
    |
    PICKING LIST – (VL36)
    |
    PACKING LIST - (VL02, VL01)
    |
    SHIPPING – (VT01)
    |
    INVOICE – (VF21, VF01)
    |
    AR
    Enquiry - Customer enquires about the Products services that were sold by a company - VA11
    Quotation - Company Gives a Quotation for the products and Services to a Customer
    Sales Order - Customer gives a Purchase order to the company agaionst which a Sales order will be raised to Customer in SAP.
    VBAK: Sales Document(Header Data) (VBELN)
    VBAP: Sales Document(Item Data) (VBELN,POSNR,MATNR,ARKTX,CHARG)
          Enquiry, Quotation, Sales Order are differentiated based on Doc.
          Type(VBTYP field) in VBAK,VBAP Tables( for Enquiry VBTYP = A,
          for Quotation 'B' & for Order it is 'C'.)
    Delivery(Picking, Packing, Post Goods Issue and Shipment)->
    Company sends the material after picking it from Godown and Packing it in a Handling Unit(box) and Issues the goods
    LIKP: Delivery Table (Header Data)(VBELN,LFART,KUNNR,WADAT,INCO1)
    LIPS: Delivery Table (Item Data)(VBELN,POSNR,WERKS,LGORT,MATNR,VGBEL)
          (LIPS-VGBEL = VBAK-VBELN, LIPS-VGPOS = VBAP-POSNR)
    Billing - Also company bills to the customer for those deliveries
    And in FI against this billing  Accounting doc is created.
    VBRK: Billing Table(Header Data)(VBELN,FKART,BELNR)
    VBRP: Billing Table(Item Data)(VBELN,POSNR,FKIMG,NETWR,VGBEL,VGPOS)
          (VBRP-AUBEL = VBAK-VBELN, VBRP-VGBEL = LIKP-VBELN)
          Apart from these tables there are lot of other tables which starts with
          ‘V’, but we use the following tables frequently.
    other tables and imp fields
    VBUK: All Sales Documents status & Admn. Data(Header)(VBELN,VBTYP)
          VBTYP= ‘C’(Sales Order) VBTYP=’J’(Delivery) VBTYP=’M’(Invoice) 
    VBUP: Sales Documents status & Admn. Data(Item)(VBELN,POSNR)
    VBEP: Sales Doc. Schedule Lines Data(VBELN,POSNR,EDATU,WMENG)
    VBKD: To get sales related Business data like Payment terms etc.(VBELN,ZTERM)
    VBFA: sales document flow data(VBELV,VBELN,POSNV,VBTYP)
    VBPA: Partner functions Data(VBELN,PARVW,KUNNR,LIFNR)
    VEDA: Contract Data(VBELN,VPOSN)
    VEDAPO: Contract Data(VBELN,VPOSN)
    KONA:  Rebate Agreements (KNUMA,VKORG,VTWEG,SPART)
    VBRL:  SD Document: Invoice List(VBELN,POSNR,VBELN_VF,NETWR,KUNAG)
    VKDFS: SD Index: Billing Indicator(FKTYP,VBELN,FKART,VKORG)
    VBSK:  Collective Processing for a Sales Document Header(SAMMG,SMART)
    VBSS:  Collective Processing: Sales Documents(SAMMG,VBELN,SORTF)
    VRKPA: Sales Index: Bills by Partner Functions(VBELN,BELNR,KUNDE,PARVW)
    VRPMA: SD Index: Billing Items per Material(MATNR,VBELN,BELNR,KUNNR)
    TVLKT: Delivery Type: Texts(LFART,VTEXT)
    KNA1: Customer Master-General(KUNNR,NAME1,LAND1)
    KNB1: Customer Master(Company Code)(KUNNR,BUKRS,PERNR)
    KNC1: Customer Master Data (Transaction Figures)(KUNNR,BUKRS,GJAHR)
    KNVK: Customer Master Contact Partner(PARNR,KUNNR,NAME1)
    KNVV: Customer Master sales data(KUNNR,VKORG,VTWEG,KDGRP)
    KNBK: Customer Bank Details(KUNNR,BANKS,BANKL,BANKN)
    KNVH: Customer Hierarchy (HITYP,KUNNR,VKORG,VTWEG,SPART)
    KNVP: Customer Master Partner Functions(KUNNR,PARVW,KUNN2)
    KNVS: Customer Shipment data(KUNNR,VSTEL,TRANS)
    KNVI: Customer Tax data(KUNNR,ALAND,TATYP)
    LFA1: Vendor Master-General (LIFNR,NAME1,ORT01)
    LFB1: Vendor Master(Company Code)(LIFNR,BUKRS,PERNR)
    LFC1: Vendor Master (Transaction Figures)(LIFNR,BUKRS,GJAHR)
    MARA: Material Master-General (MATNR,MTART,MATKL)
    MARC: Material Master-Plant data(MATNR,WERKS,EKGRP)
    MARD: Material Master- St.Location Data(MATNR,WERKS,LGORT,LABST)
    EBEW:  Sales Order Stock Valuation(MATNR,VBELN,BWKEY,BWTAR)
    TVKO:  Sales Organizations(VKORG)
    TVTW:  Distribution Channel(VTWEG)
    TSPA:  Divisions(SPART)
    TVKOV: Distribution Channels for S.Orgn(VKORG,VTWEG)
    TVKOS: Divisions for S.Orgn(VKORG,SPART)
    TVTA:  Sales Areas(VKORG,VTWEG,SPART)
    TVBUR: Sales Offices(VKBUR,ADRNR)
    TVKBT: Sales Office Texts(VKBUR,SPRAS,BEZEI)
    TVKBZ: Sales Office Assign.to Sales Area(VKORG,VTWEG,VKBUR)
    TVKGR: Sales Group(VKGRP)
    TVGRT: Sales Group Texts(VKGRP,SPRAS,BEZEI)
    TVBVK: Sales Group to Sales office(VKBUR,VKGRP)
    TVKWZ: Plants Assign.to S.Orgn(WERKS,VKORG)
    T171T: Sales District Texts(BZIRK,BZTXT,SPRAS)
    TVLA:  Loading Points(LSTEL)
    TVST:  Shipping Points (VSTEL)
    TVSWZ: Shipping Point to Plant(VSTEL,WERKS)
    TVPT:  Item Categories (PSTYV)
    TINC:  Customer Incoterms(INCO1)
    T077D: Customer Account Group (KTOKD)
    T001W: Plants (WERKS)
    T001L: Storage Locations (LGORT)
    T499S: Locations(WERKS,STAND,KTEXT)
    TWLAD: To get address of Storage Location and Plant(LGORT,ADRNR)
    TVAK:  Sales Document (Order) Types (AUART)
    TVAU:  Sales Documents: Order Reasons (AUGRU)
    TVFK:  Billing Document Types (FKART)
    TVLK:  Delivery Types(LFART)
    TVSB:  Shipping Conditions (VSBED)
    TTDS:  Transportation Points(TPLST)
    TVKT:  Account Assignment Groups (KTGRD)
    KONV:  Condition Types pricing)(KNUMV,KSCHL,KWETR)
    ADRC:  To get Addresses of Partners(ADDRNUMBER,NAME1)
    VBBE:  Sales Requirements: Individual records(VBELN,POSNR,MATNR)
    VBBS:  Sales Requirement totals Record(MATNR,WERKS,LGORT,CHARG)
    VBKA:  Sales Activities Data(VBELN,KTAAR)
    VBPV:  Sales Document Product Proposal(VTWEG,MATNR,KUNNR,CHARG)
    T682:  Access Sequences (KOZGF)
    T682T: Access Sequence Texts (KOZGF,VTXTM)
    T683:  Pricing Procedures (KALSM)
    T683T: Pricing Procedures Texts(KALSM,KAPPL,SPRAS,VTEXT)
    T685:  Pricing Condition Types (KSCHL)
    T685T: Condition Type Texts(KSCHL,SPRAS,KAPPL,VTEXT)
    KONH:  Conditions (Header)(KNUMH,KAPPL,KSCHL)
    KONP:  Conditions (Item)(KNUMH,KOPOS,KAPPL,KSCHL)
    KONV:  Conditions (Transaction Data)(KNUMV,KSCHL,KBERT,KWERT)
    KOND:  Conditions (KNUMD,ZUSKO,KSCHL)
    for sd go through the links
    http://www.sapgenie.com/abap/tables_sd.htm
    Please check this SD online documents.
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCSD/CAARCSD.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_SD.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMSD/BCBMTWFMSD.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LOLISPLN/LOLISPLN.pdf
    Also please check this SD links as well.
    http://help.sap.com/saphelp_47x200/helpdata/en/92/df293581dc1f79e10000009b38f889/frameset.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/dd/55f33e545a11d1a7020000e829fd11/frameset.htm
    http://www.sap-basis-abap.com/sapsd.htm
    http://www.sap-img.com/sap-sd.htm
    http://www.sapgenie.com/abap/tables_sd.htm
    http://searchsap.techtarget.com/featuredTopic/0,290042,sid21_gci961718,00.html
    http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/SD_tutorial.html
    All help ebooks are in PDF format here
    http://www.easymarketplace.de/online-pdfs.php
    Reward points if useful
    Regards
    Anji

  • Details about transaction codes

    hi guru's
    i am new to the sap field, i want to know is there is any website or materials in internet for knowing only transaction codes.
    I completed upto define and assignment, next how to go about it?.
    Regards
    C. Mohanprabu

    Hi Mohanprabu,
    Go to T.Code se16 and type in CUS_IMGACH table.
    Execute.
    Paste IMG Activity and run.
    You will see Tcode that belongs to IMG Activity.
    SAP SD Tips by: Javier
    The most frequently used transaction codes are as follows:
    1. VS00 - Master data
    2. VC00 - Sales Support
    3. VA00 - Sales
    4. VL00 - Shipping
    5. VT00 - Transportation
    6. VF00 - Billing
    Others as follows:
    At Configuration:
    1. VOV8 - Define Sales documents type (header)
    2. OVAZ - Assigning Sales area to sales documents type
    3. OVAU - Order reasons
    4. VOV4 - Assign Item categoreies(Item cat determination)
    5. VOV6 - Scedule line categories
    6. OVAL - To assign blocks to relevant sales documents type
    7. OVLK - Define delivery types
    8. V/06 - Pricing
    9. V/08 - Maintain pricing procedure
    10.OVKP - Pricing proc determination
    11.V/07 - Access sequence
    Enduser:
    1. Customer Master Creation-VD01 and XD01 (for full inclu company code)
        VD02 - Change Customer
        VD03 - Display Customer
        VD04 - Customer Account Changes
        VD06 - Flag for Deletion Customer
        XD01 - Create Customer
        XD02 - Modify Customer
        XD03 - Display Customer
    2. Create Other material -
    MM00
    3. VB11- To create material determination condition record
    4. CO09- Material availability Overview
    5. VL01 - Create outbound delivery with ref sales order
    6. VL04 - Collective processing of delivery
    7. VA11 - Create Inquiry
        VA12 - Change Inquiry
        VA13 - Display Inquiry
    Sales & Distribution
    Sales order / Quote / Sched Agreement / Contract
    · VA01 - Create Order
    · VA02 - Change Order
    · VA03 - Display Order
    · VA02 - Sales order change
    · VA05 - List of sales orders
    · VA32 - Scheduling agreement change
    · VA42 - Contract change
    · VA21 - Create Quotation
    · VA22 - Change Quotation
    · VA23 - Display Quotation
    Billing
    · VF02 - Change billing document
    · VF11 - Cancel Billing document
    · VF04 - Billing due list
    · FBL5N - Display Customer invoices by line
    · FBL1N - Display Vendor invoices by line
    Delivery
    · VL02N - Change delivery document
    · VL04 - Delivery due list
    · VKM5 - List of deliveries
    · VL06G - List of outbound deliveries for goods issue
    · VL06P - List of outbound deliveries for picking
    · VL09 - Cancel goods issue
    · VT02N - Change shipment
    · VT70 - Output for shipments
    General
    · VKM3, VKM4 - List of sales documents
    · VKM1 - List of blocked SD documents
    · VD52  - Material Determination
    Thanks
    Mohan

  • Overall block and Credit Customer Block on VA21

    Hello
    I have a requirement to display 2 standard SAP order level hard errors;  Overall block error message (Customer XXXXXXXX has been assigned order block: Overall block) and Credit blocked (Order receipt/delivery not possible, credit customer blocked) to be displayed in VA21, just like it is displayed in VA01.
    Can this be achieved with out core code change?
    Note: Searched in the SCN posts, but couldnt find a solution here.
    Thanks
    Shafeek

    Hi Shafeek,
    Credit Limit standard functionality it self will fulfill your requirement.
    In Sales Document Type (VOV8) Update Check Credit Limit and Credit Group field and it will work.
    About Customer Master Overall Block, Please check that Blocking Reason has been assigned to your Document Type or not as per below screenshot.
    Regards,
    MJ

  • Adobe Bridge in Photoshop - How to install Bridge and camera raw? And what is it all about?

    Hi everyone! I am actually in love with this adobe photoshop. I used PSCS2 before, but later on upgraded to CS4. But I feel tired in upgrading to CS5.
    One time, I found a tutorial in youtube about camera raw, and would really want to use it. But I was wondering how to install the camera raw. I believe camera raw is a plugin? so I downloaded the plugin here, installed it in my PS. I downloaded a file Camera Raw.8bi and paste it on my C drive - C:\Program Files\Adobe\Photoshop CS4\Plug-ins\File Formats.
    I now am very confused, how will I open it? I do not have adobe bridge!  After I installed the camera raw, I opened my PS. I clicked the file>then browse in bridge. I had an error, it's "error 2 photoshop11 undefined". Which is what I thought, I might have done something wrong with installing it.
    My question is, do you still need adobe bridge installed in order to use camera raw?
    If yes, how does it work? How am I suppose to open camera raw?
    If no, how am I going to open camera raw without bridge?
    And also, where will I download adobe bridge? I cannot find one here for CS4, only adobe bridge for CS5. I am wondering, is it okay to install adobe bridge CS5 and use it with my PS CS4?
    I badly need help!

    WebDAV (Web-based Distributed Authoring and Versioning) is a set of extensions to HTTP/1.1.
    The main difference from FTP as far as I can see is that it allows you to edit documents on a remote web server.
    WebDAV was used by the Apple server - MobileMe but is not generally supported by hosting services.
    Using WebDAV you can mount a directory locally. This was how iDisk worked on your Mac and you could drag files onto it to upload them to the remote directory.
    With WebDAV, a number of users can share a directory which is why its used in local networks but presents security problems when using a remote server.
    If you are into file sharing rather than publishing, Dropbox or its new rival SugarSync are more appropriate.

  • A few days ago i bought the macbook pro in a Providence. In late Summer i will come back to my Country - Ukraine. I would like to know about a tax for my laptop. Can i return tax? Through the TAX FREE or return in airport? What should i do?

    A few days ago i bought the macbook pro in a Providence. In late Summer i will come back to my Country - Ukraine. I would like to know about a tax for my
    laptop. Can i return tax? Through the TAX FREE or return in airport? What should i do?

    You need to talk with the tax authorities in the countries to which you traveled and that of your home country. We are all end-users liek you and not Apple agents.

  • I am trying to use itunes, it will not open at all, have uninstalled and downloaded new software and 64bit for windows. i have an old ipod nano from about 5 years ago. anything i can do, even to view my purchases and watch/listen to music etc?

    ok i have a advent roma laptop with window 7. my itunes used to work fine, completely. every time i plugged in my ipod it was ok. recently my ipod was not working so i never bothered with itunes, however i have movies/tv prog that i purchased and would like to view them. i have an ipod nano from about 5 years ago, the problem with thet is, it switches on, but the circular control panel does nothing, all you can do is lock and unlock it - nothing else.
    i tried to download new version of itunes, then uninstalled my origonal version, incase it was corrupted etc, i then again tried to down load new version and also version that is windows 64bit. still when i select the downlaod to open as son as it is finnished nothing happens. and now my desktop shortcut has dissapeared. before when it was there, id double click it, nothing, right click to open it, nothing.
    im not the best technically minded but i just dont see what im doing wrong here, please help

    Perhaps it would be helpful for you to view the page source code of this page
    http://www.alanwork.com/
    As you can see, the submenu code links are immediately below the top level code, and are
    wrapped in their own  <UL> </UL> tag pairs.
    Hope that helps

  • Vendor payments and debts about an asset

    Dear sap colleages
    I need to know these information about an ASSET:
    Purchased orders,
    Items from purchase orders,
    which of these items i've received, i've paid (also date), i've not paid ( amount of debt related to asset)
    payments in advanced (date),
    wich of these payments have been cleared (clearing date) and wich not,
    who is the vendor,
    other expenses (such as delivery)
    the amount of taxes,
    invoices related and NOT RELATED TO purchase order
    payments without invoice
    Which transactions do i need to follow?
    or
    Which document flow?
    or
    Which tables? Wich keys?
    or
    Is there a standard report that can give me such information?
    Any documentation and/or code will be appreciated.
    I need to program a report to integrate all these information.
    Thanks and Kind Regards

    Hi,
    Refer to T.code AW01N - Asset Explorer .
    Additionally you cna also refer to SAP Standard reports in Asset Accounting
    Accounting - Financial Accounting - Fixed Assets - Information System - Reports on Asset Accounting
    Please let me know if you need more information.
    Assign points if useful.
    Regards
    Sridhar M

  • I cannot receive email properly now. When I open mail, it says that is downloading about 1,700 emails. At the very end, it gives me my newest ones. But this takes a long time. I've contacted the Internet service provider and verified all the right setting

    I cannot receive email properly on either my IPad or my IPhone. I have had them for over a year and they have always worked fine. Until three days ago, when they both started acting up. On the IPad, when I open mail, it says it is downloading about 1,700 emails. At the very end, which takes quite a while to get to, I finally get the most recent ones. The IPad is sending emails just fine.
    On my IPhone, when I open mail, it says it is downloading 100 emails, but it doesn't do that. And it gives me no new emails at all. The IPhone is sending email just fine.
    I have already deleted the email accounts on both devices and reinstalled them. I've contacted the Internet service provider and verified all the right settings. The Outlook email on my desktop is working perfectly.

    WMV is a heavily-compressed format/CODEC, and the processing time will depend on several factors:
    Your CPU, which is not that powerful in your case
    Your I/O sub-system, which is likely a single HDD on your laptop
    The source footage. What is your source footage?
    Any Effects added to that footage. Do you have any Effects?
    Each of those will have an impact on the time required.
    The trial has only one main limitation - the watermark. Now, there are some components, that have to be activated, but are not with the trial, but they would be evident with Import of your source footage, if it's an issue.
    Good luck,
    Hunt

  • I have had my IPAD2 for quite a while but haven't activated my cellular data for about a year.  I am now trying to activate and when I go to cellular data, turn it on and try to tap view account i just get a message that says "connection to server lost".

    I have had my IPAD2 for quite a while but haven't activated my cellular data for about a year.  I am now trying to activate and when I go to cellular data, turn it on and try to tap view account i just get a message that says "connection to server lost".  I could swear the last time I used cellular data you would see the signal in the upper left corner and I only see "no service" there, I am in a location where I know I should have service.  Is there something I should do to my IPAD?  I tried resetting, I tried clearing cookies and history in Safari (after reading a post n these discussions).  I don't know what to do next. My IOS version is 6.1.3.  I did go into Network from the general tab and I see it says "SIM not provisioned".    HELP and Thank you in advance.

    Hello Theresa818,
    Thank you for using Apple Support Communities!
    It sounds like the cellular data will not activate for some reason on the iPad.
    I found this article that will help you resolve this issue here, named iPad (Wi-Fi + Cellular Models): Troubleshooting a cellular data connection, found here http://support.apple.com/kb/TS4249
    Check for a carrier settings update.
    Update your iPad.
    Toggle the Cellular Data setting off and on under Settings > Cellular Data.
    Restart your iPad.
    Tap Settings > General > About. Locate the Carrier entry and make sure that your carrier is correct.
    If your SIM card has SIM PIN enabled, try turning it off: Tap Settings > Cellular Data > SIM PIN.
    Make sure you're in an area of good coverage. If the cellular data connection works in another area, contact your carrier to report the original affected area.
    Reset network settings: Tap Settings > General > Reset > Reset Network Settings.
    Restore the iPad as new.
    If none of the above steps resolves the issue, make an appointment at an Apple Retail Store, contact your carrier, or contact AppleCare to troubleshoot further.
    I know you may have done one or two of the steps here, so you can skip those.
    Take care,
    Sterling

  • Doubt about report FBL5N of screen field:Open items and Cleared items

    hi
    i know the report FBL5N is use DDF LDB and the report work flow is BSID->BKFP->BSEG
    but i don't know to differentiate Open Items and Cleared items in this report.
    Open items and Cleared items stand for a field flag in these table (BSID,BKFP,BSEG )? if true the field is?
    or they must be calc in program ? if true what about calc rules?
    waiting for help! thank you!

    Hi,
    Here is the difference in Open Items and Cleared Items.
    In FI first the document is Open (when it is posted) so the entry is made in table BSID. Once the document is cleared, it will move from BSID to BSAD. And for Cleared item you will see Clearing Document no and Clearing date values updated (these are blank when the item is open).
    The only difference in Open and Cleared is via Clearing Document and Clearing Date. If the values are present, it means document is cleared.
    Hope this helps.
    ashish
    Message was edited by:
            Ashish Gundawar

  • Follow up on an old thread about memory utilization

    This thread was active a few months ago, unfortunately its taken me until now
    for me to have enough spare time to craft a response.
    From: SMTP%"[email protected]" 3-SEP-1996 16:52:00.72
    To: [email protected]
    CC:
    Subj: Re: memory utilization
    As a general rule, I would agree that memory utilzation problems tend to be
    developer-induced. I believe that is generally true for most development
    environments. However, this developer was having a little trouble finding
    out how NOT to induce them. After scouring the documentation for any
    references to object destructors, or clearing memory, or garbage collection,
    or freeing objects, or anything else we could think of, all we found was how
    to clear the rows from an Array object. We did find some reference to
    setting the object to NIL, but no indication that this was necessary for the
    memory to be freed.
    I believe the documentation, and probably some Tech-Notes, address the issue of
    freeing memory.
    Automatic memory management frees a memory object when no references to the
    memory
    object exist. Since references are the reason that a memory object lives,
    removing
    the references is the only way that memory objects can be freed. This is why the
    manuals and Tech-Notes talk about setting references to NIL (I.E. freeing memory
    in an automatic system is done by NILing references and not by calling freeing
    routines.) This is not an absolute requirement (as you have probably noticed
    that
    most things are freed even without setting references to NIL) but it accelerates
    the freeing of 'dead' objects and reduces the memory utilization because it
    tends
    to carry around less 'dead' objects.
    It is my understanding that in this environment, the development tool
    (Forte') claims to handle memory utilization and garbage collection for you.
    If that is the case, then it is my opinion that it shoud be nearly
    impossible for the developer to create memory-leakage problems without going
    outside the tool and allocating the memory directly. If that is not the
    case, then we should have destructor methods available to us so that we can
    handle them correctly. I know when I am finished with an object, and I
    would have no problem calling a "destroy" or "cleanup" method. In fact, I
    would prefer that to just wondering if Forte' will take care of it for me.
    It is actually quite easy to create memory leaks. Here are some examples:
    Have a heap attribute in a service object. Keep inserting things into
    the heap and never take them out (I.E. forgot to take them out). Since
    service objects are always live, everything in the heap is also live.
    Have an exception handler that catches exceptions and doesn't do
    anything
    with the error manager stack (I.E. it doesn't call task.ErrMgr.Clear).
    If the handler is activated repeatedly in the same task, the stack of
    exceptions will grow until you run out of memory or the task terminates
    (task termination empties the error manager stack.)
    It seems to me that this is a weakness in the tool that should be addressed.
    Does anyone else have any opinions on this subject?
    Actually, the implementation of the advanced features supported by the Forte
    product
    results in some complications in areas that can be hard to explain. Memory
    management
    happens to be one of the areas most effected. A precise explanation to a
    non-deterministic process is not possible, but the following attempts to
    explain the
    source of the non-determinism.
    o The ability to call from compiled C++ to interpreted TOOL and back
    to compiled C++.
    This single ability causes most of the strange effects mentioned in
    this thread.
    For C++ code the location of all variables local to a method is not
    know
    (I.E. C++ compilers can't tell you at run-time what is a variable
    and what
    isn't.) We use the pessimistic assumption that anything that looks
    like a
    reference to a memory object is a reference to a memory object. For
    interpreted
    TOOL code the interpreter has exact knowledge of what is a reference
    and what
    isn't. But the TOOL interpreter is itself a C++ method. This means
    that any
    any memory objects referenced by the interpreter during the
    execution of TOOL
    code could be stored in local variables in the interpreter. The TOOL
    interpreter
    runs until the TOOL code returns or the TOOL code calls into C++.
    This means
    that many levels of nested TOOL code can be the source of values
    assigned to
    local variables in the TOOL interpreter.
    This is the complicated reason that answers the question: Why doesn't a
    variable that is created and only used in a TOOL method that has
    returned
    get freed? It is likely that the variable is referenced by local
    variables
    in the TOOL interpreter method. This is also why setting the
    variable to NIL
    before returning doesn't seem to help. If the variable in question is a
    Array than invoke Clear() on the Array seems to help, because even
    though the
    Array is still live the objects referenced by the Array have less
    references.
    The other common occurrence of this effect is in a TextData that
    contains a
    large string. In this case, invoking SetAllocatedSize(0) can be used
    to NIL
    the reference to the memory object that actually holds the sequence of
    characters. Compositions of Arrays and TextData's (I.E. a Array of
    TextData's
    that all have large TextDatas.) can lead to even more problems.
    When the TOOL code is turned into a compiled partition this effect
    is not
    noticed because the TOOL interpreter doesn't come into play and
    things execute
    the way most people expect. This is one area that we try to improve
    upon, but it is complicated by the 15 different platforms, and thus
    C++ compilers,
    that we support. Changes that work on some machines behave
    differently on other
    machines. At this point in time, it occasionally still requires that
    a TOOL
    programmer actively address problems. Obviously we try to reduce
    this need over
    time.
    o Automatic memory management for C++ with support for multi-processor
    threads.
    Supporting automatic memory management for C++ is something that is
    not a very
    common feature. It requires a coding standard that defines what is
    acceptable and
    what isn't. Additionally, supporting multi-processor threads adds
    its own set of
    complications. Luckily TOOL users are insulated from this because
    the TOOL to C++
    code generator knows the coding standard. In the end you are
    impacted by the C++
    compiler and possibly the differences that occur between different
    compilers and/or
    different processors (I.E. Intel X86 versus Alpha.) We have seen
    applications that
    had memory utilization differences of up to 2:1.
    There are two primary sources of differences.
    The first source is how compilers deal with dead assignments. The
    typical TOOL
    fragment that is being memory manager friendly might perform the
    following:
    temp : SomeObject = new;
    ... // Use someObject
    temp = NIL;
    return;
    When this is translated to C++ it looks very similar in that temp
    will be assigned the
    value NULL. Most compilers are smart enough to notice that 'temp' is
    never used again
    because the method is going to return immediately. So they skip
    setting 'temp' to NULL.
    In this case it should be harmless that the statement was ignored
    (see next example for a different variation.) In more
    complicated examples that involve loops (especially long
    lived event loops) a missed NIL assignment can lead to leaking the
    memory object whose
    reference didn't get set to NIL (incidentally this is the type of
    problem that causes
    the TOOL interpreter to leak references.)
    The second source is a complicated interaction caused by history of
    method invocations.
    Consider the following:
    Method A() invokes method B() which invokes method C().
    Method C() allocates a temporary TextData, invokes
    SetAllocatedSize(1000000)
    does some more work and then returns.
    Method B() returns.
    Method A() now invokes method D().
    Method D() allocates something that cause the memory manager to look
    for memory objects to free.
    Now, even though we have returned out of method C() we have starting
    invoking
    methods. This causes us to use re-use portions of the C++ stack used to
    maintain the history of method invocation and space for local variables.
    There is some probability that the reference to the 'temporary' TextData
    will now be visible to the memory manager because it was not overwritten
    by the invocation of D() or anything invoked by method D().
    This example answers questions of the form: Why does setting a local
    variable to
    NIL and returning and then invoking task.Part.Os.RecoverMemory not
    cause the
    object referenced by the local variable to be freed?
    In most cases these effects cause memory utilization to be slightly
    higher
    than expected (in well behaved cases it's less than 5%.) This is a small
    price to pay for the advantages of automatic memory management.
    An object-oriented programming style supported by automatic memory
    management makes it
    easy to extended existing objects or sets of objects by composition.
    For example:
    Method A() calls method B() to get the next record from the
    database. Method B()
    is used because we always get records, objects, of a certain
    type from
    method B() so that we can reuse code.
    Method A() enters each row into a hash table so that it can
    implement a cache
    of the last N records seen.
    Method A() returns the record to its caller.
    With manual memory management there would have to be some interface
    that allows
    Method A() and/or the caller of A() to free the record. This
    requires
    that the programmer have a lot more knowledge about the
    various projects
    and classes that make up the application. If freeing doesn'
    happen you
    have a memory leak, if you free something while its still
    being used the
    results are unpredictable and most often fatal.
    With automatic memory management, method A() can 'free' its
    reference by removing
    the reference from the hash table. The caller can 'free' its
    reference by
    either setting the reference to NIL or getting another
    record and referring
    to the new record instead of the old record.
    Unfortunately, this convenience and power doesn't come for free. Consider
    the following,
    which comes from the Forte' run-time system:
    A Window-class object is a very complex beast. It is composed of two
    primary parts:
    the UserWindow object which contains the variables declared by the
    user, and the
    Window object which contains the object representation of the window
    created in
    the window workshop. The UserWindow and the Window reference each
    other. The Window
    references the Menu and each Widget placed on the Window directly. A
    compound Window
    object, like a Panel, can also have objects place in itself. These
    are typically
    called the children. Each of the children also has to know the
    identity of it's
    Mom so they refer to there parent object. It should be reasonably
    obvious that
    starting from any object that make up the window any other object
    can be found.
    This means that if the memory manager finds a reference to any
    object in the Window
    it can also find all other objects in the window. Now if a reference
    to any object
    in the Window can be found on the program stack, all objects in the
    window can
    also be found. Since there are so many objects and the work involved
    in displaying
    a window can be very complicated (I.E. the automatic geometry
    management that
    layouts the window when it is first opened or resized.) there are
    potentially many
    different reference that would cause the same problem. This leads to
    a higher than
    normal probability that a reference exists that can cause the whole
    set of Window
    objects to not be freed.
    We solved this problem in the following fashion:
    Added a new Method called RecycleMemory() on UserWindow.
    Documented that when a window is not going to be used again
    that it is
    preferably that RecycleMemory() is invoked instead
    of Close().
    The RecycleMemory() method basically sets all references
    from parent to
    child to NIL and sets all references from child to
    parent to NIL.
    Thus all objects are isolated from other objects
    that make up
    the window.
    Changed a few methods on UserWindow, like Open(), to check
    if the caller
    is trying to open a recycled window and throw an
    exception.
    This was feasible because the code to traverse the parent/child
    relationship
    ready existed and was being used at close time to perform other
    bookkeeping
    operations on each of the Widgets.
    To summarize:
    Automatic memory management is less error prone and more productive but
    doesn't come totally for free.
    There are things that the programmer can do that assists the memory
    manager:
    o Set object reference to NIL when known to be correct (this
    is the
    way the memory is deallocated in an automatic system.)
    o Use methods like Clear() on Array and SetAllocatedSize()
    on TextData to
    that allow these objects to set their internal
    references to NIL
    when known to be correct.
    o Use the RecycleMemory() method on windows, especially very
    complicated
    windows.
    o Build similar type of methods into your own objects when
    needed.
    o If you build highly connected structures that are very
    large in the
    number of object involved think that how it might be
    broken
    apart gracefully (it defeats some of the purpose of
    automatic
    management to go to great lengths to deal with the
    problem.)
    o Since program stacks are the source of the 'noise'
    references, try
    and do things with less tasks (this was one of the
    reasons that
    we implemented event handlers so that a single task
    can control
    many different windows.)
    Even after doing all this its easy to still have a problem.
    Internally we have
    access to special tools that can help point at the problem so that
    it can be
    solved. We are attempting to give users UNSUPPORTED access to these
    tools for
    Release 3. This should allow users to more easily diagnose problems.
    It also
    tends to enlighten one about how things are structured and/or point out
    inconsistencies that are the source of known/unknown bugs.
    Derek
    Derek Frankforth [email protected]
    Forte Software Inc. [email protected]
    1800 Harrison St. +510.869.3407
    Oakland CA, 94612

    I beleive he means to reformat it like a floppy disk.
    Go into My Computer, Locate the drive letter associated with your iPod(normally says iPod in it, and shows under removable storage).
    Right click on it and choose format - make sure to not have the "quick format" option checked. Then let it format.
    If that doesnt work, There are steps somewhere in the 5th gen forum( dont have the link off hand) to try to use the usbstor.sys to update the USB drivers for the Nano/5th gen.

  • I'm getting this error statement: XULRUNNER error: platform version 6.0.2 is not compatible with min etc max etc6.0.1 - what is this about and how can it be corrected?

    This is what I think may have happened. The other day, Thursday Sept 8th, I shut down my pc in the middle of a Firefox upgrade. Now when I try to access Firefox on my pc, I get this error message:
    XULRUNNER Error: Platform version '6.0.2 is not compatible with min Version >= 6.0.1 max Version < 6.0.1
    What is this about and how can I retsore access to Firefox on my pc?

    If you use ZoneAlarm Extreme Security then try to disable Virtualization.
    Do a clean reinstall and delete the Firefox program folder.
    * http://kb.mozillazine.org/Browser_will_not_start_up#XULRunner_error_after_an_update
    *[[/questions/869812]]
    *[[/questions/869951]]

Maybe you are looking for

  • What should I do not to loose my previous savings ...

    Hi there again, I have been using PC suits for many years. Starting from my phone the 8250. I have saved all my sms/text massages in my PC suit from the 8250 and 6230 phones. Now I have a 6680 phone. Have installed the PC suit newer version for 6680.

  • F4 help error in the upgraded version

    hi all, we have upgraded from 5 ECC to 6 ECC. testing phase is on. we have encountered a typical error while testing T-Code RECOPLCST02. here the cost element field is behaving strange. when i press F4 on this field then the pop up appears and the va

  • Changing media file name

    what is the best way to rename some of my media files and not make my clips go offline. Do I need to somehow use the media manager to change the name.. or do I rename it in the finder and reconnect the links (if so.. how do I do that)? Is it the same

  • "Getting started"  for connectivity to OAM from OSB

    I am completely new to OAM IdXml. I need to do POC to make connectivity to OAM for CRUD operations from OSB. Where can I start from? Is there any "Getting started" Guide or Any beginer steps to follow to get started?

  • SAP BI - Grants Management

    Hello Gurus, I would like to know different extractors of Grants Management. What are the key fields and their respective tables of GM? I dont find much information in help.sap. Appreciate your responses. regards, S R