Dumb question about monodimensional internal tables

Hi all gurus,
in ABAP/4 it is possible to define an internal table made up by a single field , so that we could consider such a declaration:
DATA: itab TYPE TABLE OF EBELN
as a single-dimension array.
Now, supposing I want to fast access this vector directly with a read table... I don't have an explicit field name to refer to in the WITH KEY clause.
My workaround actually is to define such a vector in this way:
DATA: begin of itab,
            doc_no TYPE EBELN,
            end of itab.
so that a fast READ TABLE statement can be possible specifying the WITH TABLE clause in this way:
READ TABLE itab WITH KEY doc_no = <valuetosearchfor>  .
Anyway, I'm wondering if these ops are possible even in an itab defined in the first form, without the need of defining a specific itab structure. In many situation I find mono-dimensional tables really useful, I'd like to avoid every time an explicit DATA type def.

Hello,
I dont know if this is what you are looking for. You can use the addition:
... WITH TABLE KEY [keyname COMPONENTS] ...
SAp documentation also adds:
The pseudo component table_line can be specified as a component for tables with an unstructured row type, if their whole table entry is defined as a table key.
For more details on psuedo components read this : [http://help.sap.com/abapdocu_70/en/ABENITAB_COMPONENTS.htm|http://help.sap.com/abapdocu_70/en/ABENITAB_COMPONENTS.htm]
Hope this helps.
BR,
Suhas

Similar Messages

  • Dumb question about user_sdo_geom_metadata DIMINFO entries

    I'm sure that this is a dumb question!
    I create a new entry in user_sdo_geom_metadata as follows...
    INSERT INTO USER_SDO_GEOM_METADATA
    VALUES ( 'PR_A', 'GEOM',
    MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('X',190000.0,640000.0, 0.05),
    MDSYS.SDO_DIM_ELEMENT('Y',120000.0,680000.0, 0.05)
    NULL );
    But when I select the DIMINFO from the table...
    SQL> select diminfo from user_sdo_geom_metadata a where table_name = 'PR_A';
    DIMINFO(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOLERANCE)
    SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 190000, 640000, 0), SDO_DIM_ELEMENT('Y', 1200
    00, 680000, 0))
    The sdo_dim_element and sdo_tolerance
    elements show no decimal places.
    Is this because I have not set some
    display number format option in SQLPLUS
    or for some other reason?
    regards
    Simon

    Simon,
    If you are using an old sqlplus client
    (815) then you won't be able to see the decimal places in the diminfo object.
    But if you hace a newer (816/817) sqlplus
    client you should be able to see the decimal places.
    If you are not seeing them in these clients
    then there might be some format paramter set
    to show numbers without decimals.
    You can do a
    show numformat
    in sqlplus to see if there is any format set for that paramter.
    null

  • 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.

  • Maybe a dumb question, about which power connectors to use, but....

    This may sound like an incredibly dumb question, but here goes anyway....
    I upgraded my system a few weeks ago, and will be slapping in a new ATI X850 Pro AGP card in a few days.  My current graphics card is a p.o.s. Radeon 9550, so it doesn't have its own power connector or even a fan.  My PSU is a dual-rail Antec model, and I'm wondering if it should matter any about how many or which devices I have connected to each power cable set.  My psu came with cables to attach, only 2 of the 4 though are the 4-pin molex - the other 2 are pci-e power connectors I believe.  Should it make a difference which or how many devices I connect to each cable?  For ease of plugging in, I believe my DVDRW and CDRom are using 1 cable, and my ide drive and floppy are using the other cable. Also, I have a pci fan and a case fan running off 1 or the other.  I'm likely to jump the power cable for the video card off the one the hard drive is using, unless someone has some suggestion to offer to the contrary.
    If it makes a difference, can anyone recommend how they would have them connect?
    My list of devices to plug in would be:
    1)IDE HDD
    2)Floppy
    3)CDRom
    4)DVDRW
    5)Case Fan
    6)PCI Fan
    7)Video Card
    Thanks for any thoughts!  SAB - you seem to be the man on builds.....any ideas? 

    Well, I put the new card in and connected it on a cable with the optical drives.  Also, I had unwittingly connected my cdrom on the same ide channel as my hdd    , so I changed that so both optical drives are on the secondary ide.
    So far, so good.  3dMark03 jumped up from 3300 with an overclocked Radeon 9550 to 10570 with the stock Radeon 850 Pro 
    I wish I could find some local source to purchase additional molex cords for my Antec SmartPower 2.0 psu, though - I've got 2 more 'outlets' just sitting there on the psu doing nothing, because the other cables are for pci-e, and I'm not using pci-e......  If I could buy some additional molex cables to plug in like the ones that came with it, I could have the vid card on its own cable....

  • A dumb question about wifi...

    I'm not as 'literate' as some are when it comes to computer technology...but here is the question...If I walk into a place that has wifi and my iphone is set with wifi ON, how will I know if there is a charge for using the wifi? Will my iphone automatically kick into the wifi or will there appear an invitation to pay a fee to connect...and how do you pay and do you have to have a password and if so, how do you get that? I know....dumb question...Thanks.

    Not a dumb question at all.
    First of all, set your iPhone up like this:
    1) Go to Settings on the main screen (looks like gears)
    2) Click on "Wi-Fi" (second option from the top)
    3) At the bottom of this page (Which should say "Wi-Fi Networks" at the top) turn "Ask to Join Networks" to the "ON" position.
    Now when you walk into a place that has Wi-Fi, your iPhone will display a little window that asks you whether you want to join the network or not.
    In some places, you may even see a list of more than one Wi-Fi network to join. This is quite common in New York City. The reason is because so many people have Wi-Fi in there apartments, and they all live so close together, that sometime your iPhone can detect multiple networks. The coffee shop near my apartment has their own network, but I can also connect to the Wi-Fi network in my apartment because I only live about 50 feet away.
    Anyway, when you see the list of Networks to join, you may notice a little padlock symbol next to some of them. This means these are closed networks that require a password to connect to. (My network is "Closed", ie requires a password so that everyone in the coffee shop next door doesn't use my internet).
    Networks that DO NOT have the little lock symbol are "Open" which means you can join them without a password. But there is a catch... A lot of coffee shops have open networks, but as soon as you try to browse the web, they redirect your browser to their own page, no matter what web address you enter. Basically, they are letting you connect to their network without a password, but not letting you browse the internet without giving them some money.
    So (as the previous poster said) the page that the coffee shops redirects you to, usually has instructions, and of course a place to put in a credit card. Once you do all that, then you can browse the internet without getting redirected to their little payment page. Its sort of confusing because you don't need a password to connect to their "open" network, but you do need one to browse any web pages. How you get the password differs from coffee shop to coffee shop, but usually they give it to you right inside your web browser once you give them your credit card number.
    T-Mobile provides wireless for Starbucks (at least in a lot of places they do). So once you have an account with t-mobile, you can use it in any starbucks or "T-mobile hotspot"
    Now this all sounds kind of complicated, but more and more these days, you can just walk into a place, find an open network (one without a lock next to it) and start browsing without being redirected or dealing with credit cards. Basically these places are providing free internet to try to attract customers.
    Good luck
    P.S. Wi-Fi eats up battery life. If you aren't going to be using it to browse web pages, you can go into settings, then Wi-Fi, and turn Wi-Fi off. This will save you battery life, but you have to remember to turn it back on. Even without Wi-Fi on, you can still browse the internet if you see a little "E" at the top of your screen. The E stands for the AT&Ts Edge network, which isn't as fast as Wi-Fi, but covers pretty much everywhere that your phone can get a signal.
    Message was edited by: erik graham

  • Question on Dynamic Internal Table creation

    Good day everyone.
    I would like to ask if it is possible to just add several fields to an existing internal table to make it dynamic? if possible, does anyone have a sample program? thanks a lot!

    Hi Christian,
    Refer the following code. It may help you.
    Reward points if it helps.
    REPORT ZDSAP .
    DATA: d_ref TYPE REF TO data,
    d_ref2 TYPE REF TO data ,
    i_alv_cat TYPE TABLE OF lvc_s_fcat,
    ls_alv_cat LIKE LINE OF i_alv_cat.
    TYPES tabname LIKE dcobjdef-name .
    parameter: p_tablen type tabname.
    data: begin of itab occurs 0.
    INCLUDE STRUCTURE dntab.
    data: end of itab.
    FIELD-SYMBOLS : <F_FS> TYPE table,
    <F_FS1> TYPE TABLE,
    <F_FS2> TYPE ANY,
    <F_FS3> TYPE TABLE.
    REFRESH itab.
    CALL FUNCTION 'NAMETAB_GET'
    EXPORTING
    langu = sy-langu
    tabname = p_tablen
    TABLES
    nametab = itab
    EXCEPTIONS
    no_texts_found = 1.
    LOOP AT itab .
    ls_alv_cat-fieldname = itab-fieldname.
    ls_alv_cat-ref_table = p_tablen.
    ls_alv_cat-ref_field = itab-fieldname.
    APPEND ls_alv_cat TO i_alv_cat.
    ENDLOOP.
    * internal table build
    CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING it_fieldcatalog = i_alv_cat
    IMPORTING ep_table = d_ref .
    ASSIGN d_ref->* TO <F_FS>.
    SELECT * FROM (p_tablen) INTO CORRESPONDING FIELDS OF TABLE <F_FS>.
    LOOP AT <F_FS> ASSIGNING <F_FS2>.
    *your code goes here.
    ENDLOOP.

  • Dumb Question about multiple BSSIDs

    This is probably a dumb question, but enquiring minds want to know...
    When using Yosemite's built-in Wireless Diagnostics scan I see many unique WiFi BSSIDs (MAC addresses) associated with my Time Capsule: 5 for my Guest Network and 6 for my "main" network. I see that not all have the same 802.11 protocol, but not all have unique 802.11 protocols. Also I see my "main" network is the 802.11ac network.
    So my questions are:
    - Why are there so many different BSSIDs and how should I interpret them?
    - Which of these BSSIDs are "relevant" that I should pay attention to?
    Thanks,
    Kevin

    Why are there so many different BSSIDs and how should I interpret them?
    The 5 GHz band on the main network is one unique BSSID
    The 2.4 GHz band on the main network is one unique BSSID
    If you have the Guest Network setup......
    The 5 GHz band on the guest network is one unique BSSID
    The 2.4 GHz band on the guest network is one unique BSSID
    If you have multiple AirPort routers, repeat the information above for each router.
    Which of these BSSIDs are "relevant" that I should pay attention to?
    Personally, I pay no attention to this, but some users place great importance on this.
    The BSSID tells you which AirPort.....if you have multiple AirPorts....and which band....2.4 GHz or 5 GHz.....that you are connected to at the current time....as well as whether you are connected to the "main" network, or the "guest" network.....if you have enabled the guest function.

  • About finding internal tables to manage screen changes

    Dear experts,
    I am working to enhance ME51 ME52 in order to allow storing of some customer fields in
    screen 111 using MEREQ001.
    How can i know which internal table i should use in order to define the screen fields in screen painter
    ex in Name what i will give as <internaltable>-<fieldname>.How can i know in which structure data is going.
    Regards,
    Aditya Sharma

    Try this :
    1-Re: enhancements MEREQ001 in purchase requisition
    2-http://sap.niraj.tripod.com/id63.html
    Regards
    Neha

  • Dumb question about browser dectection

    I have a web application that looks awesome in IE but in Firefox it looks clunky and blocky. What I need to perform is a validation to see what browser the client is using. I have done this before on simple html pages javascript browser sniffing. Well it seems that I can't for the life of me to be able to get this working in Creator.
    My web project is a Sun Creator Web application. My OS is Windows
    Does anyone have any idea or references that you could supply to me?
    The following code works in an html environment but in a jsp I cant get the different style sheets to work.
    document.write("<link id="link1" rel="stylesheet" type="text/css" href="/WebDemoExtractor/resources/introductionFireFox.css" /> ");
    U jave tried many variations of the following
    document.write("<ui:link binding='#{introduction.link2}' id='link2' url='/resources/introductionFireFox.css'/>")
    I have tried performing many variations with the the above and I have had no success.
    Is it even possible to perform this function??
    Thank you

    jackiepanpan wrote:
    Not a dumb question at all.
    I think you mean how is it possible to view YouTube videos in Safari on iPad, right?
    Basically, YouTube senses the browser you're using. Because Safari on iPad doesn't support Flash, YouTube delivers the movie in a format the iPad can play (like H.264, as a previous post mentioned). This happens with YouTube videos embedded on other web sites, too.
    I hope this helps.
    I was in an Apple Store a few days ago, and a teenage kid really wanted an iPad. His dad said, "but it doesn't play flash, so you won't get to see YouTube videos that you love." Kid said, something expletive deleted.
    The son then picked up the iPad, and he clicked on the YouTube icon. Walked out of the store with it. Sales guy and I laughed. Made my day.

  • Dumb question about cycling a battery. Sorry!

    I just received by new mac book pro replacement battery today and I have some questions regarding it. First of all, my original battery lasted 2 yrs, 2 mos. I purchased another apple battery for my 15 inch mac book pro (computer originally purch. Aug. 2007). I've seen on these boards that I'm supposed to "cycle" the battery once a week to get the maximum life out of it. I think a cycle means using the battery until it's power is used up and then charge up to 100% again. Is that right? Anyway, my question is, "What is the proper care for this new battery? Does it damage it to have it plugged in when it is fully charged? Or should I always keep it unplugged and use the battery until it runs out and then charge it again? And what does it mean to cycle it once a week, if I'm already using the battery and recharging it when needed?" Sorry if these are dumb questions. I'm not really computer savvy! Thanks.

    You should use the battery for a while every day but not drain it right down, before re-connecting the power and re-charging it to 95%+ this is not a complete cycle but partial/normal cycling.
    _Every couple of months_ you should re-calibrate the battery which means you keep using it until it goes into emergency sleep itself (you will see a warning then 5 minutes later it will go off by itself) and then _leave it in this state for at least 5 hours_ before you re-connect the power supply and fully charge it (without unplugging) - this is a proper re-calibration.

  • Questions about database application tables connector

    Hi all,
    I need to manage with OIM several databases (each one with its custom tables).
    Also, one of them will be my trusted target on the initial load of users. The structure of our tables is not similar to the included in the example.
    The documentation explains how the OraAppX.xml could be modified but it doesn't speak about relations with "DBTable_nonTrusted.xml" and/or "DBTable_trusted.xml" For example, if I don't have a column called USR_COMM_LANG, could I replace this column name for another that I have in my database ? And what about the references on the "DBTable_nonTrusted.xml" file. Connector doc doesn't explain how references to that field (USR_COMM_LANG---xel_usr_comm_lang) are managed by the connector and if the normal working of the connector could be affected if the name of a variable is changed in the xml conf file.
    It could be that adapters of this connector were hardcoded with the referece to xel_usr_comm_lang (???) .
    The connector documentation includes a section titled "Adding Custom Database Columns for Provisioning and Reconciliation". The first impression reading this document is that it is possible to extend the predefined table rather than create and define a new structure of table.
    Has anyone rebuilt the "DBTable_nonTrusted.xml", "DBTable_trusted.xml" and "OraAppX.xml" files changing all default variables in order to manage a customized table? .
    Many thanks in advance,
    Claudia

    Hi Claudia,
    1) Yes, you must replace the column names in the "column" tag on your XML file for the column names that you have in your database tables. Also, remember that you need to configure the other parameters (like data_type, data_typ_size, etc) according to your database table.
    2) The "xel_data_source" parameter is the attribute name that will be recognized by the OIM and they can be mapped to a form field (UD_DBAPP_XXXX) in your process definition in OIM Design Console.
    3) You can customize your Database Application Tables connector for provisioning as you wish, but some issues exists. In the Known Issues section of the documentation you can see that this connector doesn't work for more than two tables.
    4) To customize your Database Application Tables for Trusted Recon, there are other restrictions because OIM users have some required fields that must be filled to create a user successfully.
    Hope that helps, and please let me know if you have more questions.
    Regards.

  • BRF+ - NW 7.01 - questions about a decision table

    In my testcase I have set up a decision table with multiple columns. As long as the number of rows is low it is easy to maintain. But we are looking at the possibility to use this kind of business rules in our current project, and then it would end up in at least 1000 or more rows.
    Is there an easy, user friendly way to let the business users maintain such a decision table ?
    Do you need to activate this decision table every time something is changed ?Is it possible to make this decision table local and the rest of the parts (application, data objects, function) transportable ? How can you deal with such a situation in the best way ?
    Is there a query / filter functionality to query a decision table ?
    Best regards,
    Elly van de Wouw
    IT - IFF

    Hi,
    You cannot use such big decision tables in NW 701 but only in NW 702. The reason is a change in the internal data model.
    In NW 701 you will run into timeouts.
    I did some internal testing in our development systems.
    1. programmatically create a decision table with many rows (10 columns)
    2. activate and save
    3. execute it (includes code generation)
    In NW 701 I did achieve around 800 rows and then I had a timeout. I hav to admit the system is also quite poor.
    In NW 702 it took about 100 seconds. In NW 702 you also can maintain the decision table entries in MS Excel and upload into the table.
    You need to activate the changes so that they are used for rules execution. As of NW 702 you further have possibilities to combine local and transported content.
    BR,
    Carsten

  • Questions about authorizations of tables/change requests/badis/locks/lang

    Hi ,
    Few questions I have not been able to find out .
    1) HOw can we ensure that every time we do any change in a table including adding/changing content a change request is generated .Basically to ensure any changes being done are being stored in  a change request .
    2)How to give authorizations to/for a database table ?
    3)can/how we add water marks in scripts and smartforms ?
    4) Can we create and place our own BADIs in SAP standard code?
    5)different LOCK types/categories with clear difference (not the standard SAP help please..)
    6) tips on handling two table controls on one screen.
    7) WHat are the things required if we want to use objects(scripts,texts,smartforms) in different languages ?
    8)multilingual scripts ?
    9) how to have a search help in module pool without using Process on value request ?
    Moderator message - Please - one question per thread and please ask a specific question - post locked
    Edited by: Rob Burbank on Dec 3, 2009 4:29 PM

    FSKB     G/L Account Posting
    this transaction is not working

  • ICR Process 003 - question about data selection (table FBICRC003A)

    Hello, I am implementing ICR process 003. We are doing several test and we I have some questions that I hope you can help me:
    1 - If I run transaction FBICS3 - Customer/Vendor(  Select Documents) and then FBICA3 - Customer/Vendor (Document Assignment ) several times (the same selection criteria) will the same documents be selected redundantly and will be stored redundantly in table FBICRC003A? I expected that this will not happen but It seems to happen in my test environment. (?)
    2- If I need to delete the data stored in ICR '003' functionality I need to use transaction GCDE. The problem as I am using ledger '0L' for '003' process I cannot "delete data of one ledger" functionality -that allows to set selection data- and I have to "delete the data of an entire data group" that deletes all data stored in FBICRC003A & FBICRC003T tables. Should I set another ledger for '003' process in order to delete data using selection criteria? Is it recommended to not to use '0L' and create a new one?
    I have read in reference documentation that "is not necessary to set up a SL", but since all my productive companies are running in the same client that is the ICR cliente I am wondering if could be better to create and set a SL.
    Thanks in advance
    Rafael Barreda
    Edited by: Rafael Barreda on Sep 14, 2009 1:27 PM

    Hi Ralph,
    we have created a RFC in order to get data from client B to client A (where ICR system is placed). The summary is:
    I need to import vendors/customer data from Client B that belongs to a certain company code "0001". The company is called "X" in both clients A & B although it only exists as a company code (FI) in Client B and just as a company (and trading partner) in client A.
    Client A:
    1- have set company "0001" as a "Company to be reconciled" at FBIC032:
    RFC destination = ""
    RFC destination for data selection = "ZRFC0001"
    Local company= ""
    Data Source="Documents of Current Process"
    Separate Selection Process= "X"
    Data Transfer Type="Asynchronous via Direct RFC Connection"
    Sender field for reference number = "XBLNR"
    Client B:
    1- I have created the companies (V_T880) that I will need in order to inform trading partner on vendor's master data.
    2- I have assigned company code '0001' to company "X"
    3- I have assigned trading partners created on step 1 to vendors
    4- I have post few FI documents with trading partners informed.
    Then I run FBICS3 - Customer/Vendor: Select Documents in background but the programs takes a lot of time and do not select any document.
    Do you think that I am missing something?
    Thanks very much in advance.

  • Dumb question about E messages generated in user exits called from dialogs

    After a user enters goods receipt info in MIGO and hits POST, there is a user exit (EXIT_SAPLIE01_007) which receives a copy of the goods receipt table (xmseg) from MIGO and lets you do whatever you want before the MIGO update task is called.  In other words, you're still in the MIGO dialog process.
    I have successfully used this exit before to pop an editable ALV that lets the user enter custom data per line item, and then store this data in memory so it can be accessed in MB_DOCUMENT_BADI or in the equivalent XMBC exit (enhancement MB_CF001).
    But here's my question.
    Suppose I generate an "E" message in EXIT_SAPLIE01_007. 
    Will this stop the MIGO "POST" so that the update task isn't called?
    And will the text of the "E" message be displayed at the bottom of the main MIGO screen (the one you hit "POST" from) ????
    Edited by: David Halitsky on Feb 21, 2008 9:03 PM
    Edited by: David Halitsky on Feb 21, 2008 9:04 PM

    Hi David,
    it seems that you will get it:
    E in Status bar
    +behaviour:     +
    PAI processing is terminated, and control returns to the current screen. All of the screen fields for which there is a FIELD or CHAIN statement are ready for input. The user must enter a new value. The system then restarts PAI processing for the screen using the new values. Error messages are not possible in POH or POV processing. Instead, a runtime error occurs.
    according to help [http://help.sap.com/saphelp_nw70/helpdata/en/9f/dbaabc35c111d1829f0000e829fbfe/frameset.htm|http://help.sap.com/saphelp_nw70/helpdata/en/9f/dbaabc35c111d1829f0000e829fbfe/frameset.htm]
    best regards,
    Wojciech

Maybe you are looking for


HashFlare