Revenue Recognition for existing orders

Hi friends,
I have a requiremnt to  Migrate the old and valid contracts which has not been activated Revenue recognition has to be activated with revenue rcognition.The total number of contracts/orders would be 5 lakh recordes.For the same orders part of the billing plans are  billed.
Hence forth which all are going to be billed should pick the revenue recognition.
The above changes should be updated in  Production environment
Can any body suggest the process to update the existing documents.
Thanks in Advance
Narendra
Message was edited by:
        narendrababu dabbara

Dear Dayananda
I think if you see Document number in VF44 It means That document is successfully Posted

Similar Messages

  • Revenue recognition for Fixed price project

    Dear Friends,
    We are facing an issue with revenue recognition. This is with regard to fixed price project(Item catagory: FPR) wherein process follows with Sales order-->Delivery-->PGI--->Revenue recognition(VF44). Revenue recognition is carried out with reference to the delivery document.
    After completing revenue recognition w.r.t the delivery document, still document is appearing in VF44 for revenue recognition. My understanding is it is not supposed to be appeared in VF44. One more thing is in VF44 "Follow On" document is appearing as Sales order number.
    please suggest how to fix this issue.
    with regards,
    S Dayananda Murthy

    Dear Dayananda
    I think if you see Document number in VF44 It means That document is successfully Posted

  • Need help in improving performance of prorating quantities to stores for existing orders

    I have a code written to allocate quantities to stores for an existing order. Suppose there is a supplier order with quantity of 100 and this needs to distributed among 4 stores which has a demand of 50,40,30 and 20. Since total demand not equal to available quantity. the available quantity needs to be allocated to stores using an algorithm.
    ALgorithm is like allocating the stores in small pieces of innersize. Innersize is nothing but
    quantity within the pack of packs i.e. pack has 4 pieces and each pieces internally has 10 pieces,
    this 10 is called innersize.
    While allocating, each store is provided quantities of innersize first and this looping continues
    until available quantity is over
    Ex:
    store1=10
    store2=10
    store3=10
    store4=10
    second time:
    store1=10(old)+10
    store2=10(old)+10
    store3=10(old)+10
    store4=10(old)+10--demand fulfilled
    third time
    store1=20(old)+10
    store2=20(old)+10
    -- available quantity is over and hence stopped.
    My code below-
    =================================================
    int prorate_allocation()
      char *function = "prorate_allocation";
      long t_cnt_st;
      int t_innersize;
      int   t_qty_ordered;
      int t_cnt_lp;
      bool t_complete;
      sql_cursor alloc_cursor;
      EXEC SQL DECLARE c_order CURSOR FOR -- cursor to get orders, item in that, inner size and available qty.
      SELECT oh.order_no,
      ol.item,
      isc.inner_pack_size,
      ol.qty_ordered
      FROM ABRL_ALC_CHG_TEMP_ORDHEAD oh,
      ordloc ol,
      item_supp_country isc
      WHERE oh.order_no=ol.order_no
      AND oh.supplier=isc.supplier
      and ol.item=isc.item
      AND     EXISTS (SELECT 1 FROM abrl_alc_chg_details aacd WHERE oh.order_no=aacd.order_no)
            AND     ol.qty_ordered>0;
      char   v_order_no[10];
      char v_item[25];
      double v_innersize;
      char   v_qty_ordered[12];
      char v_alloc_no[11];
      char v_location[10];
      char v_qty_allocated[12];
      int *store_quantities;
      bool *store_processed_flag;
      EXEC SQL OPEN c_order;
      if (SQL_ERROR_FOUND)
      sprintf(err_data,"CURSOR OPEN: cursor=c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL ALLOCATE :alloc_cursor;
      while(1)
      EXEC SQL FETCH c_order INTO :v_order_no,
      :v_item,
      :v_innersize,
      :v_qty_ordered;
      if (SQL_ERROR_FOUND)
      sprintf(err_data,"CURSOR FETCH: cursor=c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      if (NO_DATA_FOUND) break;
      t_qty_ordered     =atoi(v_qty_ordered);
      t_innersize =(int)v_innersize;
      t_cnt_lp         = t_qty_ordered/t_innersize;
      t_complete =FALSE;
      EXEC SQL SELECT COUNT(*) INTO :t_cnt_st
      FROM abrl_alc_chg_ad ad,
      alloc_header ah
      WHERE ah.alloc_no=ad.alloc_no
      AND   ah.order_no=:v_order_no
      AND   ah.item=:v_item
      AND   ad.qty_allocated!=0;
      if SQL_ERROR_FOUND
                sprintf(err_data,"SELECT: ALLOC_DETAIL, count = %s\n",t_cnt_st);
                strcpy(table,"ALLOC_DETAIL");
                WRITE_ERROR(SQLCODE,function,table,err_data);
                return(-1);
      if (t_cnt_st>0)
      store_quantities=(int *) calloc(t_cnt_st,sizeof(int));
      store_processed_flag=(bool *) calloc(t_cnt_st,sizeof(bool));
      EXEC SQL EXECUTE
      BEGIN
      OPEN :alloc_cursor FOR SELECT ad.alloc_no,
      ad.to_loc,
      ad.qty_allocated
      FROM    alloc_header ah,
      abrl_alc_chg_ad ad
      WHERE   ah.alloc_no=ad.alloc_no
      AND     ah.item=:v_item
      AND     ah.order_no=:v_order_no
      order by ad.qty_allocated desc;
      END;
      END-EXEC;
      while (t_cnt_lp>0)
      EXEC SQL WHENEVER NOT FOUND DO break;
      for(int i=0;i<t_cnt_st;i++)
      EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
      :v_location,
      :v_qty_allocated;
      if (store_quantities[i]!=(int)v_qty_allocated)
      store_quantities[i]=store_quantities[i]+t_innersize;
      t_cnt_lp--;
      if (t_cnt_lp==0)
      EXEC SQL CLOSE :alloc_cursor;
      break;
      else
      if(store_processed_flag[i]==FALSE)
      store_processed_flag[i]=TRUE;
      t_cnt_st--;
      if (t_cnt_st==0)
      t_complete=TRUE;
      break;
      if (t_complete==TRUE && t_cnt_lp!=0)
      for (int i=0;i<t_cnt_st;i++)
      store_quantities[i]=store_quantities[i]+v_innersize;
      t_cnt_lp--;
      if (t_cnt_lp==0)
      EXEC SQL CLOSE :alloc_cursor;
      break;
      }/*END OF WHILE*/
      EXEC SQL EXECUTE
      BEGIN
      OPEN :alloc_cursor FOR SELECT ad.alloc_no,
      ad.to_loc,
      ad.qty_allocated
      FROM    alloc_header ah,
      abrl_alc_chg_ad ad
      WHERE   ah.alloc_no=ad.alloc_no
      AND     ah.item=:v_item
      AND     ah.order_no=:v_order_no
      order by ad.qty_allocated desc;
      END;
      END-EXEC;
      EXEC SQL WHENEVER NOT FOUND DO break;
      for (int i=0;i<t_cnt_st;i++)
      EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
      :v_location,
      :v_qty_allocated;
      EXEC SQL UPDATE abrl_alc_chg_ad
      SET qty_allocated=:store_quantities[i]
      WHERE to_loc=:v_location
      AND   alloc_no=:v_alloc_no;
      if SQL_ERROR_FOUND
      sprintf(err_data,"UPDATE: ALLOC_DETAIL, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
      strcpy(table,"ALLOC_DETAIL");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL UPDATE ABRL_ALC_CHG_DETAILS
      SET PROCESSED='Y'
      WHERE LOCATION=:v_location
      AND   alloc_no=:v_alloc_no
      AND PROCESSED IN ('E','U');
      if SQL_ERROR_FOUND
      sprintf(err_data,"UPDATE: ABRL_ALC_CHG_DETAILS, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
      strcpy(table,"ABRL_ALC_CHG_DETAILS");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL COMMIT;
      EXEC SQL CLOSE :alloc_cursor;
      free(store_quantities);
      free(store_processed_flag);
      }/*END OF IF*/
      }/*END OF OUTER WHILE LOOP*/
      EXEC SQL CLOSE c_order;
      if SQL_ERROR_FOUND
      sprintf(err_data,"CURSOR CLOSE: cursor = c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
    return(0);
    } /* end prorate_allocation*/

    I have a code written to allocate quantities to stores for an existing order. Suppose there is a supplier order with quantity of 100 and this needs to distributed among 4 stores which has a demand of 50,40,30 and 20. Since total demand not equal to available quantity. the available quantity needs to be allocated to stores using an algorithm.
    ALgorithm is like allocating the stores in small pieces of innersize. Innersize is nothing but
    quantity within the pack of packs i.e. pack has 4 pieces and each pieces internally has 10 pieces,
    this 10 is called innersize.
    While allocating, each store is provided quantities of innersize first and this looping continues
    until available quantity is over
    Ex:
    store1=10
    store2=10
    store3=10
    store4=10
    second time:
    store1=10(old)+10
    store2=10(old)+10
    store3=10(old)+10
    store4=10(old)+10--demand fulfilled
    third time
    store1=20(old)+10
    store2=20(old)+10
    -- available quantity is over and hence stopped.
    My code below-
    =================================================
    int prorate_allocation()
      char *function = "prorate_allocation";
      long t_cnt_st;
      int t_innersize;
      int   t_qty_ordered;
      int t_cnt_lp;
      bool t_complete;
      sql_cursor alloc_cursor;
      EXEC SQL DECLARE c_order CURSOR FOR -- cursor to get orders, item in that, inner size and available qty.
      SELECT oh.order_no,
      ol.item,
      isc.inner_pack_size,
      ol.qty_ordered
      FROM ABRL_ALC_CHG_TEMP_ORDHEAD oh,
      ordloc ol,
      item_supp_country isc
      WHERE oh.order_no=ol.order_no
      AND oh.supplier=isc.supplier
      and ol.item=isc.item
      AND     EXISTS (SELECT 1 FROM abrl_alc_chg_details aacd WHERE oh.order_no=aacd.order_no)
            AND     ol.qty_ordered>0;
      char   v_order_no[10];
      char v_item[25];
      double v_innersize;
      char   v_qty_ordered[12];
      char v_alloc_no[11];
      char v_location[10];
      char v_qty_allocated[12];
      int *store_quantities;
      bool *store_processed_flag;
      EXEC SQL OPEN c_order;
      if (SQL_ERROR_FOUND)
      sprintf(err_data,"CURSOR OPEN: cursor=c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL ALLOCATE :alloc_cursor;
      while(1)
      EXEC SQL FETCH c_order INTO :v_order_no,
      :v_item,
      :v_innersize,
      :v_qty_ordered;
      if (SQL_ERROR_FOUND)
      sprintf(err_data,"CURSOR FETCH: cursor=c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      if (NO_DATA_FOUND) break;
      t_qty_ordered     =atoi(v_qty_ordered);
      t_innersize =(int)v_innersize;
      t_cnt_lp         = t_qty_ordered/t_innersize;
      t_complete =FALSE;
      EXEC SQL SELECT COUNT(*) INTO :t_cnt_st
      FROM abrl_alc_chg_ad ad,
      alloc_header ah
      WHERE ah.alloc_no=ad.alloc_no
      AND   ah.order_no=:v_order_no
      AND   ah.item=:v_item
      AND   ad.qty_allocated!=0;
      if SQL_ERROR_FOUND
                sprintf(err_data,"SELECT: ALLOC_DETAIL, count = %s\n",t_cnt_st);
                strcpy(table,"ALLOC_DETAIL");
                WRITE_ERROR(SQLCODE,function,table,err_data);
                return(-1);
      if (t_cnt_st>0)
      store_quantities=(int *) calloc(t_cnt_st,sizeof(int));
      store_processed_flag=(bool *) calloc(t_cnt_st,sizeof(bool));
      EXEC SQL EXECUTE
      BEGIN
      OPEN :alloc_cursor FOR SELECT ad.alloc_no,
      ad.to_loc,
      ad.qty_allocated
      FROM    alloc_header ah,
      abrl_alc_chg_ad ad
      WHERE   ah.alloc_no=ad.alloc_no
      AND     ah.item=:v_item
      AND     ah.order_no=:v_order_no
      order by ad.qty_allocated desc;
      END;
      END-EXEC;
      while (t_cnt_lp>0)
      EXEC SQL WHENEVER NOT FOUND DO break;
      for(int i=0;i<t_cnt_st;i++)
      EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
      :v_location,
      :v_qty_allocated;
      if (store_quantities[i]!=(int)v_qty_allocated)
      store_quantities[i]=store_quantities[i]+t_innersize;
      t_cnt_lp--;
      if (t_cnt_lp==0)
      EXEC SQL CLOSE :alloc_cursor;
      break;
      else
      if(store_processed_flag[i]==FALSE)
      store_processed_flag[i]=TRUE;
      t_cnt_st--;
      if (t_cnt_st==0)
      t_complete=TRUE;
      break;
      if (t_complete==TRUE && t_cnt_lp!=0)
      for (int i=0;i<t_cnt_st;i++)
      store_quantities[i]=store_quantities[i]+v_innersize;
      t_cnt_lp--;
      if (t_cnt_lp==0)
      EXEC SQL CLOSE :alloc_cursor;
      break;
      }/*END OF WHILE*/
      EXEC SQL EXECUTE
      BEGIN
      OPEN :alloc_cursor FOR SELECT ad.alloc_no,
      ad.to_loc,
      ad.qty_allocated
      FROM    alloc_header ah,
      abrl_alc_chg_ad ad
      WHERE   ah.alloc_no=ad.alloc_no
      AND     ah.item=:v_item
      AND     ah.order_no=:v_order_no
      order by ad.qty_allocated desc;
      END;
      END-EXEC;
      EXEC SQL WHENEVER NOT FOUND DO break;
      for (int i=0;i<t_cnt_st;i++)
      EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
      :v_location,
      :v_qty_allocated;
      EXEC SQL UPDATE abrl_alc_chg_ad
      SET qty_allocated=:store_quantities[i]
      WHERE to_loc=:v_location
      AND   alloc_no=:v_alloc_no;
      if SQL_ERROR_FOUND
      sprintf(err_data,"UPDATE: ALLOC_DETAIL, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
      strcpy(table,"ALLOC_DETAIL");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL UPDATE ABRL_ALC_CHG_DETAILS
      SET PROCESSED='Y'
      WHERE LOCATION=:v_location
      AND   alloc_no=:v_alloc_no
      AND PROCESSED IN ('E','U');
      if SQL_ERROR_FOUND
      sprintf(err_data,"UPDATE: ABRL_ALC_CHG_DETAILS, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
      strcpy(table,"ABRL_ALC_CHG_DETAILS");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
      EXEC SQL COMMIT;
      EXEC SQL CLOSE :alloc_cursor;
      free(store_quantities);
      free(store_processed_flag);
      }/*END OF IF*/
      }/*END OF OUTER WHILE LOOP*/
      EXEC SQL CLOSE c_order;
      if SQL_ERROR_FOUND
      sprintf(err_data,"CURSOR CLOSE: cursor = c_order");
      strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
    return(0);
    } /* end prorate_allocation*/

  • Revenue recognition for sub-item

    I have a product called Term license, when i enter this line item in sales order, automatically i should get a sub-item warranty under it (which is only for internal purposes).
    And suppose the price of the product is $1000/-, 10% of the cost of this product (i.e. $100/-)will be considered as the cost for warranty for 12 months.(The warranty is not billed separately to customer, but internally the 10% of the cost is considered as cost towards providing warranty support.)
    The customer gets billed only for Term Licence and the warranty piece does not show up in the invoice. The revenue for licence part gets recognized based on the milestones completions 10/70/20%. So $900 is recognized for the term licence.
    Then warranty period starts once the milestone of 70% is confirmed. And from that time the revenue $100 is split for 12 months and then this revenue is recognized monthly based on billing.
    Can anyone guide me how we can set up this configuration.
    Regards,
    Ajay

    Hi Ajay,
    As far as I understood that you want to realise the warranty amount of 100$ from the customer once your 70% milestone is completed.
    I think you can start realising this amount along with the license cost with each milestone.But keep your money in the deffered account.Once your 70% milestone is reached then you can start running the transaction VF44 one by one for each line item.
    In this case your revenue account will only get hit once the 70% milestone is reached.
    Reward points if it helps.
    Regards
    Karan

  • Revenue recognition for a customer

    Hi
    If a customer is located in India and company i.e company code is also in India .However if customer also wants the goods to be deilvered in singapore and if company has branch in singapore too,please let me know as per accounting rules where should the company be recognising the revenue in singapore or India.
    Regards

    It depends on whether the Singapore is a separate company code or not.  In most cases, any overseas branch will be created as a separate company code to fulfill the local reporting needs.  Therefore it becomes a separate legal entity. 
    If you are selling the goods from India company directly to the customer without involving the Singapore company, then the revenue will be recognised in India company only.  Singapore will have no part to play in that.
    However, if you are transferring the goods to Singapore branch and that in turn makes an invoice for the Customer, then Singapore will recognise the sale (revenue) from the Customer and India company will recognise the sale (revenue) from the Singapore company (Here Inter-company sale-purchase transaction will happen, Singapore will recognise the purchase from India company because both are two independant legal entities).
    Ravi.

  • How to change shipping address for existing order

    I've changed it in My Account prior to the order, and the system persisted in using my old address. With nearly no possible way to speak to a human, and without the ability to edit my order, I am at a loss as to how to get my product shipped to the desired address.

    Hopefully it's not too later to do this >  Viewing & Changing Orders - Apple Store

  • Revenue Recognition (AR Closed for future month in error)

    Need help with revenue recognition. In the month of June in AR July was opened in error, so it was put in to close pending. Since July was closed the last 3 days worth of June invoices did not have any revenue recognition for July. Instead July's revenue was posted in to August since August was showing as a future period, and July was closed. Is there any fix to change the revenue recognition without doing a credit and rebill of 3 days worth of invoicing? If we reopen June, and run revenue recognition again, will that help? Thanks in advance for any help.

    Well there are a few ways you can go ahead and fix this, but it depends on lot of factors.
    Lets say you have 1 invoice for which the revenue has been recognized in August and not July, now you can query up that invoice in the transaction's workbench and incomplete it. After incompleting all the revenue recognized distributions would be deleted(applicable 11.5.10 onwards) and when you complete the invoice again & run the RR program the revenue would be recognized in July(provided it's in an open status). Please note though that you can incomplete a transaction only if it doesn't have any activity against it!
    Now coming to the real world it's possible that the number of transaction's you have could be quite large and doing this manually through the screen might not be feasible. So you could possibly write a small pl/sql script to loop through those invoice's and incomplete them by calling the complete/incomplete group transaction's api. And then again complete them and re-run RR program to complete the fix.
    Please note though that you can incomplete a transaction only if it doesn't have any activity against it!
    With posted transaction's or transaction's having other activity, it's possible to fix them too but that would be taking things too far and Oracle Support/Development would be best equipped to provide you the fix in that scenario.
    HTH,
    Jasmeet.

  • How Revenue Recognition value calculate in VF45 for an item

    Hello Experts,
    I want to know how system calculates Revenue Recognition for any item in VF45. I know the configuration part of Revenue Recognition but want to know the calculation part, how calculation going to find out the vale of the Revenue recognition.
    Item net price is 3139255.45 and system calculate Revenue recognition for this item is  3139020.94.
    I want to know how calculation going for Revenue recognition.
    Can any body help me out ? any link /document related to Revenue Recognition Calculation (not configuration)  please share with me.
    Thanks,

    Hello Prasanth,
    For example :- Maintaining an annual Price  ZPRC - 1200  and Billing plan is Annual
    So, while recognising SAP takes 1200 / 365(Number of days) =  3.287 per day
    For jan - 31 days - 31*3.287 =101.91
    For feb - 28 days - 28*3.287 = 92.05
    Thank you for your time.

  • SD Revenue Recognition-Account settings for deferring COGS

    Hi Experts
    In the current process, COGS, cost of goods sold is getting posted into the COGS G/L account, while creation of billing document.
    In VF44 transaction, we find option for VPRS cost being captured against every line item & are available for posting along with revenue line.
    In that case, if we have to defer the COGS while creating the billing document & would recogonize it while running VF44 alone with the revenue lines, could you suggest me the account setting to be done for the same?
    Anticipating earliest responses
    Thanks
    Banu

    hi
    820417 - Implementation Guide for Revenue Recognition
    779365 - Best Practice document for revenue recognition
    REVENUE RECOGNITION
    In revenue recog. you can create your billing documents and they will be passed to accountings.But in this case your customer account would be debited and deferred accounts would be credited.
    The purpose of revenue recognition is that you can post all the revenues from a deferred account to sales revenue account for a particular period together for all the docs. through transaction VF44.
    if you can se your sales docs no. in VF44,then your revenue recognition is successful.Press on collective processing inside VF44 for posting the revenues from deffered acc to sales revenue account.
    Configuration part includes the setting of revenue recog. in item category by following the path sd-basic functionsaccount assnmnt/costingrevenue recog.
    Then you have to assign G/L accounts.In the first column of assigning g/l accounts ,enter your sales revenue account and in the second column enter deferred revenue accounts.Deferred revenue account is a spcl g/l account.
    Don't forget to enter reconcilliation account in your customer master as well.
    It may happen that in revenue recog item categories fields may greyed out but you have to get authorization for your id from a basis guy.
    :The point at which revenue (income) is credited to a revenue account in General Ledger. There are three possible types
    Time-based : Revenue is recognized in equal proportions between specific start and end dates based on the number of posting periods defined at the company level. Revenue recognition for time-based documents can occur before, during, or after the invoice process.
    Performance-based : Revenue is recognized based on the occurrence of certain events such as goods issue or the performance of a service. Revenue recognition for performance-based documents can occur before, during, or after the invoice process.
    Standard : Revenue is recognized at time of invoice:
    The specified item was not found.
    Re: Revenue Recognition
    CONTRACTS
    Lets take standard CQ contract type:
    First maintain customer - material info record in VD51 T-code
    Secondly maintain pricing for customer / material or only material combination in VK31 / VK11 T-code
    Then use VA41 T-code to create a contract
    VA42 to change contract
    VA43 to display / view contract
    In VA41, enter the document type CQ, followed by the sales area details,
    Enter Sold to party.
    Enter PO number
    Enter PO Date
    Enter Validitiy from Date
    Enter Validity to Date
    Enter Material
    Enter Quantity say 999,999,999 or any other higher quantity as it is referred again and agaain
    Hit Enter.
    Save.
    regards
    balajia

  • Customization for revenue recognition

    Can anyone advise why the customization setting for revenue recognition is greyed out?  This is related to the setting against the item category.
    Path : SD => Basic Functions => Acct Assignment/Costing => Revenue Recognition => Set revenue recognition for item categories.
    Is there some other settings need to be done first or is this customization accessed from other path?
    Thanks
    Peter

    Hi Peter,
    It's the correct path you are accessing! No prior settings required.
    It's working fine for me peter.
    Try once again.Ensure that you are in change mode.
    Regards,
    Raghav
    Edited by: Raghav on Jul 8, 2008 12:55 PM

  • Revenue recognition - deferred revenue

    Hi Experts,
    We want to recognize some of our revenues other than the billing date.
    Some of our sales are by sea and using CIF incoterms, so if the goods was sent during the last days of the accounting period, we can not recognize it in the FI reports till the goods arrived it's destination.
    So I want to do the PGI and the billing today and credit the deferred revenue account instead of the revenue account.
    I saw the SPRO regards it.
    1. What are the specific setting I have to use in "spro, sales and distribution, basic function, account assignment/costing, revenue recognition, set revenue recognition for item category" for this case? (time related/service related/billing related...etc)
    2. Can I use regular sales order, delivery, PGI, billing document or do I have to use contract or something else?
    3. Can the trigger be the incoterms/destination country instead of the item category?
    Thanks
    Ifer

    Symptom
    After you implement Note 1239165, the source code prerequisites for connecting the accruals account determination to the incompletion log in the standard system are met. This note describes the Customizing settings that you have to make to use the functions described in Note 1239165.
    Other terms
    Standard revenue realization, Customizing, incompletion, KONV, SAKN1, SAKN2, ZZ_RR_TVUVF, RV_INVOICE_ACCOUNT_DETERM, RR_ACCOUNT_MISS_DEF, RR_ACCOUNT_MISS_UNB, TVUVF, SAKUR, TVRRUR
    Reason and Prerequisites
    The Customizing settings are required to use an error group in revenue realization to specify the incompletion and to prevent the system creating subsequent documents.
    Solution
    Make the following settings:
    1. Create the following procedures in Customizing:
    Sales and Distribution -> Basic Functions -> Log of Incomplete Items -> Define Incompleteness Procedures -> Incompletion Group B (Sales - Item) -> Procedures ->
    -> RR (text RevRec item). Save your entry.
    2. For the accruals account, create the following status group:
    Sales and Distribution -> Basic Functions -> Log of Incomplete Items -> Define Status Groups
    -> Status grp General Delivery Billing doc. Price Goods movement
       RR        X        X         X             X
    Additional information: The revenue accounts are assigned to the status group 00 through the error group "MP". This status group permits subsequent documents to be created.
    3. It is not necessary to assign the incompletion procedure RR to the item category that is relevant for revenue recognition. In the case of item categories that are relevant for account determination, by default, the system uses the error group "MP" for the revenue accounts and the error group "RR" for the accruals accounts.
    4. Create the report ZZ_RR_TVUVF to execute the entries required to check the fields and to assign the status groups. The report enters the required entries in the tables and in TVUVF. If these already exist, the system issues an error message.
    The following check fields and status groups are entered:
    Table     Field name  Description   Screen Status  Warning Rank
    KONV  SAKN2    accruals account          PKON  RR
    TVRRUR SAKUR    unbilled receivable account       RR
    Attributes
    Title: Insert/delete RR incompletion settings in TVUV and TVUVF
    Type: 1 (Executable program)
    Status: T (Test program)
    Application: V (Sales and Distribution)
    Package: (Customer-specific package)
    Selection texts
    P_DELKZ  Delete revenue recognition records
    P_INSKZ  Create revenue recognition records
    The source code is provided in the attached correction instructions.
    Insert Block 
    *& Report  ZZ_RR_TVUVF                                                 *
    report  zz_rr_tvuvf.
    Tables *
    tables: tvuvf.
    Work areas *
    data: begin of gvt_tvuvf occurs 0.
            include structure tvuvf.
    data: end of gvt_tvuvf.
    data: lvf_subrc1 like sy-subrc,
          lvf_subrc2 like sy-subrc.
    data: gvs_tvuvf like tvuvf.
    ======================================================================
    Definition of the selection screen                                   *
    ======================================================================
    parameters  p_inskz radiobutton group act.
    parameters  p_delkz radiobutton group act.
    ======================================================================
    Initialization                                                       *
    ======================================================================
    initialization.
      clear   gvt_tvuvf.
      refresh gvt_tvuvf.
    ======================================================================
    Selection of data                                                    *
    ======================================================================
    start-of-selection.
      select single * from tvuvf into gvs_tvuvf
                                where fehgr = 'RR'.
                                and tbnam = 'KONV'
                                and fdnam = 'SAKN2'
                                and statg = 'RR'
                                and fcode = 'PKON'.
      lvf_subrc1 = sy-subrc.
      select single * from tvuvf into gvs_tvuvf
                                where fehgr = 'RR'.
                                and tbnam = 'TVRRUR'
                                and fdnam = 'SAKUR'
                                and statg = 'RR'
                                and fcode = '    '.
      lvf_subrc2 = sy-subrc.
    Populate fields
      gvt_tvuvf-mandt = sy-mandt.
      gvt_tvuvf-fehgr = 'RR'.
      gvt_tvuvf-tbnam = 'KONV'.
      gvt_tvuvf-fdnam = 'SAKN2'.
      gvt_tvuvf-statg = 'RR'.
      gvt_tvuvf-fcode = 'PKON'.
      append gvt_tvuvf.
      clear  gvt_tvuvf.
      gvt_tvuvf-mandt = sy-mandt.
      gvt_tvuvf-fehgr = 'RR'.
      gvt_tvuvf-tbnam = 'TVRRUR'.
      gvt_tvuvf-fdnam = 'SAKUR'.
      gvt_tvuvf-statg = 'RR'.
      gvt_tvuvf-fcode = '    '.
      append gvt_tvuvf.
      clear  gvt_tvuvf.
    insert case
      if not p_inskz is initial.
        if not lvf_subrc1 is initial and
           not lvf_subrc2 is initial.
        insert line
          insert tvuvf from table gvt_tvuvf.
          if sy-subrc is initial.
          line already there
            write: 'Line in table TVUVF inserted'.
          else.
          Error when insert
            write: 'Insert not possible'.
          endif.
        else.
        line already there
          write: 'At least one entry already in the table TVUVF'.
        endif.
      else.
      delete case
        if not p_delkz is initial.
          if  lvf_subrc1 is initial
          and lvf_subrc2 is initial.
          delete line
            delete tvuvf from table gvt_tvuvf.
            if sy-subrc is initial.
            line already there
              write: 'Lines in table TVUVF deleted'.
            else.
            error when insert
              write: 'Delete not possible'.
            endif.
          else.
          line not there
            write: 'At least one entry not in the table TVUVF'.
          endif.
        endif.
      endif.
    See you Monday

  • Not able to delete a delivery after revenue recognition is reversed

    Hello Gurus,
    We have a situation for certain Sales Order types after creation of Sales Order -> Delivery and PGI, we do revenue recognition. But there was some mistake and delivery needed to be deleted and recreated if needed. So after doing revenue recognition reversal we are reversing the PGI. After this when we try to delete the  Delivery ( which would have got deleted if there was no revenue recognition process ) we get the below error.
    Is it a problem with the way Revenue recognition is configured or does the standard behave like this. If the Invoice is also present in the above I am able to cancel the Invoice. If you think its a problem with the way Revenue reccognition is configured please advise.
    Item 000010 cannot be deleted (revenue recognition status)
    Message no. VL896
    Diagnosis
    The delivery or delivery item cannot be deleted.
    System response
    The document cannot be deleted since the delivery contains items that
    reference sales document items that are relevant for revenue
    recognition. When the goods issue was posted, the system created revenue
    lines that had already been recognized. This means that there are
    subsequent documents in revenue recognition for this delivery.
    Procedure
    If you no longer require the delivery or delivery item for deletion, set
    the delivery quantities to zero and repost the goods issue. Make sure
    that the quantity zero is allowed in Customizing for the delivery item
    category. When the goods issue is posted, the overall processing status
    is set to C and the delivery can be archived. Message determination
    should be configured not to send any messages in this case. To make sure
    that the system makes revenue corrections if there are differences
    vbetween billed and recognized values, set a billing-relevant rejection
    reason in the sales document item if more than one partial delivery is
    allowed.
    If you still want to use the delivery, adjust the delivery quantities
    accordingly. Alternatively, deliver the referencing sales document item
    again. Note that the sales document item cannot be delivered again if
    only a partial delivery is allowed.
    What are the changes I can do to Delete the Delivery?
    If I cannot Delete the Delivery, Should I make the Delivery as 0 qty and create a new delivery with changed qty and do further process. Or should I reject the Sales Order and create a new sales order with exact qty and do further process.
    Please advise.
    Regards,
    SNK.
    Delivery has one line item. For the above case scenario, invoice is there for some deliveries and for some deliveries there is no invoice. Eg: SO -> DN -> PGI -> Rev Recog -> Iv or SO -> DN -> PGI -> Rev Recog. Requirement was SO was wrongly created as the qty was wrong or in some cases SO needs to be rejected. I am able to cancel Invoice. Rev recog is reversed. PGI is cancelled by VL09. Not able to delete Delivery and I get the above error. Ideally I thought since Rev recog is reversed, Delivery should have been deleted but not happening and above error comes.
    SO - Sales Order DN - Delivery IV - Invoice
    Edited by: sapconsultnt on Dec 16, 2009 5:06 AM

    Hello,
    Please review the Note 1224871 which introduced this functionality.
    Regards,
    Raghavendra YN

  • Revenue Recognition calcolation...

    I have a problem with periodic task "Revenue Recognition". When I launch the execution, for example, for the month of September, the system does not calculate the schare of accounting of revenue but it relize all amount of revenue. I want to understand why the system does not execute the right calculation.
    Please can you explain me this situation?
    Thanks

    Hi Andrea,
    I believe you are referring to accrual method "percentage of completion" calculation process
    Lets take for instance Sales Order % POC calculation.
    Calculated POC = ( Actual Cost / Estimated Cost ) * 100 %
    For Item 123-10 , Calculated POC = ( 14277 / 8550 ) *
    100 % = 166.98 %                                                         
    For Item 123-20 , Calculated POC = ( 0 / 8550 ) * 100 % = 0 %
    ================
    Also refer to
    1.Revenue Recognition for Project Sales - help document
    2.Revenue Recognition for Customer Contracts - help document this may help.
    Thanks
    Lokesh Sharma

  • Error "Enter section code" while doing revenue recog for Korea company code

    Hi
    While doing revenue recognition  for a sales document using VF44 for Korea  company code , i got an error to "enter sectio code".
    There is no WHT for the customer, only VAT is entered in the sales price.
    How to resolve this issue, Please help.
    Thanks,
    Vaishnavi

    Resolved.

  • UNBILLED RECIEVABLE ACCOUNT- SERVICE CONTRACT WITH REVENUE RECOGNITION

    Hi SAP Gurus,
    I want to draw your kind attention towards my problem:
    I have created  service contract with one year contract and created an invoice for the whole year in advance.
    Now in-between i cancelled  a contract (after three months) and want to recognised a revenue for the contract period , so i'm creating a revenue recognition for the three months one by one using  transaction code-VF44,
    first month revenue recogniton is working fine as first month amount is going from deffered account to revenue account
    But for second month instead of deffered account ,system is using unbilled recievable account  ,which is wrong .
    Can anybody tell me why the system is picking unbilled receivable account instead of deffered account in case of second month revenue recogniton.
    This may help us:
    "When i was cancelling a contract ,at that time i was entering a billing plan end date in billing plan tab at an item level.
    and just after entering end date ,system was creating two lines instead of one in billing plan tab and i think because of that extra line system is picking unbilled receivables in second revenue recognition."
    Thanks in advance
    Ujjawal
    Edited by: Ujjawal Singh Karki on Dec 29, 2010 12:05 PM

    Hi,
    Thank you for your reply.
    I am doing a contract billing for overall period that is for 12 months (contract is of 12 months).
    Just after 3 months i have realized that somehow we have to cancel the contract and we canceled that in 3rd month.
    I had created the created a contract with periodic billing plan and for canceling that contract i'm putting contract end date in BILLING PLAN TAB as 31/03/2011 (Let say contract is from 01/01/2011 to 31/12/2011).
    Can you/anybody please tell me whether is this the correct way of canceling the contract with periodic billing plan?
    As per your analysis:
    "It seems you have done the billing document for one period and you are doing the RR document for multiple periods and hence the revenue is going to unbilled receivable account for the period for which billing document has not been done"
    As i have billed the customer for 12 months but contract was only for 3 months so i'll create RR for only 3 months and for rest of the period (i.e. 9 months) i'll create credit memo and send it to customer.
    "Please use a billing type where you will specify only start date and end date of the contract and not the billing plan in contract"
    How can we use billing type for contract start and end date .
    I think as soon as i'm changing the dates in billing plan tab system is proposing another line item with different  billing dates and that is not getting covered under deferred account that is still unbilled amount .
    Waiting for your valuable inputs.
    In case of any clarification kindly revert to me.
    Thanks,
    Ujjawal
    Edited by: Ujjawal Singh Karki on Jan 20, 2011 11:10 AM

Maybe you are looking for

  • Which is better iPad or Mac for high school students?

    I just took SHSAT and my mother promise me that I will get one that I wish if I get in. I did not want to waste that wish and use it on others wastable stuff. So I was thinking that Apple device would make great studying for me in High School. I have

  • Improve Reading Order Tool

    Looking forward to seeing improvements in the accessibility tools for Acrobat.  Allow customization of this tool so that you can add custom Tag.  Alternatiely, add the List Label and LBody tags to the ROT.  I manually Tag Lists more than anything els

  • Resolve technicak names

    Hello, is it possible to resolve any technical name in a table??

  • Loading XMF file using Sqlloader In Oracle table

    How do load an XML file that is in the following format? <WorkPermit>TEST01</WorkPermit> <WellSerialNum>123456</WellSerialNum> <Depth>1000.00</Depth>

  • Data written in file doesnt remain the sme!!

    Hey guys I am writing a small app for myself to store imp data like my IDs, passwords etc. I want this application to -accept string -get ASCII value of each character -make cipher by changing ASCII values -store new characters in a file. The code is