Churn by customer cohort.

Hi Folks
I want to measure customer churn by cohort. In the attached example I have two cohorts- 1) customers that were acquired (activated) on the the 23/11/2013 and 2) customers that were acquired on the 23/12/2014. Rather than measuring churn by date/ month, I
want to measure churn by # months since  acquisition.  So essentially view below (see "3) %view"). The measure is just a distinct count of subscription Id (that identify unique customers)
I am ok with the first two steps below, but I am getting stuck on the DAX for step 3 that measures the % change within each cohort.
Any help or suggestions would be appreciated.
Sample file attached here
Cheers
Steve

Hi Steve,
a possible solution is to add a new calculated column to your table such as
NextMonthNo=[Months_since_activation]+1
This column can be used in a measure that calculates the number of susbcribers on the previous month:
=if(HASONEVALUE(Table1[Months_since_activation]);
  calculate([Distinct_Sub_Ids];filter(All(Table1[Months_since_activation];Table1[NextMonth]); values(Table1 [Months_since_activation])=Table1[NextMonth])))
The % churn would be defined as:
=IF(hasonevalue(Table1[Months_since_activation]);
  if(values(Table1[Months_since_activation])>0;divide([PreviousMonthSubscription]-[Distinct_Sub_Ids];[PreviousMonthSubscription])))
The modified file can be found here:
https://drive.google.com/file/d/0B1IGTQhPqflnVG1tcXpFU1VwOFk/edit?usp=sharing
I hope this helps!
Julian
Julian Wissel | BI for NAV @ http://en.navbi.com | Blog @ blog.navida.eu

