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

sorting itabs

Former Member
0 Likes
561

Hi. Could You give me some tip how to solve such problem:

REPORT ZWOP_TEST5 .

DATA: BEGIN OF a OCCURS 0,
        value1 TYPE c,
      END OF a.

DATA: BEGIN OF b OCCURS 0,
        value2 TYPE c,
      END OF b.

TYPES: BEGIN OF _itab.
  INCLUDE STRUCTURE a.
  INCLUDE STRUCTURE b  .
TYPES: END OF _itab.
DATA: itab TYPE STANDARD TABLE OF _itab WITH HEADER LINE.

a-value1 = 'A'. APPEND a.
a-value1 = 'B'. APPEND a.
a-value1 = 'C'. APPEND a.
a-value1 = 'D'. APPEND a.
SORT a BY value1.

b-value2 = 'A'. APPEND b.
b-value2 = 'B'. APPEND b.
b-value2 = 'B'. APPEND b.
b-value2 = 'C'. APPEND b.
SORT b BY value2

So it's

a | b
--|--
A | A
B | B
C | B
D | C

I want itab looks sth like that:

v1|v2
--|--
A | A
B | B
  | B
C | C
D |

Sorry, I hadn't precised my post.

I neet to <b>fill</b> table itab with values from a & b creating 'pairs'.

Message was edited by:

Piotr Wojciechowski

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
533

DATA: BEGIN OF a OCCURS 0,

value1 TYPE c,

END OF a.

DATA: BEGIN OF b OCCURS 0,

value2 TYPE c,

END OF b.

DATA: f TYPE i,

f1 TYPE i.

TYPES: BEGIN OF _itab.

INCLUDE STRUCTURE a.

INCLUDE STRUCTURE b .

TYPES: END OF _itab.

DATA: itab TYPE STANDARD TABLE OF _itab WITH HEADER LINE.

a-value1 = 'A'. APPEND a.

a-value1 = 'B'. APPEND a.

a-value1 = 'C'. APPEND a.

a-value1 = 'D'. APPEND a.

SORT a BY value1.

b-value2 = 'A'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'C'. APPEND b.

SORT b BY value2.

LOOP AT a.

f = 0.

f1 = 0.

LOOP AT b.

CLEAR itab.

IF ( a-value1 = b-value2 ).

f1 = 1.

IF f = 0.

f = 1.

itab-value1 = a-value1.

itab-value2 = b-value2.

ELSE.

itab-value2 = b-value2.

ENDIF.

APPEND itab.

ENDIF.

ENDLOOP.

CLEAR itab.

IF f1 = 0.

itab-value1 = a-value1.

APPEND itab.

ENDIF.

ENDLOOP.

LOOP AT itab.

WRITE:/ itab-value1,itab-value2.

ENDLOOP.

5 REPLIES 5
Read only

Former Member
0 Likes
533

hi,

try like this,

a-value1 = 'A'. APPEND a.

a-value1 = 'B'. APPEND a.

a-value1 = ' '. APPEND a. // OR USE KEYWORD NULL

a-value1 = 'C'. APPEND a.

a-value1 = 'D'. APPEND a.

b-value2 = 'A'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'C'. APPEND b.

b-value2 = ' '. APPEND b.

IF HELPFUL REWARD SOME POINTS.

WITH REGARDS,

SURESH ALURI.

Read only

Former Member
0 Likes
533

Hi,

sort itab v2

regards

Nicole

Read only

0 Likes
533

Sorry, I hadn't precised my post.

I neet to <b>fill</b> table itab with values from a & b creating 'pairs'.

Read only

Former Member
0 Likes
533

Hi,

do like this.

DATA: BEGIN OF a OCCURS 0,

value1 TYPE c,

END OF a.

DATA: BEGIN OF b OCCURS 0,

value2 TYPE c,

END OF b.

TYPES: BEGIN OF _itab.

INCLUDE STRUCTURE a.

INCLUDE STRUCTURE b .

TYPES: END OF _itab.

DATA: itab TYPE STANDARD TABLE OF _itab WITH HEADER LINE.

itab-value1 = 'A'.

itab-value2 = 'A'. APPEND itab.

itab-value1 = 'B'.

itab-value2 = 'B'. APPEND itab.

itab-value1 = 'C'.

itab-value2 = 'B'. APPEND itab.

itab-value1 = 'D'.

itab-value2 = 'C'. APPEND itab.

sort itab by value1 value2 ASCENDING.

LOOP AT itab.

write:/ itab-value1,itab-value2.

ENDLOOP.

<b>reward if helpful</b>

rgds,

bharat.

Read only

Former Member
0 Likes
534

DATA: BEGIN OF a OCCURS 0,

value1 TYPE c,

END OF a.

DATA: BEGIN OF b OCCURS 0,

value2 TYPE c,

END OF b.

DATA: f TYPE i,

f1 TYPE i.

TYPES: BEGIN OF _itab.

INCLUDE STRUCTURE a.

INCLUDE STRUCTURE b .

TYPES: END OF _itab.

DATA: itab TYPE STANDARD TABLE OF _itab WITH HEADER LINE.

a-value1 = 'A'. APPEND a.

a-value1 = 'B'. APPEND a.

a-value1 = 'C'. APPEND a.

a-value1 = 'D'. APPEND a.

SORT a BY value1.

b-value2 = 'A'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'B'. APPEND b.

b-value2 = 'C'. APPEND b.

SORT b BY value2.

LOOP AT a.

f = 0.

f1 = 0.

LOOP AT b.

CLEAR itab.

IF ( a-value1 = b-value2 ).

f1 = 1.

IF f = 0.

f = 1.

itab-value1 = a-value1.

itab-value2 = b-value2.

ELSE.

itab-value2 = b-value2.

ENDIF.

APPEND itab.

ENDIF.

ENDLOOP.

CLEAR itab.

IF f1 = 0.

itab-value1 = a-value1.

APPEND itab.

ENDIF.

ENDLOOP.

LOOP AT itab.

WRITE:/ itab-value1,itab-value2.

ENDLOOP.