Help required with logic

Moderator message: pleause use a meaningful subject in future
Hi,
I have a custom table which has customer ID field and amount field.
In the report I need to bucket data by amount and no. of customers in that bucket.
For ex: for amount range 1.00 u2013 25.00 there are 100 customers and total amount $1000.00, 25.01 to 50.00 there are 34 customers  and total amount $20,000 and so on.
What I am planning to do is fetch records from table into internal table using group by clause,
SELECT CUSTOMER AMOUNT FROM CUSTOMER_FINES INTO TABLE LT_FINES GROUP BY CUSTOMER AMOUNT.
This would bring me in the internal table all customers and their fine. Now what would be the best logic to separate them out into groups.
Approach what I thought of is having two variables for each bucket no_of_customers and total_amount. Then loop through the internal table add If conditions on amount and then accordingly increment no_of_customers for that bucket and add amount to total_amount.
But the internal table is likely to have a lot of records about half a million. Is this a good approach. Can you'll recommend what is the right way to achieve this.
Thanks in advance,
CD
Edited by: Matt on Dec 17, 2009 10:02 AM

Hi,
do this.
1. create counters for the no of ranges you have say 1.00 u2013 25.00 counter1 total_amt1, 25.01 to 50.00 counter2 total_amt2 etc
2. loop at your internal table
3. check which range the amount falls into using IF statement
4. increment counter* by 1 and add amount to total_amt*
You are done.
Regards
Prasenjit

