Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Random generated variable into Internal Table

Former Member
0 Likes
788

Hi guys

Was wondering if anyone could help me with the following problem I am having.. I'm trying to figure out how to get a single random generated variable into every single field of my structure, and then into my internal table, as abap does not support arrays.

Could anyone try and help me please??

Below is my source:

DATA p_char TYPE c LENGTH 100 VALUE 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@$%&/\()=+-#~<>[]{}'.

DATA : d_charstrn TYPE c LENGTH 100,

           d_len type i.

d_len = STRLEN( p_char ).


TYPES : BEGIN OF ity_s_loadtab,

           field01(100) TYPE c, field02(100) TYPE c, field03(100) TYPE c, field04(100) TYPE c,

           field05(100) TYPE c, field06(100) TYPE c, field07(100) TYPE c, field08(100) TYPE c,

           field09(100) TYPE c, field10(100) TYPE c, field11(100) TYPE c, field12(100) TYPE c,

           field13(100) TYPE c, field14(100) TYPE c, field15(100) TYPE c, field16(100) TYPE c,

           field17(100) TYPE c, field18(100) TYPE c, field19(100) TYPE c, field20(100) TYPE c,

           field21(100) TYPE c, field22(100) TYPE c, field23(100) TYPE c, field24(100) TYPE c,

           field25(100) TYPE c, field26(100) TYPE c, field27(100) TYPE c, field28(100) TYPE c,

           field29(100) TYPE c, field30(100) TYPE c, field31(100) TYPE c, field32(100) TYPE c,

           field33(100) TYPE c, field34(100) TYPE c, field35(100) TYPE c, field36(100) TYPE c,

           field37(100) TYPE c, field38(100) TYPE c, field39(100) TYPE c, field40(100) TYPE c,

           field41(100) TYPE c, field42(100) TYPE c, field43(100) TYPE c, field44(100) TYPE c,

           field45(100) TYPE c, field46(100) TYPE c, field47(100) TYPE c, field48(100) TYPE c,

           field49(100) TYPE c, field50(100) TYPE c,

         END OF ity_s_loadtab.

DATA : it_testtbl TYPE STANDARD TABLE OF ity_s_loadtab,

        wa_testtbl LIKE LINE OF it_testtbl.

PARAMETERS pa_rows TYPE i.


DO pa_rows TIMES.

   DO 50 TIMES.

     CALL FUNCTION 'Z_GENERATE_STRING'

       EXPORTING

         ALPHABET              = p_char

         ALPHABET_LENGTH       = d_len

         FORCE_INIT            = ' '

         OUTPUT_LENGTH         = 100

       IMPORTING

         OUTPUT                = d_charstrn.

     ENDDO.

ENDDO.


Is there maybe an SQL query that I could maybe use or some easier way of doing this??

Thanks in advance.





1 ACCEPTED SOLUTION
Read only

Aashish28
Contributor
0 Likes
613

Hiii,

        See below code - 

TYPES : BEGIN OF ity_s_loadtab,

            field01(100) TYPE c, field02(100) TYPE c, field03(100) TYPE c, field04(100) TYPE c,

            field05(100) TYPE c, field06(100) TYPE c, field07(100) TYPE c, field08(100) TYPE c,

            field09(100) TYPE c, field10(100) TYPE c, field11(100) TYPE c, field12(100) TYPE c,

            field13(100) TYPE c, field14(100) TYPE c, field15(100) TYPE c, field16(100) TYPE c,

            field17(100) TYPE c, field18(100) TYPE c, field19(100) TYPE c, field20(100) TYPE c,

            field21(100) TYPE c, field22(100) TYPE c, field23(100) TYPE c, field24(100) TYPE c,

            field25(100) TYPE c, field26(100) TYPE c, field27(100) TYPE c, field28(100) TYPE c,

            field29(100) TYPE c, field30(100) TYPE c, field31(100) TYPE c, field32(100) TYPE c,

            field33(100) TYPE c, field34(100) TYPE c, field35(100) TYPE c, field36(100) TYPE c,

            field37(100) TYPE c, field38(100) TYPE c, field39(100) TYPE c, field40(100) TYPE c,

            field41(100) TYPE c, field42(100) TYPE c, field43(100) TYPE c, field44(100) TYPE c,

            field45(100) TYPE c, field46(100) TYPE c, field47(100) TYPE c, field48(100) TYPE c,

            field49(100) TYPE c, field50(100) TYPE c,

          END OF ity_s_loadtab.

