Skip to Content
avatar image
Former Member

Dynamic internal table

Hi all,

I have a requirement where in my data in an internal table is in this format...

a b 1 1.1

2 2.1

3 2.3

4 1.2

5 2.5

a c 1 2.3

2 5.4

3 3.4

4 2.7

5 1.5

f g 1 5.6

2 7.5

3 5.9

4 3.4

5 1.2

.........

now i want data in the format...

a f....

b c g.....

1 1.1 2.3 5.6....

2 2.1 5.4 7.5....

3 2.3 3.4 5.9...

4 1.2 2.7 3.4...

5 2.5 1.5 1.2....

is this possible...help needed.

Regards,

Swapnil

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Oct 06, 2007 at 05:37 AM

    HI

    • The dynamic internal table stucture

    DATA: BEGIN OF STRUCT OCCURS 10,

    FILDNAME(8) TYPE C,

    ABPTYPE TYPE C,

    LENGTH TYPE I,

    END OF STRUCT.

    • The dynamic program source table

    DATA: BEGIN OF INCTABL OCCURS 10,

    LINE(72),

    END OF INCTABL.

    DATA: LNG TYPE I, TYPESRTING(6).

    • Sample dynamic internal table stucture

    STRUCT-FILDNAME = 'field1'. STRUCT-ABPTYPE = 'c'. STRUCT-LENGTH = '6'.

    APPEND STRUCT. CLEAR STRUCT.

    STRUCT-FILDNAME = 'field2'. STRUCT-ABPTYPE = 'd'.

    APPEND STRUCT. CLEAR STRUCT.

    STRUCT-FILDNAME = 'field3'. STRUCT-ABPTYPE = 'i'.

    APPEND STRUCT. CLEAR STRUCT.

    • Create the dynamic internal table definition in the dyn. program

    INCTABL-LINE = 'program zdynpro.'. APPEND INCTABL.

    INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.

    LOOP AT STRUCT.

    INCTABL-LINE = STRUCT-FILDNAME.

    LNG = STRLEN( STRUCT-FILDNAME ).

    IF NOT STRUCT-LENGTH IS INITIAL .

    TYPESRTING(1) = '('.

    TYPESRTING+1 = STRUCT-LENGTH.

    TYPESRTING+5 = ')'.

    CONDENSE TYPESRTING NO-GAPS.

    INCTABL-LINE+LNG = TYPESRTING.

    ENDIF.

    INCTABL-LINE+15 = 'type '.

    INCTABL-LINE+21 = STRUCT-ABPTYPE.

    INCTABL-LINE+22 = ','.

    APPEND INCTABL.

    ENDLOOP.

    INCTABL-LINE = 'end of dyntab. '.

    APPEND INCTABL.

    • Create the code processes the dynamic internal table

    INCTABL-LINE = ' '. APPEND INCTABL.

    INCTABL-LINE = 'dyntab-field1 = ''aaaaaa''.'. APPEND INCTABL.

    INCTABL-LINE = 'dyntab-field1 = ''19970814''.'. APPEND INCTABL.

    INCTABL-LINE = 'dyntab-field1 = 1.'. APPEND INCTABL.

    INCTABL-LINE = 'append dyntab.'. APPEND INCTABL.

    INCTABL-LINE = ' '. APPEND INCTABL.

    INCTABL-LINE = 'loop at dyntab.'. APPEND INCTABL.

    INCTABL-LINE = 'write: / dyntab.'. APPEND INCTABL.

    INCTABL-LINE = 'endloop.'. APPEND INCTABL.

    • Create and run the dynamic program

    INSERT REPORT 'zdynpro'(001) FROM INCTABL.

    SUBMIT ZDYNPRO.

    or Just try out this simpler dynamic internal tables

    DATA: itab TYPE STANDARD TABLE OF spfli,

    wa LIKE LINE OF itab.

    DATA: line(72) TYPE c,

    list LIKE TABLE OF line(72).

    START-OF-SELECTION.

    *line = ' CITYFROM CITYTO '.

    line = ' AIRPTO '.

    APPEND line TO list.

    SELECT DISTINCT (list)

    INTO CORRESPONDING FIELDS OF TABLE itab

    FROM spfli.

    IF sy-subrc EQ 0.

    LOOP AT itab INTO wa.

    • WRITE: / wa-cityfrom, wa-cityto.

    WRITE :/ wa-airpto.

    ENDLOOP.

    ENDIF.

    Regards

    Pavan

    Add comment
    10|10000 characters needed characters exceeded