Similar Messages

  • Some help required with logic for a dynamic sql query

    i have below code but not sure how to resolve this problem - what i need is to be able to dynamically
    the problem:
    i have a rabbge of paratmeters coming in from a form and need to be able to create a dynamic query string to go into a prepared statement object.
    the problem i have is there are 2 fields year range and year.
    if year range is none i need to create the query string as such :
    where the value of year can be serached on exactly
    str.append("VOLUME_YEAR = ? ");the probelm is if the year range is 5 or year range is 10 i dont know how to maipulate the query string to be able to set the string such that i can then place the year value in the place holder in preparedStatement.setInt(1, year)
    how can i create the intial query string ie.- what are the possible things that i can do. - i'm thinking of things like putting some type of between or such type query statement - but not at all sure how the syntax would go - ie. how would i use the year value and how would i create this dynamic part of the query string so that the JDBC regonises it?
    thanks for any help.
    public String setVolumeYearQuerySt(String year, String yearRange, StringBuffer str){
              String volumeYearQueryString = null;
              Sring doAction= null;
              if (yearRange.equals("None")){str.append("VOLUME_YEAR = ? ");}
              else if(yearRange.equals("5 Years")){doAction = "Nothing";}
              else if (yearRange.equals("10 Years")){doAction = "Nothing";}
              return volumeYearQueryString;
              }

    Saish - thanks a lot for the code example.
    Although, i think its far too advanced for me to understand and try to manipulate it and fit my problem. I'm pretty new to programming as you can probably see from my simple if else type statements. But i'm going to give it a try and see how it goes.
    could you please be kind enough to demonstrate how i could use the above syntax to do the following. --
    i have a year being entered in form .  in the database there is a column year volume which contains year in single year value format and also in a year range  value format - thus as in below - how could i do this -
    eg.
    user can enter a value in the year field a single value or a range value - then he can select +/-5 or 10 yrs range on that value - the DB holds the values as single values and ranges as below -
    one suggested apporach is as follows if a single user is alloweed to enter only a single value in the filed and select a query range +/- 5 etc..
    volume year of �1926-1928� and the user enters �1927�, the query has to find all records where
    look for records that are �less than or equal to� 1927.  It then has to check to see if it contains a range.  For those that it finds containing a range, it has to work out what the �upper� year is and check to see if that is �greater than or equal� to 1927.  If it is, then that is a possible matchanother approach that is suggested is to have a drop down with all years from databse and user is only llowed to select value from drop down and following logic is suggested :
    Because volumes can be received as ranges (e.g. 1964-1966), some extra coding is required where the user asks for a Year Range (such as + or � 5).
    Using the Year selected from the dropdown list, split it into 2 values, a low year and a high year. For example, if �1965-1968� is selected from the year dropdown, split it into �1965� and �1968� for the low year and high year respectively. If �1964� is selected from the year dropdown, split it into �1964� and �1964�. Now take the Year Range that the user has entered into account. For example, if the user has entered 5, subtract 5 from the low year and add 5 to the high year. Using these values, include the following search criteria in the query to the database:-
    (<low year>     BETWEEN
                 left (VOLUME_YEAR, charindex ('-',VOLUME_YEAR + '-') - 1)
         AND     right (VOLUME_YEAR, charindex ('-',VOLUME_YEAR + '-') - 1))
    OR     (<high year>     BETWEEN
                 left (VOLUME_YEAR, charindex ('-',VOLUME_YEAR + '-') - 1)
         AND     right (VOLUME_YEAR, charindex ('-',VOLUME_YEAR + '-') - 1))regards - i think if i could solve the first approach that would be something good as its most user freindly
    thanks

  • Help required with Photoshop Elements 4.0 this has been installed on my new Toshiba laptop with windows 8.1 for some 18 months and operating well. Now it will not open, message pops up saying "attempt to access invalid address" then "application not respo

    Help required with Photoshop Elements 4.0 this has been installed on my new Toshiba laptop with windows 8.1 for some 18 months and operating well. Now it will not open, message pops up saying “attempt to access invalid address” then “application not responding” Suggestions how to access would be much appreciated. Tks. Stuart

    What is the size of your hard disk?  PSE 4 is a very old program and I suspect it is not able to access the entire hard disk on your machine.  Just a thought here.

  • Help require with installing Adobe Acrobat onto my Macbook Pro Retina.

    Help require with installing Adobe Acrobat onto my Macbook Pro Retina.
    I have successfully installed all of my creative cloud apps with the exception being acrobat.
    I cannot print from Indesign to PDF.
    I have unistalled, reinstalled and still no Adobe Acrobat.
    I now have to go back to Windows 8 and create the PDF's there.
    Any one know how to get around this issue?
    Thanks in advance
    Kelvin

    OSX has effectively killed the ability to print to pdf, (print to pdf eliminates most of the "Rich features" of current pdf).
    Export from InDesign, always, excpet for the 1% of the time where you know why print to pdf would produce a better result.

  • Help required with (soundcard) connection / settings, thanks in advan

    Help required with connection / settings between a Creative Sound Blaster Audigy Platinum EX (soundcard) and a Creative DTT3500 Digital (5. speakers).
    The problem
    No sound from any of the speakers. (Exception can plug in headphones at front)
    Background
    My computer has been recently upgraded at my local computer shop and all programs re-installed (including driver update from Creative's website). However after reconnecting speakers and restoring the original settings I?m getting no sound from any of the speakers. I?ve followed all the available advice/instructions I can find on this website and manuals to no avail.
    Set-up
    Physical
    (Digital DIN) Speakers/decoder amplifier (DTT3500) connected to the (digital out) soundcard (Audigy Platinum EX) using minijack to DIN cable. (As per instruction manual)
    Software
    Creative Audio Consul ? setting as per instructions, however have tried variations in vain. (Note: above tabs there is a select device box with SB Audigy [A0000] in it ? only option. Just wondering what [A0000] means?)
    Your advice please. A simple step by step guide would be appreciated, many thanks in advance, Jon

    "My computer has been recently upgraded at my local computer shop and all programs re-installed (including driver update from Creative's website). "
    Do you have the original installation disk?
    If so, try installing THOSE drivers, ESPECIALLY if it worked before. Be sure to uninstall what is there now, first.
    Its natural for most people to want the 'latest' drivers for their hardware. However:
    After experiencing some difficulties with some CL 'updates' for certain products, I now avoid them UNLESS I am having a PROBLEM with the existing drivers.

  • Help required with User exit logic

    Hi gurus,
    Please help me with the logic I wrote for the user exit for a PP Work Center View extract structure. Here is the details of the add on fields: VGW01, VGW02, VGW03, STEUS(from table PLPO); DataSource: 2LIS_04_P_ARBPL,
    data: l_s_pp1 like MC04P_0ARB(extract structure of 2LIS_04_P_ARBPL),
    l_tabix like sy-tabix,
    lv_VGW01 like PLPO-VGW01.
    lv_VGW02 like PLPO-VGW02.
    lv_VGW03 like PLPO-VGW03.
    lv_STEUS like PLPO-STEUS.
    tables : PLPO.
    case i_datasource.
    when '2LIS_04_P_ARBPL'.
    loop at c_t_data into l_s_pp1.
    select single vgw01into lv_vgw01
    from PLPO
    where field = l_s_pp1-field.
    if sy-subrc = 0.
    l_s_pp-zzvgw01 = lv_vgw01.
    l_s_pp-zzvgw02 = lv_vgw02.
    l_s_pp-zzvgw03 = lv_vgw03.
    l_s_pp-zzsteus  = lv_steus.
    endif.
    modify c_t_data from l_s_pp1 index l_tabix.
    endloop.
    Any additional comments welcome. Thanks in advance.

    Hi,
    Try coding as per the below code
    case i_datasource.
      When '2LIS_04_P_ARBPL'.
      DATA: lt_data TYPE TABLE OF MC04P_0ARB.
      FIELD-SYMBOLS: <ls_data> TYPE MC04P_0ARB.
    Internal table for
      TYPES:
            BEGIN OF ty_tbl1,
                     lv_VGW01 TYPE PLPO-VGW01,
                     lv_VGW02 TYPE PLPO-VGW02,
                     lv_VGW03 TYPE PLPO-VGW03,
                     l_bmsch  TYPE XXXX-XXXX,
                     l_plnnr  TYPE XXXX-XXXX
                     l_datuv  TYPE XXXX-XXXX
                     l_aennr  TYPE XXXX-XXXX
                     l_plnkn  TYPE XXXX-XXXX
                     l_plnal  TYPE XXXX-XXXX
            END OF ty_tbl1.
      DATA:
             lt_tb1 type standard table of ty_tbq,
             ls_tb1 type ty_tb1.
      lt_data[] = c_t_data[].
    Read data into internal memory using jOins
      select aVGW01 aVGW02 aVGW02 aVGW02 bbmsch bplnnr bdatuv baennr bplnkn bplnal into into  CORRESPONDING FIELDS OF TABLE
      lt_tb1 from PLPO as a innerjoin XXXX as b where aXXXX=bXXXX.        
    use the internal table to get the data to the enhaced fileds
    LOOP AT lt_data ASSIGNING <ls_data>.
        read table lt_tb1 into ls_tb1
             with key XXXXX = <ls_data>-XXXX .
        if sy-subrc eq 0.
          <ls_data>-lV_VGW01 = ls_tb1-lv_VGW01,
          <ls_data>-lV_VGW02 = ls_tb1-lv_VGW02,
          <ls_data>-lV_VGW03 = ls_tb1-lv_VGW03,
          <ls_data>-bmsch    = ls_tb1-bmsch,
          <ls_data>-plnnr    = ls_tb1-plnnr,
          <ls_data>-datuv    = ls_tb1-datuv,
          <ls_data>-aennr    = ls_tb1-aennr,
          <ls_data>-plnkn    = ls_tb1-plnkn,
          <ls_data>-pln1l    = ls_tb1-plnal.
          MODIFY lt_data FROM <ls_data>.
        endif.
      ENDLOOP.
      REFRESH c_t_data.
      c_t_data[] = lt_data[].
    Note that the code is not written with the exact fields. Change the fields where necessary(also i have joined only 2 tables if needs to be joind form more than 2  table change the join statement accordingly).
    Thanks,
    Nagarjuna
    Edited by: Nagarjuna Reddy on Oct 20, 2011 3:39 AM

  • Immediate help required with this job scheduling scenario

    I have a job that needs to run a procedure hourly but not between 6:00 AM to 8:00 AM and 6:00 PM to 8:00 PM.
    Can anyone help me with how to schedule this job.

    If you use a window the job would only execute if the window opens. If for some reason the window did not open then the job would not execute.
    Windows should be used to specify which resource plan should be active for the time interval.
    In this case you are better off using FREQ=DAILY; BYHOUR=; and specify the hours.

  • Help required with Select statment..... ASAP pls

    HI All,
    Let me desc my table first .
    01                             NOT NULL VARCHAR2(5)                                                                                                                                                                                  
    02                             NOT NULL VARCHAR2(5)                                                                                                                                                                                  
    03                             NOT NULL VARCHAR2(5)                                                                                                                                                                                  
    04                             NOT NULL VARCHAR2(5)
    31                                                    This is how table has been created(Note:not by me)
    select name from  od_shift  where year=2011 and month='Feb' and  "02"='W"{code}-->no doubt this is working fine
    My problem is ...here rather putting the number directly ("01","02","03"....."31") 
    I need to take it from the first two digits of date('01-feb-2011') 
    like {code}
      select name from  od_shift  where year=2011 and month='Feb' and  to_char(to_date('01-feb-2011','dd-mon-yyyy'),'dd')='W" but this is not working
    kindly help me with this .
    Edited by: Basva on Mar 8, 2011 4:53 AM

    Pleiadian wrote:
    You could do a case statement. It's not elegant, but it works
    Edit: smon's solution is better if pl/sql is an optionI disagree, it's quite elegant given the cirumstances of that sick table. And it definitely beats a dynamic SQL solution.
    @Basva - when will you realize that your table is no good, and needs to be normalized into a more traditional relational table?
    Regards
    Peter

  • Help required with an image

    Hi all,
    I wonder if someone can help me with the following issue.
    If you see the attached image in the top left hand corner their is a square box which is a different shade to the rest of the header.
    I need to rectify this and blend it in with the rest on the header colour; however, I do not know how to do this and would appreciate some assistance in doing this.
    I'm a noobie to photoshop so any help is much appreciated.

    It seems you've copied another portion of the texture to overlay something you didn't want seen...
    As opposed to copy/paste of a rectangular region, this is almost a textbook use for Content Aware Fill, which should (assuming it works properly) match the pattern and blend the colors.
    Try selecting just the blemish or whatever you're trying to cover, then expand the selection a few pixels, then Edit - Fill - Content Aware.
    -Noel

  • Help Required with PL/SQL loading logic

    Hi All,
    We have a simple pl/sql code which does loading(insertions) of records into the table. This pl/sql code actually refers to an translation website URL(microsoft based) and inserts the translated text into our table. What happens is sometimes this URL gets blocked out due to some issue. So we are forced to restart our entire operation of loading once again. Actually we have a commit at the end(outside the loop). on the other hand we cant keep commit inside the loop as it may pose an overhead to performance since its commiting once every insert happens.
    What we are expecting is something like this. Say we have 10,000 records. the loading fails at 5500 record. next time when we start again we want to start from 5501 record and NOT from beginning. In informatica kind of ETL tools we have an option to do this. However not sure if we can do this through PL/SQL.
    we thought of keeping counter variable and keep it incrementing for each and every insert happens. but before doing this we have to order by our table according to primary key. This is taking huge amount of time since the table is very big.
    can you please tell any alternative to this?
    Regards,
    Paul

    If I understand correctly, you are doing something as follows:
    // process a defined data set
    for c in (select .. some data... ) 
    loop
        // translate the data (via a web service call)
        Translate( c, translatedOutput )
        // insert the translated data
        insert into some_table translatedOutput
    end loop
    commitIn principle, nothing wrong with this approach. And yes, committing inside the loop for every x number of rows will increase the complexity of code and could perhaps violate ANSI SQL standards of fetching across commits.
    A better approach would be to consider parallelising this process. Run multiple copies of that code - but provide each copy of the code with a small and unique data set to process. So instead of doing 10,000 rows in serial, you schedule a 100 jobs and give each a unique set of a 100 rows to translate.
    Let's say your job queue size is set to 20. This means up to 20 of these processes will run in parallel. Should one fail, the job manager will automatically reschedule it for execution (up to 16 times after which it will be marked as broken).
    So not only does this type of approach enables you spread the processing load, it also enables you to scale your processing (you can handle much larger data volumes like this, and more powerful server h/w will enable you to use more parallel processes). In addition, restart is automated courtesy of the Oracle job manager.
    Compare this type approach with committing inside a loop.. The latter buys you what ito flexibility and performance and scalability? Nothing really - it only makes the process a lot more complex as it needs to be able to correctly restart after a failure. You will not be able to process bigger volumes of data. You will not be able to increase existing performance.
    One needs to carefully consider the approach used to processing data - serialisation is inherently limited. Restarting serialised processes is difficult and complex.

  • Help required with ADFS 3.0 client certificate authentication

    Hi,
    I am currently working on integrating ADFS 3.o for Single Sign On to some 3rd party services along with PKI solution. The basic requirement is that I should be able to choose client authentication certificate as an authentication method in ADFS and then
    federate user credentials to 3rd party trust for single-sign-on.
    I had done this successfully with ADFS 2.0 and that setup is working fine. I have the setup as ADFS 3.0 client authentication method enabled. When I open browser to logon, the ADFS 3.0 page displays a message as "Select a certificate that you want to
    use for authentication. If you cancel the operation, please close your browser and try again." but the certificates are not displayed for selection.
    The certificates are valid and have valid chaining to CA. Could someone help me resolve this issue?
    Thanks!
    -Chinmaya Karve

    Hi Yan,
    Thanks for your response. I have gone through the posts that you have suggested, and my setup looks pretty much as expected.
    So, as I mentioned earlier, I have 2 parallel setups with 3rd party service(SalesForce). Once of them is running ADFS 2.0 and another one has ADFS 3.0. I can logon to the third-party services, from both the setups using username/format. I can logon to SF
    using client authentication certificate from ADFS 2.0 setup, but from the same client machine, when I try to logon SF via ADFS 3.0, the browser just does not pick up any certificate. The page just shows message of "Select a certificate that you want to use
    for authentication. If you cancel the operation, please close your browser and try again.".
    I have checked the browser, and it has the right certificates. Also, the same browser/machine is used to logon to SF through ADFS 2.0 via client certificate, which works just fine !
    I am really confused now, as to whose issue this really is...
    Just to confirm, I am using Certificate Authentication from ADFS 3.0 Authentication Methods for both Intranet and Extranet.
    Any suggestion or inputs where I could have gone wrong in the setup?
    Thanks!

  • Help required with DAQ and waveform generation

    Hi,
    I'm using DAQ 6024E card for waveform acquisition using LabVIEW 8.2 version. I've also attached my vi for your reference.
    My next step is , I want to add another waveform to the acquired waveform, i.e. I mean to say if the acquired waveform is a sine wave with 60 Hz frequency and amplitude of 8V peak-to-peak, I want to finally display a wave which is 8V peak-to-peak with sinusoidally changing freuency.
    To be more clear...I want a sine wave with frequency =  60 Hz + 1*sin( 2*pie**t).
    As cane bveen seen in my vi, I can extract the phase and magnitude of the original acquired signal.
    Can anyone help me out with this...as I'm not able to figureout how should I proceed next.
    Looking forward to hear soon,
    Regards,
    Rohit
    Attachments:
    test_analog.vi ‏162 KB

    You'd probably want to use the DAQmx VI's instead of the Express VIs, when doing something more exotic. You can start by converting the existing Express VIs to code by opening their front panels and saving them as a VI.
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

  • Help required with Gnome 3 Input Sources

    I used CapsLock before gnome 3.6 upgrade all working fine, however new Input Sources broke my system a little bit
    I fixed my CapsLock by dconf-editor org\gnome\desktop\input-sources\xkb-options ['grp:caps_toggle', 'grp_switch', 'grp_led:caps'], but I can't get work
    - language switch indicator not working
    - show-flags does nothing anymore
    Any help fit is required because of usability issues

    Also, with Gnome 3.6 it's no longer possible to switch layouts with the Caps key. That setting is not available even in gnome-tweak-tool.
    I figured out how to do make the settings a lot more flexible, and fix all the layout bugs introduced by 3.6. This is done by configuring everything through setxkbmap and not letting gnome interfere with the settings.
    Remove all input sources, and the typing shortcuts from gnome keyboard settings window.
    Open dconf-editor and remove everything from "org\gnome\desktop\input-sources\xkb-options". I was not able to set it to nothing, but setting it to ['grp_led:caps'] worked. These 2 steps were needed not to interfere with the config described below.
    Install kbdd-git from aur, if you want separate layout for each window.
    Create a script with preferred setxkbmap settings. Here is mine, setting Caps to switch languages, and swapping alt and win keys on MacBook.
    #!/bin/sh
    setxkbmap -layout us,ru
    setxkbmap -option 'grp:caps_toggle'
    setxkbmap -option 'altwin:swap_lalt_lwin'
    # kbdd is needed to keep separate layout for each window.
    `which kbdd` && kbdd
    Launch gnome-session-properties and add this script to the list.
    Last edited by ikatson (2012-11-02 21:51:13)

  • Urgent Help Requried with Logic

    Hi All,
    Here is the data
    Country Count
    India 1
    China 10
    USA 8
    Now I want to get the country name with maximum count.
    Can anyone quickly help me on this plz.
    :)

    > Is this forum only for COMPLEX questions?
    Not at all.
    I'm hard on postings that claim they have urgent complex Oracle problems. (it is not acceptable for anyone here to claim they have an urgent problem - truly urgent problems require official Oracle support)
    You barged into a forum. Attempted to jump the queue (so to speak) by trying to grab attention by shouting "urgent problem!! help!!". And then it was not even an Oracle problem!?
    That was a very selfish thing of you to do.

  • CAN ANYONE HELP ME WITH LOGIC EXPRESS 7

    I have just installed logic express 7 on my mac but for some reason none of the MIDI sounds are playing back through my speakers after i have made them in the matrix edit window. i know the program is playing the MIDI sounds because it is showing there is a signal in the tarck mixer window yet on on the transport bar it says there is no MIDI output, does anyone.
    The same problem is occuring in my copy of cubase aswell which leads me to believe that there may be a problem with the MIDI settings on my mac,
    ive tried everything i can think of to get it to work but its no good,
    CAN ANYONE HELP ME
    Much apreciated
    armadacd55

    Tom, some preliminary questions:
    Have you gone through the Audio MIDI setup utility (not in Logic, in /Applications/Utilities) and set up your devices?
    What are you using for an audio interface, a third-party interface (PCI card, USB or Firewire) or the Mac's built-in audio?
    What are you trying to use to generate sound from the MIDI data - a soft-synth, the EXSP24 sample player, a Quicktime instrument, or an external sound module?

Maybe you are looking for

  • How get all child elements from XML

    Hi I have one xml i tried to parse that xml using dom parser and i need to get some child elements using java <Group> <NAME>ABC</NAME> <Age>24</AgeC> ---------some data here...... <Group1> <group1Category> <NAME>ABCTest</NAME> <age>27</Age> ----Some

  • Report generation issue

    what are the diff report generation issues?

  • Use of  BILDSEQUENZ_IDENTIFY Function module

    Hi Friends, what is the use of  BILDSEQUENZ_IDENTIFY Function module.. and when we use ??? Regards,

  • Nano A1320 will not sync,will not hard reset.

    This is not mine, it's my 10 year old daughter's.  I don't know what she has done, she doesn't know, I'm not yet convinced she has done something to contribute to this. When I plug it into the PC on her Win7 user profile, it sort of indicates it is s

  • Quicktime doesnt have enough space to screen record why?

    i am trying to make a screen recording but QuickTime keeps saying that it could not continue and that i must delete some videos/pictures to continue. i have already deleted many and it still says the same thing. please help me i want this to get fixe