DATA : it_testtbl TYPE STANDARD TABLE OF ity_s_loadtab,

         wa_testtbl LIKE LINE OF it_testtbl.

DATA p_char TYPE c LENGTH 100 VALUE 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@$%&/\()=+-#~<>[]{}'.

DATA : d_charstrn TYPE c LENGTH 100,

            d_len type i.

d_len = STRLEN( p_char ).

FIELD-SYMBOLS : <fs> TYPE any.

data:
        lo_ran type ref to cl_abap_random_int,
        lv_i   type i,
        lv_seed type i.
     lv_seed = sy-timlo.
     lo_ran = cl_abap_random_int=>create( min = 0 max = d_len seed = lv_seed ).
     do 50 times.
       lv_i = lo_ran->get_next( ).
       write / lv_i.
       WRITE p_char+lv_i(1).
       ASSIGN COMPONENT sy-index OF STRUCTURE wa_testtbl to <fs>.
       <fs> = p_char+lv_i(1).
     enddo.

     APPEND wa_testtbl to it_testtbl .

   Here in your internal table it_testtbl you will get random generated variable in your fields .

Just like your array

3 REPLIES 3
Read only

Former Member
0 Likes
613

You're almost there... Slightly simplified. The "assign component" loops over all the components in your structure. The field symbol is a pointer to that field. Fill it with whatever you want.

DO pa_rows TIMES.

   DO. "or do 50 times...

     ASSIGN COMPONENT sy-index OF STRUCTURE wa_testtbl TO <field>.

     IF sy-subrc = 0.

       <field> = "my random string".

     else.

       exit.

     endif.

   ENDDO.

   APPEND wa_testtbl TO it_testtbl.

ENDDO.

Read only

Aashish28
Contributor
0 Likes
614

Hiii,

        See below code - 

TYPES : BEGIN OF ity_s_loadtab,

            field01(100) TYPE c, field02(100) TYPE c, field03(100) TYPE c, field04(100) TYPE c,

            field05(100) TYPE c, field06(100) TYPE c, field07(100) TYPE c, field08(100) TYPE c,

            field09(100) TYPE c, field10(100) TYPE c, field11(100) TYPE c, field12(100) TYPE c,

            field13(100) TYPE c, field14(100) TYPE c, field15(100) TYPE c, field16(100) TYPE c,

            field17(100) TYPE c, field18(100) TYPE c, field19(100) TYPE c, field20(100) TYPE c,

            field21(100) TYPE c, field22(100) TYPE c, field23(100) TYPE c, field24(100) TYPE c,

            field25(100) TYPE c, field26(100) TYPE c, field27(100) TYPE c, field28(100) TYPE c,

            field29(100) TYPE c, field30(100) TYPE c, field31(100) TYPE c, field32(100) TYPE c,

            field33(100) TYPE c, field34(100) TYPE c, field35(100) TYPE c, field36(100) TYPE c,

            field37(100) TYPE c, field38(100) TYPE c, field39(100) TYPE c, field40(100) TYPE c,

            field41(100) TYPE c, field42(100) TYPE c, field43(100) TYPE c, field44(100) TYPE c,

            field45(100) TYPE c, field46(100) TYPE c, field47(100) TYPE c, field48(100) TYPE c,

            field49(100) TYPE c, field50(100) TYPE c,

          END OF ity_s_loadtab.

DATA : it_testtbl TYPE STANDARD TABLE OF ity_s_loadtab,

         wa_testtbl LIKE LINE OF it_testtbl.

DATA p_char TYPE c LENGTH 100 VALUE 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@$%&/\()=+-#~<>[]{}'.

DATA : d_charstrn TYPE c LENGTH 100,

            d_len type i.

d_len = STRLEN( p_char ).

FIELD-SYMBOLS : <fs> TYPE any.

data:
        lo_ran type ref to cl_abap_random_int,
        lv_i   type i,
        lv_seed type i.
     lv_seed = sy-timlo.
     lo_ran = cl_abap_random_int=>create( min = 0 max = d_len seed = lv_seed ).
     do 50 times.
       lv_i = lo_ran->get_next( ).
       write / lv_i.
       WRITE p_char+lv_i(1).
       ASSIGN COMPONENT sy-index OF STRUCTURE wa_testtbl to <fs>.
       <fs> = p_char+lv_i(1).
     enddo.

     APPEND wa_testtbl to it_testtbl .

   Here in your internal table it_testtbl you will get random generated variable in your fields .

Just like your array

Read only

Former Member
0 Likes
613

Thanks a million guys!! 🙂