About sort report

Hello Experts,
    Can anyone send me sample report example for sorting same description material from any table like makt table so if i give some number range so i can get material of same description. mail me following id.
reward points for useful answer
mail id   "[email protected]"
Thanx and Regards,
Rahul Talele

report z_test.
tables: makt.
select-options: s_matnr for makt-matnr.
data: t_makt type table of makt with header line.
start-of-selection.
select * into table t_makt
  from makt
   where matnr in s_matnr
     and spras eq sy-langu.
sort t_makt by MAKTG.
loop at t_makt.
  write: / t_makt-matnr,
           t_makt-maktx.
endloop.
Is a basic way of doing it.
Regards
Darren

Similar Messages

  • About  Interactve Reports

    Hi Falks,
      If any one knows about interactive report transaction code than plz give reply as well as send  me one step by step example how to create interactive reports.
    mail me on "[email protected]".
    Thanx and regards,
    Rahul Talele

    Hi,
    There is separate Tcode for interactive reports ..
    you can create a basic list report for one table data, and use the commands of intercative reports, like At line-selection, At user-command and write the code to display the another table records .
    see the sample code:
    report zf_rept_debtor_ageing
           no standard page heading
           message-id fb
           line-count 65
           line-size 230.
    Purpose : This ABAP program will fetch the Account Receivables for
               a Customer for the given period and display the due days.
    tables: t001,       " Company Codes
            t005,       " Countries
            skb1,       " GL Master
            kna1.       " Customer Master
    Internal Tables
    Internal table for BSID (Open Items) data
    data: begin of it_bsid occurs 0,
            kunnr like bsid-kunnr,         " Customer Number
            gjahr like bsid-gjahr,         " Fiscal Year
            belnr like bsid-belnr,         " Acc.Document
            buzei like bsid-buzei,         " Item
            budat like bsid-budat,         " Posting Date
            shkzg like bsid-shkzg,         " Dr/Cr Indicator
            dmbtr like bsid-dmbtr,         " Amount(Local Curr)
            wrbtr like bsid-wrbtr,         " Amount(Doc Curr)
            dmbe2 like bsid-dmbe2,         " Amount(USD)
            waers like bsid-waers,         " Currency
            zterm like bsid-zterm,         " Payment Terms
            vbeln like bsid-vbeln,         " Billing Doc
            zfbdt like bsid-zfbdt,         " Baseline Date
            zbd1t like bsid-zbd1t,         " No of days
            hkont like bsid-hkont,         " GL Account
            name1 like kna1-name1,         " Customer Name
            land1 like kna1-land1,         " Country
          end of it_bsid.
    Internal table for BSAD (Closed Items) data
    data: begin of it_bsad occurs 0,
            kunnr like bsad-kunnr,         " Customer Number
            gjahr like bsad-gjahr,         " Fiscal Year
            belnr like bsad-belnr,         " Acc.Document
            buzei like bsad-buzei,         " Item
            budat like bsad-budat,         " Posting Date
            shkzg like bsad-shkzg,         " Dr/Cr Indicator
            dmbtr like bsad-dmbtr,         " Amount(Local Curr)
            wrbtr like bsid-wrbtr,         " Amount(Doc Curr)
            dmbe2 like bsad-dmbe2,         " Amount(USD)
            waers like bsad-waers,         " Currency
            zterm like bsid-zterm,         " Payment Terms
            vbeln like bsid-vbeln,         " Billing Doc
            zfbdt like bsid-zfbdt,         " Baseline Date
            zbd1t like bsid-zbd1t,         " No of days
            hkont like bsid-hkont,         " GL Account
            name1 like kna1-name1,         " Customer Name
            land1 like kna1-land1,         " Country
          end of it_bsad.
    Internal table for Report Output
    data: begin of it_report occurs 0,
            kunnr like bsid-kunnr,         " Customer Number
            belnr like bsid-belnr,         " Acc.Document
            name1 like kna1-name1,         " Customer Name
            land1 like kna1-land1,         " Country
            shkzg like bsid-shkzg,         " Dr/Cr Indicator
            budat like bsid-budat,         " Posting Date
            dmbtr like bsid-dmbtr,         " Amount(Local Curr)
            wrbtr like bsid-wrbtr,         " Amount(Doc Curr)
            dmbe2 like bsid-dmbe2,         " Amount(USD)
            waers like bsid-waers,         " Currency
            due_amnt like bsid-dmbtr,      " Amount(Over Due)
            d_amnt1  like bsid-dmbtr,      " Amount(0-30 Future Due)
            d_amnt2  like bsid-dmbtr,      " Amount(31-60 Future Due)
            d_amnt3  like bsid-dmbtr,      " Amount(61-90 Future Due)
            d_amnt4  like bsid-dmbtr,      " Amount(91-120 Future Due)
            d_amnt5  like bsid-dmbtr,      " Amount(more than 120)
            due_date like bsid-budat,      " Due date
            zterm    like bsid-zterm,      " Payment Terms
            vbeln    like bsid-vbeln,      " Billing Doc
          end of it_report.
           Declaration of Data and Variables
    data: v_days  type i,            " Difference days
          v_waers like t001-waers,   " Co.Code Currency
          v_sum1  like bsid-dmbtr,                              " Totals 1
          v_sum2  like bsid-dmbtr,                              " Totals 2
          v_sum3  like bsid-dmbtr,                              " Totals 3
          v_sum4  like bsid-dmbtr,                              " Totals 4
          v_sum5  like bsid-dmbtr,                              " Totals 5
          v_sum6  like bsid-dmbtr,                              " Totals 6
          v_sum7  like bsid-dmbtr,                              " Totals 7
          v_sum8  like bsid-dmbe2.                              " Totals 8
    Constants
    constants: c_doc_waers(3) value 'USD',
               c_mitkz type c value 'D'.
                       Selection Screen
    selection-screen : begin of block b1 with frame title text-001.
    parameters: p_bukrs like t001-bukrs obligatory.      " Company Code
    select-options:s_kunnr for kna1-kunnr,               " Customer Number
                   s_land1 for t005-land1,               " Country
                   s_hkont for skb1-saknr.               " G/L Account
    parameters: p_date  like sy-datum obligatory.        " Report Date
    selection-screen: end of block b1.
    selection-screen : begin of block b2 with frame title text-002.
    selection-screen begin of line.
    selection-screen comment 2(30) text-003 for field p_rb1.
    parameters: p_rb1 radiobutton group rb.
    selection-screen end of line.
    selection-screen begin of line.
    selection-screen comment 2(30) text-004 for field p_rb2.
    parameters: p_rb2 radiobutton group rb.
    selection-screen end of line.
    selection-screen: end of block b2.
    selection-screen : begin of block b4 with frame.
    selection-screen begin of line.
    selection-screen comment 2(29) text-038 for field p_chk1.
    parameters: p_chk1 as checkbox.
    selection-screen end of line.
    selection-screen: end of block b4.
    selection-screen : begin of block b3 with frame title text-030.
    selection-screen begin of line.
    selection-screen comment 2(30) text-031 for field p_rb3.
    parameters: p_rb3 radiobutton group rb1.
    selection-screen end of line.
    selection-screen begin of line.
    selection-screen comment 2(30) text-032 for field p_rb4.
    parameters: p_rb4 radiobutton group rb1.
    selection-screen end of line.
    selection-screen: end of block b3.
    *********Initialization**********************************************
    initialization.
    At Selection Screen
    at selection-screen.
    Checking for the input values of selection screen.
      perform screen_check.
    Top-Of-Page
    top-of-page.
      if p_rb3 = 'X'.
        if p_chk1 = 'X'.
    Write the Column Headings for detailed report(in Doc Currency)
          perform col_heading2.
        else.
    Write the Column Headings for detailed report
          perform col_heading.
        endif.
      else.
    Write the Column Headings for summary report
        perform col_heading1.
      endif.
    Start-Of-Selection
    start-of-selection.
    Get the Customer Open Items from BSID
      perform get_open_data.
    Get the Customer Closed Items from BSAD
      perform get_close_data.
    Get the data from BSID,BSAD and KNA1 into one int.table
      perform process_data.
    End-Of-Selection
    end-of-selection.
      if it_report[] is initial.
        write : 'No Documents found'(005).
      else.
        if p_rb3 = 'X'.
    Write the Detailed Report
          perform write_report.
        else.
    Write the Summary Report
          perform write_report1.
        endif.
      endif.
    At Line-Selection
    at line-selection.
    When double clicked on BELNR leave to transaction FB03
      perform line_sel.
    *&      Form  SCREEN_CHECK
    Checking for the input values of selection screen
    form screen_check.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select bukrs from t001 up to 1 rows
               into t001-bukrs
               where bukrs = p_bukrs.
        endselect.
        if sy-subrc ne 0.
          message e000 with 'Invalid Company Code'(006).
        endif.
      endif.
    Validation of Customer Number
      clear kna1.
      if not s_kunnr is initial.
        select kunnr from kna1 up to 1 rows
               into kna1-kunnr
               where kunnr in s_kunnr.
        endselect.
        if sy-subrc ne 0.
          message e000 with 'Invalid Customer Number'(007).
        endif.
      endif.
    Validation of Country
      clear t005.
      if not s_land1 is initial.
        select land1 from t005 up to 1 rows
               into t005-land1
               where land1 in s_land1.
        endselect.
        if sy-subrc ne 0.
          message e000 with 'Invalid Country'(036).
        endif.
      endif.
    Validation of GL Account
      clear skb1.
      if not s_hkont is initial.
        select saknr from skb1 up to 1 rows
               into skb1-saknr
               where saknr in s_hkont and
                     mitkz = c_mitkz.
        endselect.
        if sy-subrc ne 0.
          message e000 with 'Invalid GL Reconciliation Account'(037).
        endif.
      endif.
    endform.                    " SCREEN_CHECK
    *&      Form  COL_HEADING
    Write the Column Headings for detailed report
    form col_heading.
      skip .
      write: /88 'DEBTOR AGEING REPORT AS AT:'(019) centered,
             116  p_date  centered, 198 sy-pagno.
      skip .
      write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
      if not s_kunnr is initial.
        if not s_kunnr-high is initial.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3,
                    '-', s_kunnr-high color 3.
        else.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3.
        endif.
      endif.
      if not s_land1 is initial.
        if not s_land1-high is initial.
          write: /2 'Country:'(042),13(4) s_land1-low color 3,
                  '-', s_land1-high color 3.
        else.
          write: /2 'Country:'(042),13(4) s_land1-low color 3.
        endif.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3.
          endif.
        endif.
      else.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3.
          endif.
        endif.
      endif.
      write: 183 'Run Date:'(029), sy-datum.
      format color col_heading.
      write at /1(203) sy-uline .
      write: / sy-vline,  2(10) 'Customer'(008) centered,
            12 sy-vline, 13(30) 'Customer Name'(009),
            43 sy-vline, 44(3)  'Cty'(014) centered,
            47 sy-vline, 48(15) 'Amount'(013) right-justified,
            63 sy-vline, 64(4)  'Curr'(011) centered,
            68 sy-vline, 69(15) 'Overdue'(012) centered,
            84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
           100 sy-vline,101(15) '31 - 60 Days'(028) centered,
           116 sy-vline,117(15) '61 - 90 Days'(021) centered,
           132 sy-vline,133(15) '91 - 120 Days'(022) centered,
           148 sy-vline,149(15) 'Above 120 Days'(023) centered,
           164 sy-vline,165(10) 'Due Date'(024) centered,
           175 sy-vline,176(5)  'PayT'(025) centered,
           181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
           192 sy-vline,193(10) 'Doc.No.'(027) centered,
           203 sy-vline.
      write at /1(203) sy-uline.
      format color off.
    endform.                    " COL_HEADING
    *&      Form  COL_HEADING1
    Write the Column Headings for summary report
    form col_heading1.
      skip .
      write: /54 'DEBTOR AGEING REPORT (SUMMARY) AS AT:'(033) centered,
              92  p_date  centered, 158 sy-pagno.
      skip .
      write: /2 'CoCode:'(016), 13(4) p_bukrs color 3.
      if not s_kunnr is initial.
        if not s_kunnr-high is initial.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3,
                    '-', s_kunnr-high color 3.
        else.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3.
        endif.
      endif.
      if not s_land1 is initial.
        if not s_land1-high is initial.
          write: /2 'Country:'(042),13(4) s_land1-low color 3,
                  '-', s_land1-high color 3.
        else.
          write: /2 'Country:'(042),13(4) s_land1-low color 3.
        endif.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3.
          endif.
        endif.
      else.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3.
          endif.
        endif.
      endif.
      write: 144 'Run Date:'(029), sy-datum.
      format color col_heading.
      write at /1(164) sy-uline .
      write: / sy-vline,  2(10) 'Customer'(008) centered,
            12 sy-vline, 13(30) 'Customer Name'(009),
            43 sy-vline, 44(3)  'Cty'(014) centered,
            47 sy-vline, 48(15) 'Amount'(013) right-justified,
            63 sy-vline, 64(4)  'Curr'(011) centered,
            68 sy-vline, 69(15) 'Overdue'(012) centered,
            84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
           100 sy-vline,101(15) '31 - 60 Days'(028) centered,
           116 sy-vline,117(15) '61 - 90 Days'(021) centered,
           132 sy-vline,133(15) '91 - 120 Days'(022) centered,
           148 sy-vline,149(15) 'Above 120 Days'(023) centered,
           164 sy-vline.
      write at /1(164) sy-uline.
      format color off.
    endform.                    " COL_HEADING1
    *&      Form  COL_HEADING2
    Write the Column Headings for summary report(in Doc Curr)
    form col_heading2.
      skip .
      write: /99 'DEBTOR AGEING REPORT AS AT:'(019) centered,
             127  p_date  centered, 220 sy-pagno.
      skip .
      write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
      if not s_kunnr is initial.
        if not s_kunnr-high is initial.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3,
                    '-', s_kunnr-high color 3.
        else.
          write: 20 'Customer:'(041),33 s_kunnr-low color 3.
        endif.
      endif.
      if not s_land1 is initial.
        if not s_land1-high is initial.
          write: /2 'Country:'(042),13(4) s_land1-low color 3,
                  '-', s_land1-high color 3.
        else.
          write: /2 'Country:'(042),13(4) s_land1-low color 3.
        endif.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: 20 'GL Account:'(043),33 s_hkont-low color 3.
          endif.
        endif.
      else.
        if not s_hkont is initial.
          if not s_hkont-high is initial.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3,
                      '-', s_hkont-high color 3.
          else.
            write: /2 'GL Account:'(043),14 s_hkont-low color 3.
          endif.
        endif.
      endif.
      write: 204 'Run Date:'(029), sy-datum.
      format color col_heading.
      write at /1(225) sy-uline .
      write: / sy-vline,  2(10) 'Customer'(008) centered,
            12 sy-vline, 13(30) 'Customer Name'(009),
            43 sy-vline, 44(3)  'Cty'(014) centered,
            47 sy-vline, 48(15) 'Amount'(013) right-justified,
            63 sy-vline, 64(4)  'Curr'(011) centered,
            68 sy-vline, 69(15) 'Overdue'(012) centered,
            84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
           100 sy-vline,101(15) '31 - 60 Days'(028) centered,
           116 sy-vline,117(15) '61 - 90 Days'(021) centered,
           132 sy-vline,133(15) '91 - 120 Days'(022) centered,
           148 sy-vline,149(15) 'Above 120 Days'(023) centered,
           164 sy-vline,165(10) 'Due Date'(024) centered,
           175 sy-vline,176(5)  'PayT'(025) centered,
           181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
           192 sy-vline,193(10) 'Doc.No.'(027) centered,
           203 sy-vline,204(16) 'Amount(Doc.Curr)'(039),
           220 sy-vline,221(4)  'Curr'(040),
           225 sy-vline.
      write at /1(225) sy-uline.
      format color off.
    endform.                    " COL_HEADING2
    *&      Form  GET_OPEN_DATA
    Get the Customer Open Items from BSID
    form get_open_data.
      select a~kunnr          " Customer Number
             a~gjahr          " Fiscal Year
             a~belnr          " Acc.Document
             a~buzei          " Item
             a~budat          " Posting Date
             a~shkzg          " Dr/Cr Indicator
             a~dmbtr          " Amount(Local Curr)
             a~wrbtr          " Amount(Doc Curr)
             a~dmbe2          " Amount(USD)
             a~waers          " Currency
             a~zterm          " Payment Terms
             a~vbeln          " Billing Doc
             a~zfbdt          " Baseline Date
             a~zbd1t          " No of days
             a~hkont          " GL account
             b~name1          " Customer Name
             b~land1          " Country
         into table it_bsid
         from bsid as a join kna1 as b
         on akunnr = bkunnr
         where a~bukrs = p_bukrs  and
               a~kunnr in s_kunnr and
               a~hkont in s_hkont and
               b~land1 in s_land1 and
               a~budat le p_date.
      sort it_bsid by kunnr gjahr belnr buzei budat.
    endform.                    " GET_OPEN_DATA
    *&      Form  GET_CLOSE_DATA
    Get the Customer closed Items from BSID
    form get_close_data.
      select a~kunnr          " Customer Number
             a~gjahr          " Fiscal Year
             a~belnr          " Acc.Document
             a~buzei          " Item
             a~budat          " Posting Date
             a~shkzg          " Dr/Cr Indicator
             a~dmbtr          " Amount(Local Curr)
             a~wrbtr          " Amount(Doc Curr)
             a~dmbe2          " Amount(USD)
             a~waers          " Currency
             a~zterm          " Payment Terms
             a~vbeln          " Billing Doc
             a~zfbdt          " Baseline Date
             a~zbd1t          " No of days
             a~hkont          " GL account
             b~name1          " Customer Name
             b~land1          " Country
        into table it_bsad
        from bsad as a join kna1 as b
        on akunnr = bkunnr
        where a~bukrs = p_bukrs  and
              a~kunnr in s_kunnr and
              a~hkont in s_hkont and
              b~land1 in s_land1 and
              a~augdt > p_date   and
              a~budat le p_date.
      sort it_bsad by kunnr gjahr belnr buzei budat.
    endform.                    " GET_CLOSE_DATA
    *&      Form  PROCESS_DATA
    Get the data from BSID,BSAD and KNA1 into one int.table
    form process_data.
    *Move the data from BSID to final output int table
      loop at it_bsid.
        move-corresponding it_bsid to it_report.
        it_report-due_date = it_bsid-zfbdt + it_bsid-zbd1t.
        append it_report.
        clear it_report.
      endloop.
    *Move the data from BSAD to final output int table
      loop at it_bsad.
        move-corresponding it_bsad to it_report.
        it_report-due_date = it_bsad-zfbdt + it_bsad-zbd1t.
        append it_report.
        clear it_report.
      endloop.
      sort it_report by kunnr belnr.
      loop at it_report.
        if it_report-shkzg = 'H'.    " Credit
          it_report-dmbtr = it_report-dmbtr * -1.
          it_report-dmbe2 = it_report-dmbe2 * -1.
        endif.
        v_days = it_report-due_date - p_date.
    For Company Code Currency
        if p_rb1 = 'X'.
          if v_days le 0.
            it_report-due_amnt = it_report-dmbtr.
          elseif v_days between 1 and 30.
            it_report-d_amnt1 = it_report-dmbtr.
          elseif v_days between 31 and 60.
            it_report-d_amnt2 = it_report-dmbtr.
          elseif v_days between 61 and 90.
            it_report-d_amnt3 = it_report-dmbtr.
          elseif v_days between 91 and 120.
            it_report-d_amnt4 = it_report-dmbtr.
          elseif v_days > 120.
            it_report-d_amnt5 = it_report-dmbtr.
          endif.
    For Group Currency
        else.
          if v_days le 0.
            it_report-due_amnt = it_report-dmbe2.
          elseif v_days between 1 and 30.
            it_report-d_amnt1 = it_report-dmbe2.
          elseif v_days between 31 and 60.
            it_report-d_amnt2 = it_report-dmbe2.
          elseif v_days between 61 and 90.
            it_report-d_amnt3 = it_report-dmbe2.
          elseif v_days between 91 and 120.
            it_report-d_amnt4 = it_report-dmbe2.
          elseif v_days > 120.
            it_report-d_amnt5 = it_report-dmbe2.
          endif.
        endif.
        modify it_report index sy-tabix.
      endloop.
    endform.                    " PROCESS_DATA
    *&      Form  WRITE_REPORT
    Write the Detailed Report Output
    form write_report.
      clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
             v_sum5,v_sum6,v_sum7,v_sum8.
      loop at it_report.
       at new kunnr.
          read table it_report index sy-tabix.
          write: / sy-vline,  2(10) it_report-kunnr,
                12 sy-vline, 13(30) it_report-name1,
                43 sy-vline, 44(3)  it_report-land1,
                47 sy-vline.
       endat.
        if p_rb1 = 'X'.
          select single waers from t001
               into v_waers where bukrs = p_bukrs.
          write:   1 sy-vline, 12 sy-vline,
                  43 sy-vline,
                  47 sy-vline,
                  48(15) it_report-dmbtr currency it_report-waers,
                  63 sy-vline, 64(4) v_waers,
                  68 sy-vline.
        else.
          write:   1 sy-vline, 12 sy-vline,
                  43 sy-vline,
                  47 sy-vline,
                  48(15) it_report-dmbe2 currency it_report-waers,
                  63 sy-vline,64(4) c_doc_waers,
                  68 sy-vline.
        endif.
        write:  69(15) it_report-due_amnt currency it_report-waers,
                84 sy-vline,
                85(15) it_report-d_amnt1 currency it_report-waers,
               100 sy-vline,
               101(15) it_report-d_amnt2 currency it_report-waers,
               116 sy-vline,
               117(15) it_report-d_amnt3 currency it_report-waers,
               132 sy-vline,
               133(15) it_report-d_amnt4 currency it_report-waers,
               148 sy-vline,
               149(15) it_report-d_amnt5 currency it_report-waers,
               164 sy-vline,165(10) it_report-due_date,
               175 sy-vline,176(5)  it_report-zterm,
               181 sy-vline,182(10) it_report-vbeln,
               192 sy-vline,193(10) it_report-belnr,
               203 sy-vline.
        if p_chk1 = 'X'.
          write: 204(16) it_report-wrbtr currency it_report-waers,
               220 sy-vline, 221(4) it_report-waers,
               225 sy-vline.
        endif.
       new-line.
    Totals for end of each Customer
        at end of kunnr.
          if p_chk1 = 'X'.
            write at /1(225) sy-uline.
          else.
            write at /1(203) sy-uline.
          endif.
          sum.
          format color 4.
          if p_rb1 = 'X'.
            write: /1 sy-vline, 2 'Total:'(015),
                 12 sy-vline,
                 13(10) it_report-kunnr,
                 43 sy-vline,47 sy-vline,
                 48(15) it_report-dmbtr currency it_report-waers,
                 63 sy-vline, 64(3) v_waers,
                 68 sy-vline,
                 69(15) it_report-due_amnt currency it_report-waers,
                 84 sy-vline,
                 85(15) it_report-d_amnt1 currency it_report-waers,
                100 sy-vline,
                101(15) it_report-d_amnt2 currency it_report-waers,
                116 sy-vline,
                117(15) it_report-d_amnt3 currency it_report-waers,
                132 sy-vline,
                133(15) it_report-d_amnt4 currency it_report-waers,
                148 sy-vline,
                149(15) it_report-d_amnt5 currency it_report-waers,
                164 sy-vline, 175 sy-vline,
                181 sy-vline, 192 sy-vline,
                203 sy-vline.
            if p_chk1 = 'X'.
              write: 220 sy-vline, 225 sy-vline.
            endif.
          else.
            write: /1 sy-vline, 2 'Total:'(015),
                   12 sy-vline,
                 13(10) it_report-kunnr,
                 43 sy-vline,
                 47 sy-vline,
                 48(15) it_report-dmbe2 currency it_report-waers,
                 63 sy-vline, 64(3) c_doc_waers,
                 68 sy-vline,
                 69(15) it_report-due_amnt currency it_report-waers,
                 84 sy-vline,
                 85(15) it_report-d_amnt1 currency it_report-waers,
                100 sy-vline,
                101(15) it_report-d_amnt2 currency it_report-waers,
                116 sy-vline,
                117(15) it_report-d_amnt3 currency it_report-waers,
                132 sy-vline,
                133(15) it_report-d_amnt4 currency it_report-waers,
                148 sy-vline,
                149(15) it_report-d_amnt5 currency it_report-waers,
                164 sy-vline, 175 sy-vline,
                181 sy-vline, 192 sy-vline,
                203 sy-vline.
            if p_chk1 = 'X'.
              write: 220 sy-vline, 225 sy-vline.
            endif.
          endif.
          format color off.
          if p_chk1 = 'X'.
            write at /1(225) sy-uline.
          else.
            write at /1(203) sy-uline.
          endif.
        endat.
        v_sum1 = v_sum1 + it_report-dmbtr.
        v_sum2 = v_sum2 + it_report-due_amnt.
        v_sum3 = v_sum3 + it_report-d_amnt1.
        v_sum4 = v_sum4 + it_report-d_amnt2.
        v_sum5 = v_sum5 + it_report-d_amnt3.
        v_sum6 = v_sum6 + it_report-d_amnt4.
        v_sum7 = v_sum7 + it_report-d_amnt5.
        v_sum8 = v_sum8 + it_report-dmbe2.
    Hiding the Acc doc no for interactic screen.
        hide it_report-belnr.
        hide it_report-budat.
        clear:it_report-belnr, it_report-budat.
      endloop.
    Grand Totals for all customers
      format color 3.
      write: /1 sy-vline, 2 'Gr.Total'(034),
                 12 sy-vline,13 'As At:'(035),p_date,
                 43 sy-vline,
                 47 sy-vline.
    For Company Code Currency
      if p_rb1 = 'X'.
        write:  48(15) v_sum1 currency it_report-waers,
                63 sy-vline, 64(4) v_waers,
                68 sy-vline.
    For Group Currency (USD)
      else.
        write:   48(15) v_sum8 currency it_report-waers,
                 63 sy-vline, 64(3) c_doc_waers,
                 68 sy-vline.
      endif.
      write:     69(15) v_sum2 currency it_report-waers,
                 84 sy-vline,
                 85(15) v_sum3 currency it_report-waers,
                100 sy-vline,
                101(15) v_sum4 currency it_report-waers,
                116 sy-vline,
                117(15) v_sum5 currency it_report-waers,
                132 sy-vline,
                133(15) v_sum6 currency it_report-waers,
                148 sy-vline,
                149(15) v_sum7 currency it_report-waers,
                164 sy-vline, 175 sy-vline,
                181 sy-vline, 192 sy-vline,
                203 sy-vline.
      if p_chk1 = 'X'.
        write: 220 sy-vline, 225 sy-vline.
      endif.
      format color off.
      if p_chk1 = 'X'.
        write at /1(225) sy-uline.
      else.
        write at /1(203) sy-uline.
      endif.
    endform.                    " WRITE_REPORT
    *&      Form  WRITE_REPORT1
    Write the Summary Report Output
    form write_report1.
      clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
             v_sum5,v_sum6,v_sum7,v_sum8.
      loop at it_report.
        at new kunnr.
          read table it_report index sy-tabix.
          write: / sy-vline,  2(10) it_report-kunnr,
                12 sy-vline, 13(30) it_report-name1,
                43 sy-vline, 44(3)  it_report-land1,
                47 sy-vline.
        endat.
        at end of kunnr.
          sum.
          if p_rb1 = 'X'.
            select single waers from t001
              into v_waers where bukrs = p_bukrs.
            write: 1 sy-vline, 12 sy-vline,
                 43 sy-vline,  47 sy-vline,
                 48(15) it_report-dmbtr currency it_report-waers,
                 63 sy-vline, 64(4) v_waers,
                 68 sy-vline,
                 69(15) it_report-due_amnt currency it_report-waers,
                 84 sy-vline,
                 85(15) it_report-d_amnt1 currency it_report-waers,
                100 sy-vline,
                101(15) it_report-d_amnt2 currency it_report-waers,
                116 sy-vline,
                117(15) it_report-d_amnt3 currency it_report-waers,
                132 sy-vline,
                133(15) it_report-d_amnt4 currency it_report-waers,
                148 sy-vline,
                149(15) it_report-d_amnt5 currency it_report-waers,
                164 sy-vline.
          else.
            write: 1 sy-vline, 12 sy-vline,
                 43 sy-vline,  47 sy-vline,
                 48(15) it_report-dmbe2 currency it_report-waers,
                 63 sy-vline, 64(4) c_doc_waers,
                 68 sy-vline,
                 69(15) it_report-due_amnt currency it_report-waers,
                 84 sy-vline,
                 85(15) it_report-d_amnt1 currency it_report-waers,
                100 sy-vline,
                101(15) it_report-d_amnt2 currency it_report-waers,
                116 sy-vline,
                117(15) it_report-d_amnt3 currency it_report-waers,
                132 sy-vline,
                133(15) it_report-d_amnt4 currency it_report-waers,
                148 sy-vline,
                149(15) it_report-d_amnt5 currency it_report-waers,
                164 sy-vline.
          endif.
          write at /1(164) sy-uline.
        endat.
    Totals
        v_sum1 = v_sum1 + it_report-dmbtr.
        v_sum2 = v_sum2 + it_report-due_amnt.
        v_sum3 = v_sum3 + it_report-d_amnt1.
        v_sum4 = v_sum4 + it_report-d_amnt2.
        v_sum5 = v_sum5 + it_report-d_amnt3.
        v_sum6 = v_sum6 + it_report-d_amnt4.
        v_sum7 = v_sum7 + it_report-d_amnt5.
        v_sum8 = v_sum8 + it_report-dmbe2.
    Hiding the Acc doc no for interactic screen.
        hide it_report-belnr.
        hide it_report-budat.
        clear: it_report-belnr,
               it_report-budat.
      endloop.
    Calculation of Grand Totals
      format color 3.
      write: /1 sy-vline, 2 'Gr.Total'(034),
                 12 sy-vline,13 'As At:'(035),p_date,
                 43 sy-vline,
                 47 sy-vline.
    For Company Code Currency
      if p_rb1 = 'X'.
        write:  48(15) v_sum1 currency it_report-waers,
                63 sy-vline, 64(4) v_waers,
                68 sy-vline.
    For Group Currency (USD)
      else.
        write:   48(15) v_sum8 currency it_report-waers,
                 63 sy-vline, 64(3) c_doc_waers,
                 68 sy-vline.
      endif.
      write:     69(15) v_sum2 currency it_report-waers,
                 84 sy-vline,
                 85(15) v_sum3 currency it_report-waers,
                100 sy-vline,
                101(15) v_sum4 currency it_report-waers,
                116 sy-vline,
                117(15) v_sum5 currency it_report-waers,
                132 sy-vline,
                133(15) v_sum6 currency it_report-waers,
                148 sy-vline,
                149(15) v_sum7 currency it_report-waers,
                164 sy-vline.
      format color off.
      write at /1(164) sy-uline.
    endform.                    " WRITE_REPORT1
    *&      Form  LINE_SEL
    When double clicked on BELNR leave to transaction FB03
    form line_sel.
      data: lv_field(20),
            lv_value(10),
            lv_date(10),
            lv_gjahr like bsad-gjahr.
      get cursor field lv_field value lv_value.
      if lv_field = 'IT_REPORT-BELNR'.
        if not lv_value is initial.
          read current line field value it_report-budat into lv_date.
          lv_gjahr = lv_date+6(4).
          set parameter id 'BUK' field p_bukrs.
          set parameter id 'GJR' field lv_gjahr.
          set parameter id 'BLN' field lv_value.
          call transaction 'FB03' and skip first screen.
        endif.
      endif.
    endform.                    " LINE_SEL
    reward points if useful
    regards,
    Anji

  • Question about sorted, hashed tables, mindset when using OO concepts...

    Hello experts,
    I just want to make sure if my idea about sorted and hashed table is correct.Please give tips and suggestions.
    In one of my reports, I declared a structure and an itab.
    TYPES: BEGIN OF t_mkpf,
            mblnr           LIKE mkpf-mblnr,
            mjahr           LIKE mkpf-mjahr,
            budat           LIKE mkpf-budat,
            xblnr(10)       TYPE c,
            tcode2          LIKE mkpf-tcode2,
            cputm           LIKE mkpf-cputm,
            blart           LIKE mkpf-blart,
          END OF t_mkpf.
    it_mkpf       TYPE SORTED   TABLE OF t_mkpf WITH HEADER LINE
                                       WITH NON-UNIQUE KEY mblnr mjahr.
    Now, I declared it as a sorted table with a non-unique key MBLNR and MJAHR. Now suppose I have 1000 records in my itab. how will it search for a particular record?
    2. Is it faster than sorting a standard table then reading it using binary search?
    3. How do I use a hashed table effectively? lets say that I want to use hashed type instead of sorted table in my example above.
    4. I am currently practicing ABAP Objects and my problem is that I think my mindset when programming a report is still the 'procedural one'. How do one use ABAP concepts effectively?
    Again, thank you guys and have a nice day!

    Hi Viray,
    <b>The different ways to fill an Internal Table:</b>
    <b>append&sort</b>
    This is the simplest one. I do appends on a standard table and then a sort.
    data: lt_tab type standard table of ...
    do n times.
    ls_line = ...
    append ls_line to lt_tab.
    enddo.
    sort lt_tab.
    The thing here is the fast appends and the slow sort - so this is interesting how this will compare to the following one.
    <b>read binary search & insert index sy-tabix</b>
    In this type I also use a standard table, but I read to find the correct insert index to get a sorted table also.
    data: lt_tab type standard table of ...
    do n times.
    ls_line = ...
    read table lt_tab transporting no fields with key ... binary search.
    if sy-subrc <> 0.
      insert ls_line into lt_tab index sy-tabix.
    endif.
    enddo.
    <b>sorted table with non-unique key</b>
    Here I used a sorted table with a non-unique key and did inserts...
    data: lt_tab type sorted table of ... with non-unique key ...
    do n times.
    ls_line = ...
    insert ls_line into table lt_tab.
    enddo.
    <b>sorted table with unique key</b>
    The coding is the same instead the sorted table is with a unique key.
    data: lt_tab type sorted table of ... with unique key ...
    do n times.
    ls_line = ...
    insert ls_line into table lt_tab.
    enddo.
    <b>hashed table</b>
    The last one is the hashed table (always with unique key).
    data: lt_tab type hashed table of ... with unique key ...
    do n times.
    ls_line = ...
    insert ls_line into table lt_tab.
    enddo.
    <b>You Can use this Program to Test:</b>
    types:
      begin of local_long,
        key1 type char10,
        key2 type char10,
        data1 type char10,
        data2 type char10,
        data3 type i,
        data4 type sydatum,
        data5 type numc10,
        data6 type char32,
        data7 type i,
        data8 type sydatum,
        data9 type numc10,
        dataa type char32,
        datab type i,
        datac type sydatum,
        datad type numc10,
        datae type char32,
        dataf type i,
        datag type sydatum,
        datah type numc10,
        datai type char32,
        dataj type i,
        datak type sydatum,
        datal type numc10,
        datam type char32,
        datan type i,
        datao type sydatum,
        datap type numc10,
        dataq type char32,
        datar type i,
        datas type sydatum,
        datat type numc10,
        datau type char32,
        datav type i,
        dataw type sydatum,
        datax type numc10,
        datay type char32,
        dataz type i,
        data11 type numc10,
        data21 type char32,
        data31 type i,
        data41 type sydatum,
        data51 type numc10,
        data61 type char32,
        data71 type i,
        data81 type sydatum,
        data91 type numc10,
        dataa1 type char32,
        datab1 type i,
        datac1 type sydatum,
        datad1 type numc10,
        datae1 type char32,
        dataf1 type i,
        datag1 type sydatum,
        datah1 type numc10,
        datai1 type char32,
        dataj1 type i,
        datak1 type sydatum,
        datal1 type numc10,
        datam1 type char32,
        datan1 type i,
        datao1 type sydatum,
        datap1 type numc10,
        dataq1 type char32,
        datar1 type i,
        datas1 type sydatum,
        datat1 type numc10,
        datau1 type char32,
        datav1 type i,
        dataw1 type sydatum,
        datax1 type numc10,
        datay1 type char32,
        dataz1 type i,
      end of local_long.
    data:
      ls_long type local_long,
      lt_binary type standard table of local_long,
      lt_sort_u type sorted table of local_long with unique key key1 key2,
      lt_sort_n type sorted table of local_long with non-unique key key1 key2,
      lt_hash_u type hashed table of local_long with unique key key1 key2,
      lt_apsort type standard table of local_long.
    field-symbols:
      <ls_long> type local_long.
    parameters:
      min1 type i default 1,
      max1 type i default 1000,
      min2 type i default 1,
      max2 type i default 1000,
      i1 type i default 100,
      i2 type i default 200,
      i3 type i default 300,
      i4 type i default 400,
      i5 type i default 500,
      i6 type i default 600,
      i7 type i default 700,
      i8 type i default 800,
      i9 type i default 900,
      fax type i default 1000.
    types:
      begin of measure,
        what(10) type c,
        size(6) type c,
        time type i,
        lines type i,
        reads type i,
        readb type i,
        fax_s type i,
        fax_b type i,
        fax(6) type c,
        iter type i,
      end of measure.
    data:
      lt_time type standard table of measure,
      lt_meantimes type standard table of measure,
      ls_time type measure,
      lv_method(7) type c,
      lv_i1 type char10,
      lv_i2 type char10,
      lv_f type f,
      lv_start type i,
      lv_end type i,
      lv_normal type i,
      lv_size type i,
      lv_order type i,
      lo_rnd1 type ref to cl_abap_random_int,
      lo_rnd2 type ref to cl_abap_random_int.
    get run time field lv_start.
    lo_rnd1 = cl_abap_random_int=>create( seed = lv_start min = min1 max = max1 ).
    add 1 to lv_start.
    lo_rnd2 = cl_abap_random_int=>create( seed = lv_start min = min2 max = max2 ).
    ls_time-fax = fax.
    do 5 times.
      do 9 times.
        case sy-index.
          when 1. lv_size = i1.
          when 2. lv_size = i2.
          when 3. lv_size = i3.
          when 4. lv_size = i4.
          when 5. lv_size = i5.
          when 6. lv_size = i6.
          when 7. lv_size = i7.
          when 8. lv_size = i8.
          when 9. lv_size = i9.
        endcase.
        if lv_size > 0.
          ls_time-iter = 1.
          clear lt_apsort.
          ls_time-what = 'APSORT'.
          ls_time-size = lv_size.
          get run time field lv_start.
          do lv_size times.
            perform fill.
            append ls_long to lt_apsort.
          enddo.
          sort lt_apsort by key1 key2.
          get run time field lv_end.
          ls_time-time = lv_end - lv_start.
          ls_time-reads = 0.
          ls_time-readb = 0.
          ls_time-lines = lines( lt_apsort ).
          get run time field lv_start.
          do.
            add 1 to ls_time-readb.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_apsort
              assigning <ls_long>
              with key key1 = lv_i1
                       key2 = lv_i2
              binary search.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do.
            add 1 to ls_time-reads.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_apsort
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_apsort
              assigning <ls_long>
              with key key1 = lv_i1
                       key2 = lv_i2
              binary search.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_b = lv_end - lv_start.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_apsort
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_s = lv_end - lv_start.
          collect ls_time into lt_time.
          clear lt_binary.
          ls_time-what = 'BINARY'.
          ls_time-size = lv_size.
          get run time field lv_start.
          do lv_size times.
            perform fill.
            read table lt_binary
              transporting no fields
              with key key1 = ls_long-key1
                       key2 = ls_long-key2
              binary search.
            if sy-index <> 0.
              insert ls_long into lt_binary index sy-tabix.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-time = lv_end - lv_start.
          ls_time-reads = 0.
          ls_time-readb = 0.
          ls_time-lines = lines( lt_binary ).
          get run time field lv_start.
          do.
            add 1 to ls_time-readb.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_binary
              assigning <ls_long>
              with key key1 = lv_i1
                       key2 = lv_i2
              binary search.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do.
            add 1 to ls_time-reads.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_binary
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_binary
              assigning <ls_long>
              with key key1 = lv_i1
                       key2 = lv_i2
              binary search.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_b = lv_end - lv_start.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_binary
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_s = lv_end - lv_start.
          collect ls_time into lt_time.
          clear lt_sort_n.
          ls_time-what = 'SORT_N'.
          ls_time-size = lv_size.
          get run time field lv_start.
          do lv_size times.
            perform fill.
            insert ls_long into table lt_sort_n.
          enddo.
          get run time field lv_end.
          ls_time-time = lv_end - lv_start.
          ls_time-reads = 0.
          ls_time-readb = 0.
          ls_time-lines = lines( lt_sort_n ).
          get run time field lv_start.
          do.
            add 1 to ls_time-readb.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_n
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do.
            add 1 to ls_time-reads.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_n
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_n
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_b = lv_end - lv_start.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_n
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_s = lv_end - lv_start.
          collect ls_time into lt_time.
          clear lt_sort_u.
          ls_time-what = 'SORT_U'.
          ls_time-size = lv_size.
          get run time field lv_start.
          do lv_size times.
            perform fill.
            insert ls_long into table lt_sort_u.
          enddo.
          get run time field lv_end.
          ls_time-time = lv_end - lv_start.
          ls_time-reads = 0.
          ls_time-readb = 0.
          ls_time-lines = lines( lt_sort_u ).
          get run time field lv_start.
          do.
            add 1 to ls_time-readb.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_u
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do.
            add 1 to ls_time-reads.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_u
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_u
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_b = lv_end - lv_start.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_sort_u
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_s = lv_end - lv_start.
          collect ls_time into lt_time.
          clear lt_hash_u.
          ls_time-what = 'HASH_U'.
          ls_time-size = lv_size.
          get run time field lv_start.
          do lv_size times.
            perform fill.
            insert ls_long into table lt_hash_u.
          enddo.
          get run time field lv_end.
          ls_time-time = lv_end - lv_start.
          ls_time-reads = 0.
          ls_time-readb = 0.
          ls_time-lines = lines( lt_hash_u ).
          get run time field lv_start.
          do.
            add 1 to ls_time-readb.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_hash_u
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do.
            add 1 to ls_time-reads.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_hash_u
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data11 = sy-index.
            endif.
            get run time field lv_end.
            subtract lv_start from lv_end.
            if lv_end >= ls_time-time.
              exit.
            endif.
          enddo.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_hash_u
              assigning <ls_long>
              with table key key1 = lv_i1
                             key2 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_b = lv_end - lv_start.
          get run time field lv_start.
          do fax times.
            lv_i1 = lo_rnd1->get_next( ).
            lv_i2 = lo_rnd2->get_next( ).
            read table lt_hash_u
              assigning <ls_long>
              with key key2 = lv_i1
                       key1 = lv_i2.
            if sy-subrc = 0.
              <ls_long>-data21 = sy-index.
            endif.
          enddo.
          get run time field lv_end.
          ls_time-fax_s = lv_end - lv_start.
          collect ls_time into lt_time.
        endif.
      enddo.
    enddo.
    sort lt_time by what size.
    write: / ' type      | size   | time        | tab-size    | directread  | std read    | time direct | time std read'.
    write: / sy-uline.
    loop at lt_time into ls_time.
      write: / ls_time-what, '|', ls_time-size, '|', ls_time-time, '|', ls_time-lines, '|', ls_time-readb, '|', ls_time-reads, '|', ls_time-fax_b, '|', ls_time-fax_s.
    endloop.
    form fill.
      lv_i1 = lo_rnd1->get_next( ).
      lv_i2 = lo_rnd2->get_next( ).
      ls_long-key1 = lv_i1.
      ls_long-key2 = lv_i2.
      ls_long-data1 = lv_i1.
      ls_long-data2 = lv_i2.
      ls_long-data3 = lv_i1.
      ls_long-data4 = sy-datum + lv_i1.
      ls_long-data5 = lv_i1.
      ls_long-data6 = lv_i1.
      ls_long-data7 = lv_i1.
      ls_long-data8 = sy-datum + lv_i1.
      ls_long-data9 = lv_i1.
      ls_long-dataa = lv_i1.
      ls_long-datab = lv_i1.
      ls_long-datac = sy-datum + lv_i1.
      ls_long-datad = lv_i1.
      ls_long-datae = lv_i1.
      ls_long-dataf = lv_i1.
      ls_long-datag = sy-datum + lv_i1.
      ls_long-datah = lv_i1.
      ls_long-datai = lv_i1.
      ls_long-dataj = lv_i1.
      ls_long-datak = sy-datum + lv_i1.
      ls_long-datal = lv_i1.
      ls_long-datam = lv_i1.
      ls_long-datan = sy-datum + lv_i1.
      ls_long-datao = lv_i1.
      ls_long-datap = lv_i1.
      ls_long-dataq = lv_i1.
      ls_long-datar = sy-datum + lv_i1.
      ls_long-datas = lv_i1.
      ls_long-datat = lv_i1.
      ls_long-datau = lv_i1.
      ls_long-datav = sy-datum + lv_i1.
      ls_long-dataw = lv_i1.
      ls_long-datax = lv_i1.
      ls_long-datay = lv_i1.
      ls_long-dataz = sy-datum + lv_i1.
      ls_long-data11 = lv_i1.
      ls_long-data21 = lv_i1.
      ls_long-data31 = lv_i1.
      ls_long-data41 = sy-datum + lv_i1.
      ls_long-data51 = lv_i1.
      ls_long-data61 = lv_i1.
      ls_long-data71 = lv_i1.
      ls_long-data81 = sy-datum + lv_i1.
      ls_long-data91 = lv_i1.
      ls_long-dataa1 = lv_i1.
      ls_long-datab1 = lv_i1.
      ls_long-datac1 = sy-datum + lv_i1.
      ls_long-datad1 = lv_i1.
      ls_long-datae1 = lv_i1.
      ls_long-dataf1 = lv_i1.
      ls_long-datag1 = sy-datum + lv_i1.
      ls_long-datah1 = lv_i1.
      ls_long-datai1 = lv_i1.
      ls_long-dataj1 = lv_i1.
      ls_long-datak1 = sy-datum + lv_i1.
      ls_long-datal1 = lv_i1.
      ls_long-datam1 = lv_i1.
      ls_long-datan1 = sy-datum + lv_i1.
      ls_long-datao1 = lv_i1.
      ls_long-datap1 = lv_i1.
      ls_long-dataq1 = lv_i1.
      ls_long-datar1 = sy-datum + lv_i1.
      ls_long-datas1 = lv_i1.
      ls_long-datat1 = lv_i1.
      ls_long-datau1 = lv_i1.
      ls_long-datav1 = sy-datum + lv_i1.
      ls_long-dataw1 = lv_i1.
      ls_long-datax1 = lv_i1.
      ls_long-datay1 = lv_i1.
      ls_long-dataz1 = sy-datum + lv_i1.
    endform.".
    Thanks & Regards,
    YJR.

  • Question about sorting files in media library

    Hey,
    I'm Sam Hoste from Belgium and I have a question about sorting music files in my media library in iTunes.
    My music collection mainly exists of complete albums instead of individual songs. The problem is that I can not play the songs of an album in the same order as on the tracklist of the album in the media library of iTunes.
    I also take very good care of the ID3 tags from my mp3-files, but that doesn't help.
    For example, if I had an album with the following tracklist,
    01. Artist - Song 1
    02. Artist - Song 2
    03. Artist - Song 3
    04. Artist ft Otherartist - Song 4
    05. Artist ft Otherartist - Song 5
    06. Artist - Song 6
    07. Artist - Song 7,
    every music file would have an ID3 tag for tracknumber (1, 2, 3, ...), an ID3 tag for artist ("Artist" or "Artist ft Otherartist"), an ID3 tag for title (Song 1, ...) and an ID3 tag for album ("Albumname").
    When I load this album in my media library in iTunes, I cannot get them sorted by album and by tracknumber on that album. When I sort by artist I get this list:
    01. Artist - Song 1
    02. Artist - Song 2
    03. Artist - Song 3
    06. Artist - Song 6
    07. Artist - Song 7
    04. Artist ft Otherartist - Song 4
    05. Artist ft Otherartist - Song 5.
    But that's normal, but even if I sort by album I get the same list:
    01. Artist - Song 1
    02. Artist - Song 2
    03. Artist - Song 3
    06. Artist - Song 6
    07. Artist - Song 7
    04. Artist ft Otherartist - Song 4
    05. Artist ft Otherartist - Song 5.
    So the songs aren't in the same order as they are supposed to be on the CD. And I would really like my albums to play in the same order than on the tracklist on the CD.
    I think the problem is caused by the fact that when you sort by "album" in iTunes media library, iTunes first sorts by albumname, and second by artistname, and third by tracknumber. In stead of sorting first by albumname, and then second by tracknumber in stead of the artist.
    My question: Is there a way to make sure iTunes sorts by albumname, and then by tracknumber in stead of artist, so I can play my albums in the same order as on the CD? Or is there an other solution for this issue?
    Thanks and kind regards,
    Sam Hoste

    See my previous post on Grouping Tracks Into Albums, in particular the topics Use an album friendly view and
    Tracks out of sequence.
    tt2

  • My ipad was stolen today in China today. Any suggestions about police report?

    They haven been connected to a wireless network. Ialready sent the wipe order. Any suggestions about police report with serial ?

    It's doubtful you'll get it back.
    Report to police along with serial number. Change all your passwords.
    These links may be helpful.
    How to Track and Report Stolen iPad
    http://www.ipadastic.com/tutorials/how-to-track-and-report-stolen-ipad
    Reporting a lost or stolen Apple product
    http://support.apple.com/kb/ht2526
    Report Stolen iPad Tips and iPad Theft Prevention
    http://www.stolen-property.com/report-stolen-ipad.php
    How to recover a lost or stolen iPad
    http://ipadhelp.com/ipad-help/how-to-recover-a-lost-or-stolen-ipad/
    How to Find a Stolen iPad
    http://www.ehow.com/how_7586429_stolen-ipad.html
    Apple Product Lost or Stolen
    http://sites.google.com/site/appleclubfhs/support/advice-and-articles/lost-or-st olen
    Oops! iForgot My New iPad On the Plane; Now What?
    http://online.wsj.com/article/SB10001424052702303459004577362194012634000.html
    If you don't know your lost/stolen iPad's serial number, use the instructions below. The S/N is also on the iPad's box.
    How to Find Your iPad Serial Number
    http://www.ipadastic.com/tutorials/how-to-find-your-ipad-serial-number
    iOS: How to find the serial number, IMEI, MEID, CDN, and ICCID number
    http://support.apple.com/kb/HT4061
     Cheers, Tom

  • Document about Xl reporter

    Hi, evrybody!
    Can you share me document about xl reporter if you have
    I need document about get other data, macro,..
    My email:[email protected]
    Thank you vey much!

    Hi Tien,
    Check in the SAP B1 Customer Portal under "Documentation." Choose your release version and look under "SAP Addons." There are several pdf files about XL Reporter, including one about applying macros. Hope that helps!

  • About oracle reports

    I have question about oracle reports. I have 10 reports user has to run everyday. Is there any way user can run all these reports by pressing single button.
    Thanks
    VK

    Hi,
    In any of the report, in the 'Before report Trigger' add the following code to execute any number of reports.
    srw.run_report('report=test1.rdf destype=file desformat=pdf desname=test1.pdf');
    srw.run_report('report=test2.rdf destype=file desformat=pdf desname=test2.pdf');.....
    Like this, you can add any number srw.run_report (this built-in package will run the report with the given parameters), so that you can able to run any number of reports by running a single report.
    Thanks,
    Vidya Viswanathan,
    Reports Development Team.

  • I have had Firefox for years and in the last 2 weeks, I am getting all of these stupid Pop ups about credit reports and some Epic Play thing. How can I make sure I do not get them and why all of a sudden?

    I have had Firefox for years and in the last 2 weeks, I am getting all of these stupid Pop ups about credit reports and some Epic Play thing. How can I make sure I do not get them and why all of a sudden?

    Identify and remove adware/malware
    http://www.thesafemac.com/arg/

  • Hello guys...im john from the phillippines and im just new to sap business one...ryt now my boss tasked me to research about crystal reports and he is making a demand of report for customer recievables ageing.......i find it hard to look at on the part wh

    hello guys...im john from the phillippines and im just new to sap business one...ryt now my boss tasked me to research about crystal reports and he is making a demand of report for customer recievables ageing.......i find it hard to look at on the part which corresponds to value dates of customer like their lapses in payments for the previous months....anyone who could help me?thanks

    hello guys...im john from the phillippines and im just new to sap business one...ryt now my boss tasked me to research about crystal reports and he is making a demand of report for customer recievables ageing.......i find it hard to look at on the part which corresponds to value dates of customer like their lapses in payments for the previous months....anyone who could help me?thanks

  • Sorting report columns for PL/SQL report

    I have created a report of type "Pl/Sql function body returning Sql query" in which I am generating the column names within the query. I would now like to make the first three of these columns sortable. But when I click on the "sort" box for the first three columns, all my column names suddenly switch to "Col 1", "Col 2" etc.
    As you can see by the following snippet from the PL/SQL that generates the query, the column names are data driven, so I'm not in a position to declaratively rename each column. As it happens, the first three columns names are fixed, but all the subsequent column names are data driven.
    Suggestions on how to make the first three columns sortable while preserving the generated column names of the remaining columns?
    thanks
    susan weber
    declare
    query varchar2(4000); -- query
    begin
    query := 'select first_name "First Name", last_name "Last Name", encounter_date "Encounter Date" ';
    for c1 in (select distinct attr_src, attr_code, attr_text, sequence_number from finding_vt)
    loop
    query := query || ', (select val_text from finding_vt vt where vt.encounter_id = e.encounter_id and vt.attr_src = ''' || c1.attr_src || ''' and vt.attr_code = ''' || c1.attr_code || ''' and sequence_number = ' || c1.sequence_number || ') "' || substr(c1.attr_text,0,30) || '"';
    END LOOP;
    query := query || ' from patient pat, encounter e where pat.patient_id = e.patient_id';
    return query;
    end;

    This turns out to be related to the choice of "use generic column names" v. "use query specific column names".
    I had chosen "use generic column names" just to get past the initial creation page. I then debugged the query creation sql, but never changed that setting back to "use query specific column names". The fix is to choose "use query specific column names".

  • Help me about the Report Category !!

    In a ABAP report program's "Attributes", we can set the Logical database (eg. in HR, it's PNP) , and then, we can select the "HR report category", for the report screen category setting.  After we set the Master Data(infotypes), we will get the report with several pushbuttons in the first line, like “Further Selections” "Sort order" ...
    So, my question is if I want to add some items into the "Sort Order" selection screen, how to do that ?
    Thanks a lot
    Tom

    Hi Tom,
    You can create the report category from SE38-> Attributes and then give the LDB name as PNP.
    Now click on the HR report category button and proceed creating the new report category by clicking the create button.
    The report category name should start with 0* or 7*.
    Hope this helps you,
    Regards,
    Subbu.

  • Problem about getting report!

    Hi,all:
    I am trying to get Report which is the query result from the previous canvas, but I don't know how to do it. For example, I put a button called "get transcript" on one canvas, and I set this button's trigger to next block. However, I have no idea about how to attach the previous result to this block. Please help me to solve this problem. Thank you!
    null

    You could try doing it from your purchase history : log into your account on your computer's iTunes via Store > View My Account and you should then see a Purchase History section with a 'see all' link to the right of it ; click on that and you should see a list of your purchases ; find that app and use the 'Report a Problem' link.
    If that doesn't work then try contacting iTunes support : http://www.apple.com/support/itunes/contact/ - click on Express Lane, then iTunes > iTunes Store

  • Is it possible to sort report using parameters?

    Hi,
    I am building a report - which generates select query based on the parameters entered by the user.
    Could you help me with how to sort output with the parameter chosen by the user himself? Thanks,

    I will give you 2 answers since I am not sure exactly how your report runs.
    Lets say your users choose a couple parameters to limit certain columns by in your where clause. In this case, you would want to just create a user parameter, and use that parameter in the where clause.
    select col
    from table
    where job_id = :P_JOB_ID and
    start_date between :P_START_DATE and :P_END_DATEPretty simple. Now here is how I would do it if those are optional parameters, and the user could enter a value, or could leave all blank.
    select col
    from table
    where job_id = nvl(:P_JOB_ID, job_id) and
    start_date between nvl(:P_START_DATE, start_date) and
    nvl(:P_END_DATE, end_date)If its null, it will set the column equal to each other, and will return all the rows (good little trick).
    The other case is if you need a different select/where clause entirely based on what the user sends in. For example, lets say you have 2 entirely different queries based on a certain parameter. Then you'd want to use lexical parameters and an after parameter trigger.
    I think you are looking for the first scenario, so try that and post back if you are looking for something different

  • Quick question about bug reports

    Hi all,
    I was just reading the reporting bug guidelines (https://wiki.archlinux.org/index.php/Re … Guidelines) and was wondering about the section "Upstream or Arch?".
    I'm not an expert on the particular package I want to file a bug against, so I have no idea whether the problem is upstream or Arch. Should I just go ahead anyway? I cannot find a similar bug on any upstream bug trackers.

    eggplantbren wrote:
    Hi all,
    I was just reading the reporting bug guidelines (https://wiki.archlinux.org/index.php/Re … Guidelines) and was wondering about the section "Upstream or Arch?".
    I'm not an expert on the particular package I want to file a bug against, so I have no idea whether the problem is upstream or Arch. Should I just go ahead anyway? I cannot find a similar bug on any upstream bug trackers.
    If you're not sure, try a quick post on the forums.
    In general, once you've used your google-fu you should know whether the problem is distro-specific. Its normally highly unlikely that you'd be the first in the world to run into a real bug (if no-one else has reported anything, its likely user error, especially if you're not using [testing]).

  • Sort report

    Hi,
    I'm using the sort on a report with 5 columns. For each column I've specified
    the sort sequence from 1 to 5. But the last one doesn't work properly. I can click and click and click and click,... :-) on the sort header, nothing changes!
    I've allready tried different combinations of the sort sequence, don't fill in a sort
    sequence, only specify a sequence for 1 field, ...
    What can I do?
    Greets,
    Sofie

    Hi
    I just encountered the same problem , I tried everything and was nearly giving up finding a solution.
    Then I found what was wrong, or it is probrably a bug in HTMLDB, In my Select-query i had two comment lines at the end of the query.
    Select col1, col1
    from tab1
    where ..
    and ...
    -- xxxxx
    -- xxxxx
    when removing these comments the sort works!!!!
    See if you have any comments at the end.
    Regards Evelyn

Maybe you are looking for

  • Clear DNS cache

    How can I clear the DNS cache? When I configure my webserver and change the records, I have to wait the time configured in the ttl of the specific record. I know, that I can change the ttl to a lower value, but the default value is 3 hours, so i have

  • Reg Organisational Structure Creation

    Hi, When Iam trying to  create root Org Unit  in Org Mgmnt Module it is giving the error as "No valid interval found (internal number assignment)". I also tried to maintain the number ranges entries( internal) in spro . I guess I might not be maintai

  • Japanese double byte characters

    Hi all, We have a ECC 6.0 system and we are introducing Japanese markets. When we try to see table KNA1: SE16-->KNA1 and we search a word in Japanese language written in single-byte format, there is no problem, the search returns us the entries. But

  • STWAE-Change a statistics currency in sales document

    Hi, I have 5 Sales Order and 4 Bills with a statistics currency and I need to change this statics currency by another. Someone known if is it possible this change? How? Thanks in advance! XeviG.

  • Getting slower speeds if using Apple Time Capsule?...

    Hi. Have had Infinity2 for a couple of weeks and am happy with the sevice - much faster than my old Virgin cable. When the engineer came he installed the white modem box and connected it to a Home Hub 4. With Virgin I used the Superhub in "modem" mod