Similar Messages

  • Oracle 9i OLAP "Customer Churn" studies

    Hello,
    Could anyone please tell me how to use Oracle 9i OLAP features for Customer churn studies from the
    data warehouse?
    Thanks
    Shyam

    With the limited details provided, I believe your best place to start on customer churn studies would be with the Data Mining technology rather than OLAP. Please post your question to the following forum on OTN:
    Products > Data Warehousing and Business Intelligence > Data Mining Suite
    Good-luck!

  • How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?

    Hi
    If a organization have 200 to 300 daily complains of there IT equipment/Software/Network e.t.c.
    How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?
    Is there any standard DataSources/InfoObjects/DSOs/InfoCubes etc. available in SAP BI Content?

    Imran,
    The point I think was to ensure that you knew exactly what was required. A customer service desk can have many interpretations from a BI perspective.
    You could have :
    1. Operational reports - calls attended per shift , Average number of calls per person , Seasonality in the calls coming in etc
    2. Analytic views - Utilization of resources , Average call time and trending , customer satisfaction , average wait time
    3. Strategic - Call volumes corresponding to campaigns etc , Employee churn and related call times
    Based on these you would then have to construct your models which would be populated by data from the MySQL instance for you to report.
    Else if you have BWA you could have data discovery instead or if you have HANA - you could do even more and if you have a HANA sidecar - you technically dont need BW. The possibilities are virtually endless - it depends on how you want to drive it and how the end user ( client ) sees value in the same.

  • BB cancels order due to payment glitch - Customer Service refuses to honor

    After 2+half hours on the phone this morning trying to get the cancelled order reinstated and payment method corrected, Customer Service says 'too bad, so sad, go away & have a nice day, we will not honor the order'.
    If there's any kind of problem with your order, I highly recommend to call into a Rep if your order contains price-sensitve items.
    DO NOT follow the directions on the website nor in the emails. You will be extremely disappointed by (lack of) Customer Service.
    I was not trying to get something for nothing. I placed the order in good faith on Monday. Tuesday I see the email stating "a problem with payment". Following the directions, I re-enter my credit card information and resubmit (once). All appears well, until I check on the order this (Wed) morning. My order was cancelled. Surely, BB will correct this obvious error, considering a prior order on the same day went through just fine, I thought. After all, I'm trying to give them my business on a rather large Home Theater purchase.
    It was challenging just from the logistics of the phone experience. Must've been a busy morning and BB was also having phone issues. I waited patiently for the 1st answer at 25 minutes (VRU said 10-12), after explaining, the Rep tried to transfer me to a Supervisor for another 30 minutes. I was disconnected when one picked up. Had to cold call back in and endure another 15 minute wait (VRU said 4-7), the Rep tried to pull up notes from 1st call and gave up after another 10 minutes. After explaining, she attempted to transfer to her Supervisor for 45 minutes. I was on the call with her for ~80 minutes. When I finally spoke to a Supervisor, I was accused of trying to 'cheat the process' and 'ask her to commit policy violation'. She had facts, logs and order details in front of her and I was still treated this way.
    Ultimately, she told me there was nothing more she would try to do and would not 'deal with me any longer'.
    This is the absolute worst Customer Service that I have ever had. No attempt by BB to make the situation right by honoring the order placed on Monday.
    Request to BB management;
    1. Make it Right! reinstate my order.
    2. Fix your payment issues and process/policy for cancelling orders. Contact customers proactively when your systems fail and orders fallout.
    3. Fix your CS policies and escalation process. The initial Rep should have been able to resolve the order issue.
    4. Fix your phone system and/or transfer process.
    5. Remind your CS Reps not to insult/accuse your paying Customers. Potential churn is cheaper to keep than acquire.
    6. Your ad campaign is laughable "No one claims they are the worst." Your CS dept confirmed that you are far from the Best.
    p.s. Case# available if you want to research why I'm unlikely to shop BB in the future.
    Solved!
    Go to Solution.

    Good afternoon drenken,
    After placing an order for a significant home theater purchase on Cyber Monday, I’m sure you were ecstatic in your shopping experience and couldn’t wait to receive your devices! It is utterly disheartening to hear that this experience may have turned into a rather dreadful one so quickly.
    I’m glad to hear that you were able to attempt updating your billing information on BestBuy.com. Generally this option alleviates some hassle for customers who would rather not contact us via phone to update such information, which can take some time given the high call volumes this time of year. It is regrettable to hear that it didn’t go as expected for you, due to the strange issues with the order.
    I imagine your frustration only grew from when you received the cancelation email to when you had difficulties acquiring assistance over the phone afterward. I sincerely apologize for any dismay this entire experience may have caused you. It does not sound at all like this experience would have left you with an appropriate representation of our company.
    Unfortunately, once an order is canceled, we are unable to reinstate it. The only option would be to replace the order. Typically if an order is canceled, we would not be able to honor the sale prices if they are no longer current. With that said, I was able to review your order and it would appear that the same card was successfully used on a subsequent order , leaving this to be quite the peculiar occurrence.
    I am sending you a private message to you with further details in regards to this order and to see what other options we may have for you, as I can understand why this experience may be so displeasing. You may check your private messages once you have signed into the forum by clicking the envelope icon in the top right corner of the page.
    Respectfully, 
    Tasha|Social Media Specialist | Best Buy® Corporate
     Private Message

  • Query: Predictive Use Cases for Customer Acquisition during Launch Phase

    Dear all,
    May I ask you to help me with some Predictive Use Cases (essentially SAP InfiniteInsight) for a Telco Customer who is going to launch new 4G services.
    Some important points to note are:
    1) Being a new product launch, there is no historical data about customers.
    2) Predictive use cases should help the customer acquire more customers (higher acquisition rates)
    This means that the traditional churn, next best activity, product recommendations scenarios would not be a great fit because they would essentially be coming in the grow phase.
    Additional info: The customers has other businesses in retails, mining, refinery.
    Rg,
    Ankit

    Since you do have the CC currently so you should have CS6 included as part of his membership.  The download previous version section discussed in Install and update apps - https://helpx.adobe.com/creative-cloud/help/install-apps.html provides guidance on how to install through the Creative Cloud Desktop application.
    If you don’t have high speed Internet access available on the computer you can install on then you can download the installation files from http://helpx.adobe.com/x-productkb/policy-pricing/cs6-product-downloads.html and use the steps in http://helpx.adobe.com/creative-cloud/kb/convert-cs6-licensed-under-ccm.html to license the software.
    You will need to be online to submit the periodic activation requests but it sounds like Internet access is available on the computer you are installing.
    Regards
    Rajshree

  • Predictive Algorithm for Churn analysis

    Hi,
    Can anybody help me with the algorithm which I can use for churn analysis?
    Thanks,
    Atul

    Hi Atul,
    For Churn analysis or what is usually referred to as a binary classification problem where the customer is either staying or leaving=churning I would suggest one of the following algorithms:
    CNR Decision Tree - which also provides a decision tree to explain which feature split is influencing the target (churn) the most.
    You could also chose one of the R based Neural Network algorithms, however the produced predictive model & results are usually hard to explain.
    If need be you can enhance the number of available algorithms by adding you own R functions - there are a lot of examples in this community.
    If you have SAP HANA you could also chose:
    Decision Trees:C4.5, CHAID or CART (new in SAP HANA SP08).
    Other supervised learning algorithms for binary classification: Naive Bayes or SVM (Support Vector Machine).
    There are a lot more but this should get you started.
    Best regards,
    Kurt Holst

  • Custom Calculation terminated with Essbase error 1200685 in POV

    I'm trying to improve the efficiency of an ASO calculation script by limiting the scope of the calculation using a filter within the POV.
    When I do this, I get an error that says MDX error: A symmetric set expression is expected. Custom Calculation terminated with Essbase error 1200685 in POV.
    Using a similar filter in an mdx query I can see that I should be updating approximately 5000 data points. That query returns data in less than a minute. If I remove the filter, the calc will run over 16 hours and not complete (I've killed it at that point). [FI - Begining Balance Calc] is a calculated member, which is dependent on other calculations. I'm thinking that the calculation is churning for all of the potential member combinations regardless of sparseness of the data.
    Error 1200685 is not documented in the Essbase Error Message guide. Any ideas on this anyone?
    calc_1.txt contains:
    [FI - Beginning Balance Stored] := [FI - Beginning Balance Calc];
    execute calculation on database REVFCTA.REVFCTA with
    local script_file "E:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\app\REVFCTA\REVFCTA\calc_1.txt"
    POV "FILTER(CROSSJOIN(
    CROSSJOIN(
    CROSSJOIN(
    CROSSJOIN(
    CROSSJOIN(
    CROSSJOIN({[Y.2011]},{[SEG.S0001]}),
    {[FORECAST]}),
    [ASSET TYPE].Levels(0).members),
    [FUND_INVESTOR].levels(0).members),
    [OZ_FUND].levels(0).members),
    {[PER.2]}), NOT ISEMPTY([FI - Beginning Balance]))"
    SourceRegion "({[FI - Beginning Balance Calc]})";
    This is the mdx query:
    SELECT
    {[FI - Beginning Balance Calc]} ON COLUMNS,
    FILTER(CROSSJOIN(CROSSJOIN([FUND_INVESTOR].Levels(0).members,
    [ASSET TYPE].LEVELS(0).MEMBERS),
    OZ_FUND.[OZ_FUND].LEVELS(0).MEMBERS), NOT ISEMPTY([FI - Beginning Balance]))
    ON ROWS
    FROM [REVFCTA.REVFCTA]
    WHERE ([Y.2011],[PER.2],[SEG.S0001],[FORECAST])

    I don't think it's so much that it no longer applies in current versions as that people don't understand that it only ever applied if you had multiple conditions testing more than one dense member.
    I still think that...
    FIX("Dense1", "Sparse1")
         Do something to Dense1
    ENDFIX
    FIX"Dense2", "Sparse1")
         Do something to Dense2
    ENDFIX
    ...is often going to be slower than...
    FIX("Sparse1")
         IF "Dense1"
              Do something to Dense1
         IF "Dense2"
              Do something to Dense2
    ENDFIX
    ...unless the subset of blocks is small enough that caching (Essbase or OS) results in the "Sparse1" blocks not having to be read from / written back to disk twice.

  • Churn/Intersect MDX problem

    Hi All,
    I would like to see your approach of calculating churn based on the intersect of dimension members with MDX. Do you believe it is advisable to do it directly in the cube based on the dimension with more then 10 million records?
    Here's the problem.
    I'd like to calculate the following:
    Clients this month - clients the same month previous year.
    Simple right? Well, it gets trickier. The comparison needs go down to the grain which is the client, meaning, i cannot compare raw numbers (which are distinct count measures in the cube btw) but the actual client ID's. I tried playing around with intersect
    but i really need a simple example first before I start adding complex logic to the calculation (like fixed parameters for one batch and not the other, conditional logic over another dimension's attribute etc..).
    Any good ideas and approaches to solving this problem?
    Thanks! 

    Hi L,
    It's a pity my demo site isn't still online. Here's a blog about churn. http://richardlees.blogspot.com.au/2008/12/blog-post.html
    The mdx might look something like
    with  
    member Measures.LastMonth as count(filter(Customers.Customer.Customer,(Measures.NetSales,[Time].FiscalCalendar.prevmember)<>0))
    member Measures.RetainedThisMonth as count(filter(nonempty(Customers.Customer.Customer,Measures.NetSales),(Measures.NetSales,[Time].FiscalCalendar.prevmember)<>0))
    member measures.R as 
    iif(Measures.LastMonth=0,null,
    Measures.RetainedThisMonth/Measures.LastMonth)
    , format_string="#,#.00%" 
    select {LastMonth,RetainedThisMonth, measures.R } on 0
    ,nonempty([Time].FiscalCalendar.[Month],Measures.NetSales)  on 1
    from sales
    Hope that helps,
    Richard

  • TFS custom report

    I am new to SQL Reporting/Analysis Services, TFS cube so please provide as much information as you can.
    I would like to create a report which lists all the Work Items that have changesets in which a .sql file was modified. Is this possible using the cube or do I have to do something else. I read something about creating an adapter to get info out of the operational db. Can someone give me a list of the different db's for TFS and their uses. I am using TFS 2008.
    Thanks,
    Prabal

    Hi Prabal,
    TFS Analysis Service already contains the information you want.
    In source control schema in SSAS, http://msdn.microsoft.com/en-us/library/ms244703.aspx
    It contians a File dimension which contains File Extension column. 
    From the high level relationships:
    File -> Code Churn -> Changeset -> Work Item Changeset -> Work Item
    (Work Item Schema: http://msdn.microsoft.com/en-us/library/ms244668.aspx)
    So what you need to do is to select File Extension as a filter and put Work Item information on the row.
    Here is a link for creating and customizing TFS Reports: http://msdn.microsoft.com/en-us/library/cc487893.aspx
    For more information about every fact tables, dimensions or relationships, please drill down to MSDN documentations:
    http://msdn.microsoft.com/en-us/library/ms244711.aspx
    Please let me know if it helps.
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    Send us any feedback you have about the help from MSFT at [email protected]

  • Poor Customer Service Received

    Just to help myself feel better.  Yesterday, May 29,2014 had a very bad experience at a Verizon store in Macon GA at 4590 Billy Williamson Dr.  Was greeted by a lady with an ipad in hand.  When asked what she could help us with today I responded that I wanted to see if I was eligible for an upgrade.  She entered my name and cell number on ipad and said there were four customers ahead of myself.  I knew I was in for a long wait but decided to stay until my turn.  After sitting there for about 30 minutes I had noticed two salespeople exit to their cars.  Closing time is 8 pm and it was about 7:30.  After a long wait of 57 minutes I saw her point my way to a salesperson.  He stayed behind counter and she approached us and asked again, what can she help us with today.  I repeated, I wanted to see if I was eligible for an upgrade.  She asked and entered my cell number and responded that out of three phones an upgrade would not be until September of this year but I could opt for a plan that would be about $29 more a month to upgrade.  Now, I have been sitting there for almost a hour and it took her about 45 seconds to answer the question I had when I first walked in!  Time can not be bought and I was so angry about the poor customer service I received at that store.  She could have looked up the info at beginning and I would have been on my way.  I can assure you that Verizon may have all the customers they will ever need but when my contract ends they will lose my business which is about $200 per month. Very poor customer service at the Billy Williamson Drive location in Macon Ga.
    Thank you, feels better just to sent this!
    Rhonda

    Brian68, Thank you for your reply. But that is because most have a 2 year contract and can't afford to go elsewhere. I'm sorry for being so firm, but I think Customer Support is a thing of the past. Thank you anyway. Hope you have a wonderful day! Dianne
    Date: Sun, 19 Aug 2012 07:57:47 -0600
    Subject: Re: Very poor customer service email received back on my cell phone! - Re: Very poor customer service email received back on my cell phone!
                                                                                    Re: Very poor customer service email received back on my cell phone!
        created by Brian68 in My Verizon - View the full discussion
    diorrell wrote: This is totally uncalled for....Verizon needs to shape up or you are going to lose a lot of customers!!!!! DianneVerizon is not going to lose a ton of customers. Their churn rate for the 2nd quarter of 2012 which ended on Jun 30th was 0.84%. Which means 99.16% of the customers they had on March 31st 2012 were still with them on June 30th 2012.
                                 Not interested in these emails anymore, or want to change how often they come? Update your email preferences.
    >Post edited to remove personal email address<
    Message was edited by: Verizon Moderator

  • Adversarial Customer Service

    Why is it that Verizon’s Service Policies seem to prevent them from making happy customers?  It has become such a strained relationship that when my service contracts are up I will be moving to another provider.  And Verizon does not care!   I have two accounts, with four phones and a MiFi, and yet they treat me with contempt for every transaction.  One of my phones broke and rather than getting a free upgrade I paid the $50.00 for the insurance to replace it rather than extend my contract. That transaction took almost three hours to complete.  When is enough going to be enough. Why do we as customers continue to accept substandard service? When did Verizon get so big that they don’t have to care about the quality of their customer and technical service.
    I live in the country, No DSL, No high speed data other than satellite.  I went to the Verizon Store (Corporate Store not one of the Franchised Stores) and asked them when they might be getting the IPhone.  I was informed that that was strictly at&t (it is lower case, you’ll find out why later) and Verizon would not be getting them as an option.  They sold me a MiFi 2200 so that I could
    connect my computer to the internet.  So, now I have two pieces of equipment on my personal account.  Less than a month later they offer the IPhone.  When I returned to the store to express my discontent they responded that they “did” know about it but were not allowed to tell anyone ahead of time.  So, now I am stuck in a contract with this MiFi for 2 years and my bill which was supposed to double has now tripled in cost.  And, the service of this MiFi which was supposed to improve my internet experience
    is only slightly better that dial up.  Apparently, I live on the fringe of where it will work and where it will not, contrary to what I was told when I purchased it.  So, when that contract is up I will be leaving and Verizon will not care because they don’t have too.
    I retired from AT&T(upper case because it was the real one) after 22 years of service as an Engineering Director.  My customers had my home phone if they had a problem. Taking care of my customers no matter the time or circumstance was not an issue, only making sure that we delivered on our promise.  I broke the company’s rules a lot, but never the promise. If a policy got in the way of that promise then I made good on the promise and **bleep** the policy.  The whole time I held that position we never lost a customer because of a policy.  My dealings with the people at Verizon always without question end with “that’s our policy”. Apparently customer “churn” is not an issue otherwise they might take note and listen.
    It’s funny, if one of the Verizon employees was empowered to make decisions that make and keep customers then maybe they would have kept me.  I, as the customer validate Verizon’s worth every month when I make my payment. Well, it will not be too long before I will no longer make that payment. I choose to do business with those that want to partner with me as a customer. To work with me to make sure I have the products and services that provide me with the best value for my money not their money. I do business with those that do not treat me as an adversary and hide behind policies that only protect them and not the customer.  But again, Verizon does not care for I am only one, pity you will survive because we have become a society that will take the crap that us give us and say thank you for it.  I, say not any more….    

    Firefighter-EMT wrote:
    Why is it that Verizon’s Service Policies seem to prevent them from making happy customers?  It has become such a strained relationship that when my service contracts are up I will be moving to another provider.  And Verizon does not care!   I have two accounts, with four phones and a MiFi, and yet they treat me with contempt for every transaction.  One of my phones broke and rather than getting a free upgrade I paid the $50.00 for the insurance to replace it rather than extend my contract. Out of curiosity, did this phone break WITHIN the 1yr manufacturers warranty for a manufacturer defect and NOT physical damage to the phone? If so, then Verixon WOULD have given you a FREE replacement phone. The fact that they didn't leads one to believe that it was either outside the warranty period or it broke as a result of physical damage. The fact that you were even eligible to upgrade by renewing your contract is further proof of this, as you have to have been AT LEAST 1 yr into your contract to do this. How many companys do you work with WILL give you FREE replacements of broken equipment forever?
    That transaction took almost three hours to complete.  When is enough going to be enough. Why do we as customers continue to accept substandard service? When did Verizon get so big that they don’t have to care about the quality of their customer and technical service.
    I live in the country, No DSL, No high speed data other than satellite.  I went to the Verizon Store (Corporate Store not one of the Franchised Stores) and asked them when they might be getting the IPhone.  I was informed that that was strictly at&t (it is lower case, you’ll find out why later) and Verizon would not be getting them as an option.  They sold me a MiFi 2200 so that I could
    connect my computer to the internet.  So, now I have two pieces of equipment on my personal account.  Less than a month later they offer the IPhone.  Before the iPhone was announced, you had up to 30 days to return equipment to Verizon and stop service without having to pay an ETF. This seems to be what you SHOULD have done. Any reason why you did NOT do this as you say it was less than a month later?
    When I returned to the store to express my discontent they responded that they “did” know about it but were not allowed to tell anyone ahead of time.  So, now I am stuck in a contract with this MiFi for 2 years and my bill which was supposed to double has now tripled in cost.  And, the service of this MiFi which was supposed to improve my internet experience
    is only slightly better that dial up.  Apparently, I live on the fringe of where it will work and where it will not, contrary to what I was told when I purchased it.  So, when that contract is up I will be leaving and Verizon will not care because they don’t have too.
    I retired from AT&T(upper case because it was the real one) after 22 years of service as an Engineering Director.  My customers had my home phone if they had a problem. Taking care of my customers no matter the time or circumstance was not an issue, only making sure that we delivered on our promise.  I broke the company’s rules a lot, but never the promise. If a policy got in the way of that promise then I made good on the promise and **bleep** the policy.  The whole time I held that position we never lost a customer because of a policy.  My dealings with the people at Verizon always without question end with “that’s our policy”. Apparently customer “churn” is not an issue otherwise they might take note and listen.
    It’s funny, if one of the Verizon employees was empowered to make decisions that make and keep customers then maybe they would have kept me.  I, as the customer validate Verizon’s worth every month when I make my payment. Well, it will not be too long before I will no longer make that payment. I choose to do business with those that want to partner with me as a customer. To work with me to make sure I have the products and services that provide me with the best value for my money not their money. I do business with those that do not treat me as an adversary and hide behind policies that only protect them and not the customer.  But again, Verizon does not care for I am only one, pity you will survive because we have become a society that will take the crap that us give us and say thank you for it.  I, say not any more….    

  • Very poor customer service email received back on my cell phone!

    I want to complain about whoever responds to questions you post on the forum. I won't tell you the "fake"name. She sent me one email and said I sent my questions to the wrong place. I replied and told her I didn't know. Said I should have used the forum. I replied again to her email on my cell phone and said I was sorry didn't know where forum was and that she had not answered any of my questions. She immediately replied, I'm NOT INTERESTED IN THESE EMAILS ANYMORE, OR WANT TO CHANGE HOW OFTEN THEY COME? UPDATE YOUR EMAIL PREFERENCES.....OTHERWORDS "YOURSELF".
    You all are there to HELP, at least I thought so. I am very frustrated and disappointed in this reply. I am going to report this to a manager if I have to!
    I replied to her, thank you for not HELPING me (just to kind of be nice about it).
    This is totally uncalled for....Verizon needs to shape up or you are going to lose a lot of customers!!!!!
    Dianne

    Brian68, Thank you for your reply. But that is because most have a 2 year contract and can't afford to go elsewhere. I'm sorry for being so firm, but I think Customer Support is a thing of the past. Thank you anyway. Hope you have a wonderful day! Dianne
    Date: Sun, 19 Aug 2012 07:57:47 -0600
    Subject: Re: Very poor customer service email received back on my cell phone! - Re: Very poor customer service email received back on my cell phone!
                                                                                    Re: Very poor customer service email received back on my cell phone!
        created by Brian68 in My Verizon - View the full discussion
    diorrell wrote: This is totally uncalled for....Verizon needs to shape up or you are going to lose a lot of customers!!!!! DianneVerizon is not going to lose a ton of customers. Their churn rate for the 2nd quarter of 2012 which ended on Jun 30th was 0.84%. Which means 99.16% of the customers they had on March 31st 2012 were still with them on June 30th 2012.
                                 Not interested in these emails anymore, or want to change how often they come? Update your email preferences.
    >Post edited to remove personal email address<
    Message was edited by: Verizon Moderator

  • No translation in customizing

    Hi guys,
    Just for your information:
    In customizing no translation exists for "Optimize Performance for Cohort"
    (Campus Management - Procesos en Campus Management - Cohortes
    Optimize Performance for Cohort ) and no description appears qhen you acces this customizing point.
    Regards,

    Hi Elisabeth,
    sounds like you are seeking for a correction in the software... you can actually create an OSS message for an issue like that. This will then reach those people who can correct this and they can sent you a correction note etc..
    Regards
    Joachim

  • Custom purchase requsitionto vendor open and cleared payment report

    dear all i develop report but i cant ableto show in that open amount and cleared amount of vender in that report so please see this report and feedback me for logic to show open and clear amount of vendor purchase orderwise or vendorwise
    report zpo_purchase_history no standard page heading message-id 00.
    TABLES : bsik, bsak, lfa1, lfb1, skb1, t001, bapifvdexp_vzzbepp.
    type-pools:slis,ICON.
    types :begin of ty_po,
            banfn type eban-banfn,
            "Purchase Requisition Number
            bnfpo type eban-bnfpo,
            "Item Number of Purchase Requisition
            ekgrp type eban-ekgrp,                 "Purchasing Group
            badat type eban-badat,
            "Requisition (Request) Date
            menge type eban-menge,
            KNTTP TYPE EBAN-KNTTP,
             PSTYP type eban-PSTYP,
            "Purchase Requisition Quantity
            meins type eban-meins,
            "Purchase Requisition Unit of Measure
            lifnr type ekko-lifnr,                 "Vendor Account Number
            bedat type ekko-bedat,                 "Purchasing Document Date
            ebeln type ekpo-ebeln,
            "Purchasing Document Number
            ebelp type ekpo-ebelp,
            "Item Number of Purchasing Document
            matkl type ekpo-matkl,                 "Material Group
            mtart type ekpo-mtart,                 "Material Type
            matnr type ekpo-matnr,                 "Material Number
            txz01 type ekpo-txz01,                 "Short Text
            menge1 type ekpo-menge,                "Purchase Order Quantity
            meins1 type ekpo-meins,
            "Purchase Order Unit of Measure
            balqty type ekpo-menge,                "Balance Quantity
            netpr type ekpo-netpr,
            "Net Price in Purchasing Document
            peinh type ekpo-peinh,                 "Price Unit
            mblnr type mseg-mblnr,
            "Number of Material Document
            zeile type mseg-zeile,                 "Item in Material Document
            menge2 type mseg-menge,                "GR Quantity
            meins2 type mseg-meins,                "GR Unit of Measure
            werks type mseg-werks,                 "Plant
            charg type mseg-charg,                 "Batch
            belnr type rbkp-belnr,
            "Document Number of an Invoice Document
            bldat type ekbe-bldat,                 "Document Date in Document
            belnr_b type rbkp-belnr,
            SHKZG type ekbe-SHKZG ,                "Debit/Credit Indicator
            DMBTR type   bsik-dmbtr,                "Amount in Local Currency
            DMBTR_C type   bsAk-dmbtr,                "Amount in Local Currency
            thick(10) type c,                      "Thickness
            width(10) type c,                      "Width
            length(10) type c,                     "Length
            grade(10) type c,                        "Grade
            BELNR_d type bseg-belnr,
            xblnr type bkpf-xblnr,
            awkey  type bkpf-awkey,
            RMWWR type rbkp-RMWWR,
            WMWST1 type rbkp-WMWST1,
            end of ty_po.
    types :begin of ty_ekko,
            ebeln type ekko-ebeln,
            lifnr type ekko-lifnr,
            bedat type ekko-bedat,
            end of ty_ekko.
    types:begin of ty_ekpo,
            ebeln type ekpo-ebeln,
            ebelp type ekpo-ebelp,
            matnr type ekpo-matnr,
            txz01 type ekpo-txz01,
            menge type ekpo-menge,
            meins type ekpo-meins,
            netpr type ekpo-netpr,
            peinh type ekpo-peinh,
            banfn type ekpo-banfn,
            bnfpo type ekpo-bnfpo,
            mtart type ekpo-mtart,
            end of ty_ekpo.
    types :begin of ty_eban,
            banfn type eban-banfn,
            bnfpo type eban-bnfpo,
            matnr type eban-matnr,
            menge type eban-menge,
            meins type eban-meins,
            end of ty_eban.
    types : begin of ty_ekbe,
             ebeln type ekbe-ebeln,
             ebelp type ekbe-ebelp,
             belnr type ekbe-belnr,
             bldat type ekbe-bldat,
             gjahr type ekbe-gjahr,
             buzei type ekbe-buzei,
             matnr type ekbe-matnr,
             DMBTR type ekbe-dmbtr,
             shkzg type ekbe-shkzg,
             end of ty_ekbe.
    types : begin of ty_mseg,
             mblnr type mseg-mblnr,
             mjahr type mseg-mjahr,
             zeile type mseg-zeile,
             menge type mseg-menge,
             meins type mseg-meins,
             ebeln type mseg-ebeln,
             ebelp type mseg-ebelp,
             matnr type mseg-matnr,
             werks type mseg-werks,
             charg type mseg-charg,
             end of ty_mseg.
    types : begin of ty_rbkp,
             belnr type rbkp-belnr,
             gjahr type rbkp-gjahr,
             bldat type rbkp-bldat,
             lifnr type rbkp-lifnr,
             ZUONR type rbkp-ZUONR,
             RMWWR type rbkp-RMWWR,
             WMWST1 type rbkp-WMWST1,
             end of ty_rbkp.
    types : begin of ty_bseg,
             bukrs type bseg-bukrs,
             belnr type bseg-belnr,
             gjahr type bseg-gjahr,
             buzei type bseg-buzei,
             valut type bseg-valut,
             wrbtr type bseg-wrbtr ,
             augbl type bseg-augbl,
             matnr type bseg-matnr,
             lifnr type bseg-lifnr,
             ebeln type bseg-ebeln,
             end of ty_bseg.
    types : begin of ty_rseg,
             belnr type rseg-belnr,
             gjahr type rseg-gjahr,
             ebeln type rseg-ebeln,
             ebelp type rseg-ebelp,
             matnr type rseg-matnr,
             bukrs type rseg-bukrs,
             end of ty_rseg.
    types : begin of ty_bsik,
             belnr type bsik-belnr,
              buzei type bsik-buzei,
             DMBTR type bsik-DMBTR,
             budat type bsik-budat,
             shkzg type bsik-shkzg,
             ebeln type bsik-ebeln,
             lifnr type bsik-lifnr,
             end of ty_bsik.
    types : begin of ty_bsak,
             belnr type bsak-belnr,
       lifnr type bsak-lifnr,
        ebeln type bsak-ebeln,
             DMBTR_C type bsak-DMBTR,
    ZUONR type bsak-ZUONR,
             end of ty_bsak.
    types: begin of ty_bkpf,
             BELNR type bkpf-belnr,
             xblnr type bkpf-xblnr,
             awkey  type bkpf-awkey,
           end of ty_bkpf.
    data: it_po type standard table of ty_po,
           it_ekko type standard table of ty_ekko,
           it_ekpo type standard table of ty_ekpo,
           it_eban type standard table of ty_eban,
           it_ekbe type standard table of ty_ekbe,
           it_mseg type standard table of ty_mseg,
           it_rbkp type standard table of ty_rbkp,
           it_rseg type standard table of ty_rseg,
           it_bseg type standard table of ty_bseg,
           it_bsik type STANDARD TABLE OF ty_bsik with header line,
           it_bsak type STANDARD TABLE OF ty_bsak,
           it_bkpf type standard table of ty_bkpf,
           wa_po type ty_po,
           wa_ekko type ty_ekko,
           wa_ekpo type ty_ekpo,
           wa_eban type ty_eban,
           wa_mseg type ty_mseg,
           wa_rbkp type ty_rbkp,
           wa_rseg type ty_rseg,
           wa_bseg type ty_bseg,
           wa_ekbe type ty_ekbe,
           wa_bsik type ty_bsik,
           wa_bsak type ty_bsak,
           wa_bkpf type ty_bkpf.
    data: it_fcat type slis_t_fieldcat_alv,
           it_lshead type slis_t_listheader,
           it_sort type slis_t_sortinfo_alv,
           wa_fcat type slis_fieldcat_alv,
           wa_lshead type slis_listheader,
           wa_layout type slis_layout_alv,
           wa_sort type slis_sortinfo_alv.
    data :it_cl_data like table of clobjdat,
           wa_cl_data like clobjdat.
    data: values(10) type n.
    data: value1(4) type N.
    data: c_matkl type ekpo-matkl,
           c_matnr type ekpo-matnr,
           c_ekgrp type eban-ekgrp,
           c_badat type eban-badat,
           c_index type sy-tabix,
           c_grmenge type mseg-erfmg,
           c_low(10) type c,
           c_high(10) type c,
           c_date type string,
           c_bukrs type ekko-bukrs,
           c_WERKS type eban-WERKS.
    data: gd_date(10).
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
           WA_EVENT TYPE SLIS_ALV_EVENT.
    *********Selection screen variables*********
    selection-screen:begin of block b1 with frame title text-001.
    select-options: s_bukrs for c_bukrs DEFAULT  'bmp1',
                     s_WERKS for c_WERKS,
                     s_matnr for c_matnr DEFAULT 'rm-01',
                     s_matkl for c_matkl ,
                     s_badat for c_badat ,"obligatory,
                     s_ekgrp for c_ekgrp.
    parameters: ch_bal as checkbox.
    selection-screen:end of block b1.
    *initialization.
    * PERFORM EVENT_CALL.
    *  PERFORM POPULATE_EVENT.
    start-of-selection.
         PERFORM EVENT_CALL.
       PERFORM POPULATE_EVENT.
       perform getdata.
       perform setdata.
       perform fieldcat.
       perform display.
    *&      Form  GETDATA
    form getdata .
       select a~BANFN
              a~bnfpo
              a~ekgrp
              a~badat
              a~KNTTP
              a~PSTYP
              b~ebeln
              b~ebelp
              b~matkl
              b~matnr
              b~bukrs
              into corresponding fields of table it_po
              from eban as a inner join ekpo as b
              on a~banfn = b~banfn and
                 a~bnfpo = b~bnfpo AND
                 A~KNTTP = B~KNTTP and
                 a~PSTYP = b~PSTYP
              where  a~badat in s_badat and
                     a~ekgrp in s_ekgrp and
                     a~WERKS in s_WERKS and
                     b~matnr in s_matnr and
                     b~matkl in s_matkl and
                     b~bukrs in s_bukrs and
                     b~loekz <> 'L' and
                     a~loekz <> 'X'.
       if it_po[] is not initial.
         select ebeln
                ebelp
                matnr
                txz01
                menge
                meins
                netpr
                peinh
                banfn
                bnfpo
                mtart
                from ekpo into table it_ekpo
                for all entries in it_po
                where ebeln = it_po-ebeln and
                      ebelp = it_po-ebelp and
                      loekz <> 'L'.
         select banfn
                bnfpo
                matnr
                menge
                meins
                from eban into table it_eban
                for all entries in it_po
                where banfn = it_po-banfn and
                      bnfpo = it_po-bnfpo and
                      loekz <> 'X'.
         if it_ekpo[] is not initial.
           select ebeln
                  lifnr
                  bedat
                  from ekko into table it_ekko
                  for all entries in it_ekpo
                  where ebeln = it_ekpo-ebeln.
           select ebeln
                  ebelp
                  belnr
                  bldat
                  gjahr
                  buzei
                  matnr
                  DMBTR
                  shkzg
                  from ekbe into table it_ekbe
                  for all entries in it_ekpo
                  where ebeln = it_ekpo-ebeln and
                        ebelp = it_ekpo-ebelp .
    *if it_ekbe-shkzg = 'H'.
    **ekbe-dmbtr = ekbe-dmbtr * -1.
    **ekbe-menge = ekbe-menge * -1.
    *endif.
    * select belnr
    *             gjahr
    *             ebeln
    *             ebelp
    *     from bseg into table it_bseg
    *             for all entries in it_ekpo
    *             where ebeln = it_ekpo-ebeln and
    *                   ebelp = it_ekpo-ebelp.
           select belnr
                  gjahr
                  ebeln
                  ebelp
                  matnr
                  bukrs
                  from rseg into table it_rseg
                  for all entries in it_ekpo
                  where ebeln = it_ekpo-ebeln and
                        ebelp = it_ekpo-ebelp.
         endif.
         if it_ekbe[] is not initial.
           select mblnr
                  mjahr
                  zeile
                  menge
                  meins
                  ebeln
                  ebelp
                  matnr
                  werks
                  charg
                  from mseg into table it_mseg
                  for all entries in it_ekbe
                  where mblnr = it_ekbe-belnr and
                        mjahr = it_ekbe-gjahr and
                        zeile = it_ekbe-buzei and
                        bwart = '101'.
         endif.
         if it_rseg[] is not initial.
           select belnr
                  gjahr
                  bldat
                  lifnr
                  ZUONR
                  RMWWR
                  WMWST1
                  from rbkp into table it_rbkp
                  for all entries in it_rseg
                  where belnr = it_rseg-belnr.
         endif.
    *if it_rseg[] is not initial.
    *      SELECT bukrs
    *              belnr
    *              gjahr
    *              buzei
    *              valut
    *              wrbtr
    *              augbl
    *              matnr
    *              lifnr
    *              ebeln
    *        INTO TABLE it_bseg
    *          FROM bseg
    *          FOR ALL ENTRIES IN it_rseg
    *          WHERE bukrs = it_rseg-bukrs and ebeln = it_rseg-ebeln and mwskz = ''.
    *endif.
    *loop at it_BKPF into wa_BKPF.
    *  values = wa_rbkp-belnr.
    *  value1 = wa_rbkp-gjahr.
       data: aekey_1 type string .
    *CONCATENATE values value1 into aekey_1.
    *  if it_BSEG[] is not initial.
    *MESSAGE aekey_1 type 'I'.
           SELECT single belnr xblnr awkey into wa_bkpf
             from bkpf
             where awkey = aekey_1.
    SELECT SINGLe belnr
    buzei
    dmbtr
    budat
       shkzg
       ebeln
       lifnr
       FROM bsik
    INTO CORRESPONDING FIELDS OF  wa_bsik
    *FOR ALL ENTRIES IN it_bseg
    WHERE
        bukrs in s_bukrs and
        lifnr = wa_rbkp-lifnr
    and
    *AND gjahr = it_bseg-gjahr
    * AND
        belnr = wa_bkpf-belnr.
    insert wa_bsik into table it_bsik.
    CLEAR wa_bsik.
    CLEAR it_bsik.
    *endloop.
    * and ebeln = it_bseg-ebeln .
    *    select BELNR
    **           SHKZG
    **           DMBTR
    *           from bkpf into table it_bkpf
    *            for ALL ENTRIES IN it_rbkp
    *            where belnr = it_rbkp-belnr.
    *        ENDif.
    IF IT_bseg[] IS NOT INITIAL.
           select belnr
             LIFNR
             ebeln
                  DMBTR
              ZUONR
                  from bsik into table it_bsik
                  for all entries in it_bseg
                  where belnr = it_bseg-belnr.
           select belnr
             LIFNR
             ebeln
                  DMBTR
              ZUONR
                  from bsak into table it_bsak
                  for all entries in it_bseg
                  where belnr = it_bseg-belnr.
    ENDIF.
       else.
         message s002.
         leave list-processing.
       endif.
    endform.                    " GETDATA
    *&      Form  SETDATA
    form setdata .
       clear wa_po.
       loop at it_po into wa_po.
         c_index = sy-tabix.
    ********Calculate PR Quantity**********
         clear wa_eban.
         read table it_eban into wa_eban
                    with key banfn = wa_po-banfn
                             bnfpo = wa_po-bnfpo.
         if sy-subrc eq 0.
           move:wa_eban-menge to wa_po-menge,
                wa_eban-meins to wa_po-meins.
         endif.
    ********Calculate PO Quantity**********
         clear wa_ekpo.
         read table it_ekpo into wa_ekpo
                    with key banfn = wa_po-banfn
                             bnfpo = wa_po-bnfpo .
         if sy-subrc eq 0.
           move:wa_ekpo-txz01 to wa_po-txz01,
                wa_ekpo-netpr to wa_po-netpr,
                wa_ekpo-peinh to wa_po-peinh,
                wa_ekpo-mtart to wa_po-mtart,
                wa_ekpo-menge to wa_po-menge1,
                wa_ekpo-meins to wa_po-meins1.
         endif.
    ********Calculate Balance Quantity******
         clear wa_mseg.
         loop at it_mseg into wa_mseg
                where ebeln = wa_po-ebeln and
                      ebelp = wa_po-ebelp.
           c_grmenge = c_grmenge + wa_mseg-menge.
         endloop.
         move:wa_mseg-mblnr to wa_po-mblnr,
              c_grmenge to wa_po-menge2,
              wa_mseg-meins to wa_po-meins2,
              wa_mseg-werks to wa_po-werks,
              wa_mseg-charg to wa_po-charg.
         wa_po-balqty = wa_eban-menge - c_grmenge.
         clear : wa_rseg,wa_rbkp.
         read table it_rseg into wa_rseg with key
                        ebeln = wa_mseg-ebeln
                        ebelp = wa_mseg-ebelp.
         read table it_rbkp into wa_rbkp
                    with key belnr = wa_rseg-belnr
                             gjahr = wa_rseg-gjahr.
         if sy-subrc eq 0.
           move : wa_rbkp-belnr to wa_po-belnr,
                  wa_rbkp-bldat to wa_po-bldat,
                  wa_rbkp-RMWWR to wa_po-RMWWR,
                  WA_RBKP-WMWST1 TO WA_PO-WMWST1.
         endif.
           read table it_bseg into wa_bseg with key
                         ebeln = wa_rseg-ebeln
                         bukrs = wa_rseg-bukrs.
           if sy-subrc eq 0.
             move wa_bseg-belnr to wa_po-belnr_d.
           endif.
    *    read table it_bkpf into wa_bkpf
    *    with key belnr = wa_ekbe-belnr.
    *    read table it_bseg into wa_bseg
    *    with key belnr = wa_bkpf-belnr.
    CLEAR wa_bsik.
    clear it_bsik.
         read table it_bsik into wa_bsik
         with key belnr = wa_bkpf-belnr.
    *    if wa_bsik-shkzg = 'H'.
    *     wa_bsik-DMBTR = wa_bsik-DMBTR * 1.
    *     endif.
           if sy-subrc eq 0.
             move : wa_bsik-belnr to wa_po-belnr,
                     wa_bsik-DMBTR to wa_po-DMBTR.
            endif.
    *    clear wa_bsik.
    *    read table it_bsik into wa_bsik
    *               with key  belnr = wa_bseg-belnr.
    *    if sy-subrc eq 0.
    *        move : wa_bsik-DMBTR to wa_po-DMBTR.
    *    endif.
    *clear wa_bsak.
    *    read table it_bsak into wa_bsak
    *               with key  belnr = wa_bseg-belnr.
    *    if sy-subrc eq 0.
    *        move : wa_bsak-DMBTR_C to wa_po-DMBTR_C.
    *    endif.
    *clear : wa_rbkp.
    *loop at it_bsik into wa_bsik.
    *read table it_bsik into wa_bsik with key belnr = wa_rbkp-belnr.
    *if sy-subrc eq 0.
    *  move : wa_bsik-DMBTR to wa_po-DMBTR.
    *    endif.
    *endloop.
    *********Assign Vendor,PO Date*********
         clear wa_ekko.
         read table it_ekko into wa_ekko
                    with key ebeln = wa_po-ebeln.
         if sy-subrc eq 0.
           move:wa_ekko-lifnr to wa_po-lifnr,
                wa_ekko-bedat to wa_po-bedat.
         endif.
    *clear wa_ekko.
    *read table it_ekko into wa_ekko
    *with key lifnr = wa_po-lifnr.
    *if sy-subrc eq 0.
    *  move: wa_bsik-DMBTR to wa_po-DMBTR.
    *  endif.
    *    call function 'ZSD_BATCH_CLASSIFICATION_DATA'
    *      exporting
    **        ch_charg                   = wa_po-charg
    *        ch_matnr                   = wa_po-matnr
    *        ch_werks                   = wa_po-werks
    *      tables
    *        cl_data                    = it_cl_data
    **       I_SEL_CHARACTERISTIC       =
         loop at it_cl_data into wa_cl_data.
           if wa_cl_data-ausp1 ne '?'.
             if wa_cl_data-atnam eq 'THICKNESS'.
               move wa_cl_data-ausp1 to wa_po-thick.
             elseif wa_cl_data-atnam eq 'LENGTH'.
               move wa_cl_data-ausp1 to wa_po-length.
             elseif wa_cl_data-atnam eq 'WIDTH'.
               move wa_cl_data-ausp1 to wa_po-width.
             elseif wa_cl_data-atnam eq 'GRADE'.
               move wa_cl_data-ausp1 to wa_po-grade.
             endif.
           endif.
         endloop.
         modify it_po from wa_po index c_index.
         clear :c_grmenge,wa_po,wa_ekpo,wa_mseg,c_index.
       endloop.
    endform.                    " SETDATA
    *&      Form  FIELDCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form fieldcat .
       perform buildfields using '1' 'BANFN'  'IT_PO' 'PR Number' '' ''.
    *  perform buildfields using '2' 'BNFPO'  'IT_PO' 'PR Item Number' '' ''.
       perform  buildfields using '2' 'KNTTP' 'IT_PO' 'A/c Assignment Cat' '' ''.
       perform  buildfields using '2' 'PSTYP' 'IT_PO' 'Item Cat' '' ''.
       perform buildfields using '3' 'EKGRP'  'IT_PO' 'Purchase Group' '' ''.
       perform buildfields using '4' 'BADAT'  'IT_PO' 'Request Date' '' ''.
       perform buildfields using '5' 'MENGE'  'IT_PO' 'PR Quantity'  'X' ''.
       perform buildfields using '6' 'MEINS'  'IT_PO' 'PR Unit' '' ''.
       perform buildfields using '7' 'LIFNR'  'IT_PO' 'Vendor Number' '' ''.
       perform buildfields using '8' 'EBELN'  'IT_PO' 'Purchasing Doc No' '' ''  .
       perform buildfields using '9' 'BEDAT'  'IT_PO' 'PO Date' '' ''.
       perform buildfields using '10' 'MTART' 'IT_PO' 'Material Type' '' ''.
       perform buildfields using '11' 'MATKL' 'IT_PO' 'Material Group' '' ''.
       perform buildfields using '12' 'MATNR' 'IT_PO' 'Material Number' '' ''.
       perform buildfields using '13' 'TXZ01' 'IT_PO' 'Material Desc' '' ''.
       perform buildfields using '18' 'MENGE1' 'IT_PO' 'PO Quantity' 'X' ''.
       perform buildfields using '19' 'MEINS' 'IT_PO' 'PO Unit' '' ''.
       perform buildfields using '20' 'NETPR' 'IT_PO' 'Net Price' '' ''.
       perform buildfields using '21' 'PEINH' 'IT_PO' 'Price Unit' '' ''.
       perform buildfields using '22' 'MBLNR' 'IT_PO' 'GR Number' '' ''.
       perform buildfields using '23' 'MENGE2' 'IT_PO' 'GR Quantity' 'X' ''.
       perform buildfields using '24' 'MEINS2' 'IT_PO' 'GR Unit' '' ''.
       perform buildfields using '25' 'BELNR' 'IT_PO' 'Invoice doc. number' '' ''.
       perform buildfields using '26' 'BLDAT' 'IT_PO' 'Invoice Date' '' ''.
    *  perform buildfields using '26' 'BELNR_D' 'IT_POP' 'A/C Doc. No.' '' ''.
    *  perform buildfields using '26' 'AUGBL' 'IT_PO' 'Clearing Doc No.' '' ''.
       perform buildfields using '26' 'DMBTR' 'IT_PO' 'OPEN AMOUNT' '' ''.
      perform buildfields using '26' 'DMBTR' 'IT_PO' 'clear AMOUNT' '' ''.
    *  perform buildfields using '26' 'DMBTR_C' 'IT_PO' 'Clear balance' '' ''.
       if ch_bal = 'X'.
         perform buildfields using '27' 'BALQTY' 'IT_PO' 'Balance Quantity'
         'X' ''.
       endif.
       perform buildfields using '26' 'WMWST1' 'IT_PO' 'TOTAL TAX ADDED' 'X' ''.
       perform buildfields using '26' 'RMWWR' 'IT_PO' 'TOTAL AMOUNT IN INVOICE' 'X' ''.
    endform.                    " FIELDCAT
    *&      Form  BUILDFIELDS
    *       text
    *      -->P_0449   text
    *      -->P_0450   text
    *      -->P_0451   text
    *      -->P_0452   text
    form buildfields  using    value(p_col_pos) like sy-cucol
                                value(p_fldname) type slis_fieldname
                                value(p_tabname) type slis_tabname
                                value(p_reptext) like dd03p-reptext
                                value(p_do_sum) type char1
                                value(hotspot) type char1.
       wa_fcat-col_pos = p_col_pos.
       wa_fcat-fieldname = p_fldname.
       wa_fcat-tabname = p_tabname.
       wa_fcat-reptext_ddic = p_reptext.
       wa_fcat-do_sum = p_do_sum.
       wa_fcat-hotspot = hotspot.
       append wa_fcat to it_fcat.
       clear wa_fcat.
    endform.                    " BUILDFIELDS
    *&      Form  DISPLAY
    form display .
       clear wa_layout.
       wa_layout-zebra = 'X'.
       wa_layout-colwidth_optimize = 'X'.
    * wa_layout-box_fieldname     = 'SEL'.
    * wa_layout-edit = 'X'.
       perform build_sort using 'BANFN' '1' 'X'.
       call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
          i_callback_program               = sy-cprog
    *   I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = 'USER_COMMAND '
          i_callback_top_of_page           = 'TOP_OF_PAGE'
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
        i_background_id                   = 'ALV_BACKGROUND'
    *   I_GRID_TITLE                      =
    *   I_GRID_SETTINGS                   =
          is_layout                        = wa_layout
          it_fieldcat                      = it_fcat
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
         it_sort                           = it_sort
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
        I_SAVE                            = 'A'
    *   IS_VARIANT                        =
    *   IT_EVENTS                         =
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
         tables
           t_outtab                          = it_po[]
      exceptions
        program_error                     = 1
        others                            = 2
       if sy-subrc <> 0.
         message id sy-msgid type sy-msgty number sy-msgno
                 with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       endif.
    endform.                    " DISPLAY
    *&      Form  top_of_page
    *       text
    form top_of_page.                                           "#EC *
    **********Create report header*********
       refresh it_lshead.
       clear wa_lshead.
    **********To display date in header*********
    *  write: s_badat-low to c_low dd/mm/yyyy,s_badat-high to c_high
    *  dd/mm/yyyy.
    *  if s_badat-high is initial.
    *    concatenate 'Dated on' c_low into c_date separated by space.
    *  else.
    *    concatenate 'Dated between' c_low 'and' c_high into c_date separated
    *    by space.
    *  endif.
       wa_lshead-typ = 'H'.
       wa_lshead-info = 'PR To Payment History'.
    *  'Pending Indents History -

    We had a requirement to retrieve "aging of receiveables" by customer. Basically, it goes thru each record and depending on the due date places the amounts in the following buckets (example). 0-30 day Overdue, 31-60 days Overdue, 61-90 days overdue, 30+ days overdue, 60+ days overdue) etc all the way to 6+ years overdue.
    There are also cooresponding buckets for coming due analysis. For example, what is: 0-30 days coming due, 31-60 days coming due, 30+ days coming due, etc...
    To do this, first I needed to be able be able to produce an open items statement at any given time in the past. Now, this seems impossible because of how the items go from open to cleared all the time. And an item that was open one month ago, may not be open anymore.
    What I did was first remove any selections on item status. Then compare the posting date with teh key date in the past, if the posting date is less than or equal to the key date, keep the record.
    Then compare the clearing date with the key date. First, keep all that are #. (This keeps all records still open from that posting date/key date)
    Then, add another check for all items that were cleared after the key date (GT Key Date). This gives you the open items on that date.
    Hope that makes sense. Let me know if you want clarification.
    /smw

  • Error in creation of custom PD infotype

    Hi,
    I have a task of creating a custom PD infotype(p9xxx). I created HRI9xxx structure with all the custom fields and when I try to create the infotype using tcode PPCI(selected 'field infotype' option and create button in the 'infotype' block was pressed), it gives an error message that p9xxx-begda is not in ABAP dictionary and then it gives me list of screens, module pools and tables created. This custom infotype entry does not exist in T777I. I have tried regenerating it and same problem persists. If anyone knows the solution, please do let me know.
    Thanks in advance

    Solved.

Maybe you are looking for