Application Development 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: 

ABAP internal table code. problem

Former Member
0 Kudos

data : begin of idata,

field1 type XX,

field2 type XXX,

field3 type XXXX,

field4 type XXXX

end of idata.

data : begin of idata1,

field1 type XX,

field2 type XXX,

field3 type XXXX,

field4 type XXXX,

field5 type XXXX,

end of idata1.

internal table idata is filled like

idata is filled as

1 2 3 4

1 2 3 6

i want idata1 as

I want it as

1 2 3 4 6

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Have a look at the below code snippet, It gives the output as 12346.

REPORT ztext_editor .

DATA : BEGIN OF idata OCCURS 1,
        field1 TYPE C,
        field2 TYPE C,
        field3 TYPE C,
        field4 TYPE C,
       END OF idata.


DATA : BEGIN OF idata1 OCCURS 1,
        field1 TYPE C,
        field2 TYPE C,
        field3 TYPE C,
        field4 TYPE C,
        field5 TYPE C,
       END OF idata1.



idata-field1 = 1.
idata-field2 = 2.
idata-field3 = 3.
idata-field4 = 4.
append idata.

idata-field1 = 1.
idata-field2 = 2.
idata-field3 = 3.
idata-field4 = 6.
append idata.


LOOP AT IDATA.
IF IDATA1[] IS INITIAL.
APPEND IDATA TO IDATA1.

ELSE.
READ TABLE IDATA1 WITH KEY FIELD1 = IDATA-FIELD1
                           FIELD2 = IDATA-FIELD2
                           FIELD3 = IDATA-FIELD3.

   MOVE IDATA-FIELD4 TO IDATA1-FIELD5.
   APPEND IDATA1.

ENDIF.

ENDLOOP.

DELETE IDATA1 INDEX 1.

LOOP AT IDATA1.
WRITE 😕 IDATA1-FIELD1,
         IDATA1-FIELD2,
         IDATA1-FIELD3,
         IDATA1-FIELD4,
         IDATA1-FIELD5.
ENDLOOP.

Close the thread if it solves your query.

Regards

Abhii

3 REPLIES 3

former_member203501
Active Contributor
0 Kudos

Hi ,

You can compare the first three fields, if they are same then fill the second internal table with the fifth field. move the first record as it is.

Regards,

Venkat Appikonda

Former Member
0 Kudos

Hi,

Take another internal table with single field. Loop at first internal table and append data in each field of first internal table as record in newly created internal table.

Sort the new internal table, loop on it and transfer each record into each field in idata1 internal table.

- Santosh

Former Member
0 Kudos

Hi Have a look at the below code snippet, It gives the output as 12346.

REPORT ztext_editor .

DATA : BEGIN OF idata OCCURS 1,
        field1 TYPE C,
        field2 TYPE C,
        field3 TYPE C,
        field4 TYPE C,
       END OF idata.


DATA : BEGIN OF idata1 OCCURS 1,
        field1 TYPE C,
        field2 TYPE C,
        field3 TYPE C,
        field4 TYPE C,
        field5 TYPE C,
       END OF idata1.



idata-field1 = 1.
idata-field2 = 2.
idata-field3 = 3.
idata-field4 = 4.
append idata.

idata-field1 = 1.
idata-field2 = 2.
idata-field3 = 3.
idata-field4 = 6.
append idata.


LOOP AT IDATA.
IF IDATA1[] IS INITIAL.
APPEND IDATA TO IDATA1.

ELSE.
READ TABLE IDATA1 WITH KEY FIELD1 = IDATA-FIELD1
                           FIELD2 = IDATA-FIELD2
                           FIELD3 = IDATA-FIELD3.

   MOVE IDATA-FIELD4 TO IDATA1-FIELD5.
   APPEND IDATA1.

ENDIF.

ENDLOOP.

DELETE IDATA1 INDEX 1.

LOOP AT IDATA1.
WRITE 😕 IDATA1-FIELD1,
         IDATA1-FIELD2,
         IDATA1-FIELD3,
         IDATA1-FIELD4,
         IDATA1-FIELD5.
ENDLOOP.

Close the thread if it solves your query.

Regards

Abhii