‎2009 Jun 12 10:18 AM
Hi ,
in below intenal table having 4 row in 4 column
-
Sr.No |
| A |
| B |
| C |
-
1 | 1001 |
| 10 |
| 20 | |
2 |
| 1002 |
| 10 |
| 20 |
3 |
| 1003 |
| 10 |
| 20 |
4 |
| 1004 |
| 10 |
| 20 |
-
Now i want in 2 rows with 8 column how to do that ?
-
Sr.No | A |
| B |
| C |
| Sr.No |
| A |
| B | C |
-
|1 | |1001 | |10| |20| 3| |1003| |10| |20
2 |
| 1002 |
| 10 |
| 20 | 4 |
| 1004 |
| 10 |
| 20 |
-
‎2009 Jun 12 10:32 AM
Sory try this
TYPES : BEGIN OF TY_ITAB1,
SN TYPE I,
A TYPE CHAR04,
B TYPE CHAR02,
C TYPE CHAR02,
END OF TY_ITAB1.
TYPES : BEGIN OF TY_ITAB2,
SN1 TYPE I,
A1 TYPE CHAR04,
B1 TYPE CHAR02,
C1 TYPE CHAR02,
SN2 TYPE I,
A2 TYPE CHAR04,
B2 TYPE CHAR02,
C2 TYPE CHAR02,
END OF TY_ITAB2.
DATA: LT_ITAB1 TYPE TABLE OF TY_ITAB1,
LT_ITAB2 TYPE TABLE OF TY_ITAB2,
LS_ITAB1 TYPE TY_ITAB1,
LS_ITAB2 TYPE TY_ITAB2,
LV_MOD TYPE I,
LV_FLG TYPE C.
LS_ITAB1-SN = 1.
LS_ITAB1-A = 1001.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 2.
LS_ITAB1-A = 1002.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 3.
LS_ITAB1-A = 1003.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 4.
LS_ITAB1-A = 1004.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LOOP AT LT_ITAB1 INTO LS_ITAB1.
LV_MOD = SY-TABIX MOD 2.
CASE LV_MOD.
WHEN 1.
LS_ITAB2-SN1 = LS_ITAB1-SN.
LS_ITAB2-A1 = LS_ITAB1-A.
LS_ITAB2-B1 = LS_ITAB1-B.
LS_ITAB2-C1 = LS_ITAB1-C.
LV_FLG = 'X'. "SET FLAG FOR APPEND NEEDED
WHEN 0.
LS_ITAB2-SN2 = LS_ITAB1-SN.
LS_ITAB2-A2 = LS_ITAB1-A.
LS_ITAB2-B2 = LS_ITAB1-B.
LS_ITAB2-C2 = LS_ITAB1-C.
APPEND LS_ITAB2 TO LT_ITAB2.
CLEAR FLG.
ENDCASE.
ENDLOOP.
*******APPEND FOR ODD TABLE LINES*****
IF LV_FLG IS NOT INITIAL.
APPEND LS_ITAB2 TO LT_ITAB2.
ENDIF.
‎2009 Jun 12 10:23 AM
hi,
If in clasical report you can print lik that by preaparing another intrnal table of the structure what you require and display.
Regards,
surendar reddy.
‎2009 Jun 12 10:25 AM
So may we know in what context you are having such requirement?
Regards
Karthik D
‎2009 Jun 12 10:28 AM
want to print this table on smartforms at main window.
this is to save space or Paper.
‎2009 Jun 12 10:36 AM
First create 2 temporary tables having 4 columns, find the total number of records in your itab and divide it by 2. Now use APPEND LINES OF statement with From idx1 to idx2 to transfer the first half values to first tmp table and the remaining values to the second tmp table. Now loop and first tmp table and append the records simultaneously into the final eight column internal table.
Regards
Karthik D
‎2009 Jun 12 10:32 AM
Sory try this
TYPES : BEGIN OF TY_ITAB1,
SN TYPE I,
A TYPE CHAR04,
B TYPE CHAR02,
C TYPE CHAR02,
END OF TY_ITAB1.
TYPES : BEGIN OF TY_ITAB2,
SN1 TYPE I,
A1 TYPE CHAR04,
B1 TYPE CHAR02,
C1 TYPE CHAR02,
SN2 TYPE I,
A2 TYPE CHAR04,
B2 TYPE CHAR02,
C2 TYPE CHAR02,
END OF TY_ITAB2.
DATA: LT_ITAB1 TYPE TABLE OF TY_ITAB1,
LT_ITAB2 TYPE TABLE OF TY_ITAB2,
LS_ITAB1 TYPE TY_ITAB1,
LS_ITAB2 TYPE TY_ITAB2,
LV_MOD TYPE I,
LV_FLG TYPE C.
LS_ITAB1-SN = 1.
LS_ITAB1-A = 1001.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 2.
LS_ITAB1-A = 1002.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 3.
LS_ITAB1-A = 1003.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 4.
LS_ITAB1-A = 1004.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LOOP AT LT_ITAB1 INTO LS_ITAB1.
LV_MOD = SY-TABIX MOD 2.
CASE LV_MOD.
WHEN 1.
LS_ITAB2-SN1 = LS_ITAB1-SN.
LS_ITAB2-A1 = LS_ITAB1-A.
LS_ITAB2-B1 = LS_ITAB1-B.
LS_ITAB2-C1 = LS_ITAB1-C.
LV_FLG = 'X'. "SET FLAG FOR APPEND NEEDED
WHEN 0.
LS_ITAB2-SN2 = LS_ITAB1-SN.
LS_ITAB2-A2 = LS_ITAB1-A.
LS_ITAB2-B2 = LS_ITAB1-B.
LS_ITAB2-C2 = LS_ITAB1-C.
APPEND LS_ITAB2 TO LT_ITAB2.
CLEAR FLG.
ENDCASE.
ENDLOOP.
*******APPEND FOR ODD TABLE LINES*****
IF LV_FLG IS NOT INITIAL.
APPEND LS_ITAB2 TO LT_ITAB2.
ENDIF.
‎2009 Jun 12 10:47 AM
Hi,
Look at this code, if you are looking for same output which u have asked.
report zmp_ldb12.
data: begin of itab occurs 0,
f1 type i,
f2 type i,
f3 type i,
f4 type i,
f5 type i,
f6 type i,
f7 type i,
f8 type i,
end of itab.
data: begin of itab1 occurs 0,
f1 type i,
f2 type i,
f3 type i,
f4 type i,
end of itab1.
data wa1 like itab1.
data int type i.
itab1-f2 = 1001.
itab1-f1 = 1.
do 4 times.
itab1-f3 = 10.
itab1-f4 = 20.
append itab1 to itab1.
itab1-f1 = itab1-f1 + 1.
itab1-f2 = itab1-f2 + 1.
enddo.
loop at itab1 into itab1.
if sy-tabix = 3 or sy-tabix = 4.
exit.
else.
if sy-tabix = 1.
int = 3.
else.
int = 4.
endif.
move itab1 to itab.
read table itab1 into wa1 index int.
itab-f5 = wa1-f1.
itab-f6 = wa1-f2.
itab-f7 = wa1-f3.
itab-f8 = wa1-f4.
append itab.
clear wa1.
endif.
endloop.
Regards.
Thilotham.
‎2009 Jun 12 10:52 AM
thanks to All for quick respose.
Hi GTREN,
You are near to my requirment .
but if records are odd one i.e if records are 3 insted of 4 then its appending only one row .
Not second one ?
‎2009 Jun 12 11:04 AM
Hi
Check how many rows you're elaborating:
TYPES : BEGIN OF TY_ITAB1,
SN TYPE I,
A TYPE CHAR04,
B TYPE CHAR02,
C TYPE CHAR02,
END OF TY_ITAB1.
TYPES : BEGIN OF TY_ITAB2,
SN1 TYPE I,
A1 TYPE CHAR04,
B1 TYPE CHAR02,
C1 TYPE CHAR02,
SN2 TYPE I,
A2 TYPE CHAR04,
B2 TYPE CHAR02,
C2 TYPE CHAR02,
END OF TY_ITAB2.
DATA: LT_ITAB1 TYPE TABLE OF TY_ITAB1,
LT_ITAB2 TYPE TABLE OF TY_ITAB2,
LS_ITAB1 TYPE TY_ITAB1,
LS_ITAB2 TYPE TY_ITAB2,
LV_MOD TYPE I.
DATA: LV_COUNTER, TYPE I,
LV_TOTLINE TYPE I.
LS_ITAB1-SN = 1.
LS_ITAB1-A = 1001.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 2.
LS_ITAB1-A = 1002.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 3.
LS_ITAB1-A = 1003.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 4.
LS_ITAB1-A = 1004.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LOOP AT LT_ITAB1 INTO LS_ITAB1.
LV_COUNTER = SY-TABIX.
LV_MOD = SY-TABIX MOD 2.
CASE LV_MOD.
WHEN 1.
LS_ITAB2-SN1 = LS_ITAB1-SN.
LS_ITAB2-A1 = LS_ITAB1-A.
LS_ITAB2-B1 = LS_ITAB1-B.
LS_ITAB2-C1 = LS_ITAB1-C.
WHEN 0.
LS_ITAB2-SN2 = LS_ITAB1-SN.
LS_ITAB2-A2 = LS_ITAB1-A.
LS_ITAB2-B2 = LS_ITAB1-B.
LS_ITAB2-C2 = LS_ITAB1-C.
APPEND LS_ITAB2 TO LT_ITAB2.
ENDCASE.
ENDLOOP.
LV_MOD = LV_COUNTER MOD 2.
IF LV_MOD = 1.
DESCRIBE TABLE LT_ITAB2 LINES LV_TOTLINE.
DELETE LT_ITAB2 INDEX LV_TOTLINE
ENDIF.Max
‎2009 Jun 12 11:08 AM
hi,
Divide no. of records by 2. suppose u have 201 records in itab1 then mid = 201/ 2 = 100.
atmost itab2 can have 101 records.
Please do changes in my given code with below.
if ( mid mod 2) ne 0.
mid = mid + 1.
endif.
in loop at itab1, write condition if sy-tabix LE mid.
...
...
...
else.
exit.
endif.
int = mid + sy-tabix.
move itab1 to itab.
read table itab1 into wa1 index int.
....
....
clear wa1.
endloop.
Edited by: Kandula Thilotham Reddy on Jun 12, 2009 12:11 PM
Edited by: Kandula Thilotham Reddy on Jun 12, 2009 12:12 PM
‎2009 Jun 12 11:00 AM
Hi,
Please try this code...
lv_coverage_count = 1.
PERFORM write_window_e USING 'SPACE_LINE'.
LOOP AT i_coverage.
IF lv_coverage_count = 1.
gv_coverage1 = i_coverage-text.
lv_coverage_count = lv_coverage_count + 1.
IF sy-tabix = lv_count.
PERFORM write_window_e USING 'ITEM_NM_COVERAGE'.
ENDIF.
ELSEIF lv_coverage_count = 2.
gv_coverage2 = i_coverage-text.
IF z_new_line = 'Y'.
PERFORM write_window_e USING 'ITEM_NM_FIRST_COVERAGE'.
ELSEIF lv_count EQ sy-tabix.
PERFORM write_window_e USING 'ITEM_NM_COVERAGE'.
ELSE.
PERFORM write_window_e USING 'ITEM_NM_COVERAGE'.
ENDIF.
MOVE 'N' TO z_new_line.
CLEAR: lv_column1,lv_column2,wa_text,t_coverage.
CLEAR: gv_coverage1,gv_coverage2.
lv_coverage_count = 1.
ENDIF.
ENDLOOP.
‎2009 Jun 12 11:13 AM
Hi Kelly,
here are the steps that would help achieve ur requirement.. kindly chk
itab type table of work_area (with 4 cols)
itab-final type table of wa_final (with 8 cols)
data: w_lines type i,
w_index type i value 1.
describe table itab lines w_lines.
w_lines = w_lines / 2.
loop at itab into work_area.
if sy-tabix le w_lines.
wa_final-col1 = work_area-col1.
wa_final-col2 = work_area-col2.
wa_final-col13= work_area-col3.
wa_final-col4 = work_area-col4.
append wa_final to itab_final.
else.
clear wa_final.
wa_final-col5 = work_area-col1.
wa_final-col6 = work_area-col2.
wa_final-col7= work_area-col3.
wa_final-col8= work_area-col4.
modify itab_final from wa_final index w_index transporting col5 col6 col7 col8.
add 1 to w_index.
endif.
endloop.
Regards.
‎2009 Jun 12 11:24 AM
Hi Jim,
try your luck with the below code.
DATA: BEGIN OF it_main OCCURS 0,
srno(3) TYPE n,
a(4) TYPE n,
b(2) TYPE n,
c(2) TYPE n,
END OF it_main.
DATA: v_num TYPE sy-tabix,
v_num1 TYPE sy-tabix,
v_num2 TYPE sy-tabix,
v_count type sy-tabix.
DATA: itab1 LIKE it_main OCCURS 0 WITH HEADER LINE,
itab2 LIKE it_main OCCURS 0 WITH HEADER LINE.
it_main-srno = 1.
it_main-a = 1001.
it_main-b = 10.
it_main-c = 20.
APPEND it_main.
it_main-srno = 2.
it_main-a = 1002.
it_main-b = 10.
it_main-c = 20.
APPEND it_main.
it_main-srno = 3.
it_main-a = 1003.
it_main-b = 10.
it_main-c = 20.
APPEND it_main.
it_main-srno = 4.
it_main-a = 1004.
it_main-b = 10.
it_main-c = 20.
APPEND it_main.
DO.
if v_count MOD 4 = 0.
v_num1 = v_count + 1.
else.
v_num1 = v_num1 + 1.
endif.
READ TABLE it_main INDEX v_num1.
IF sy-subrc NE 0.
EXIT.
ELSE.
itab1 = it_main.
APPEND itab1.
v_count = v_count + 1.
ENDIF.
v_num2 = v_num1 + 2.
READ TABLE it_main INDEX v_num2.
IF sy-subrc NE 0.
EXIT.
ELSE.
itab2 = it_main.
APPEND itab2.
v_count = v_count + 1.
ENDIF.
ENDDO.
WRITE:/5 'Srno',
10 'A',
15 'B',
20 'C',
25 'Srno',
30 'A',
35 'B',
40 'C'.
LOOP AT itab1.
v_num = v_num + 1.
READ TABLE itab2 INDEX v_num.
WRITE:/5 itab1-srno,
10 itab1-a,
15 itab1-b,
20 itab1-c,
25 itab2-srno,
30 itab2-a,
35 itab2-b,
40 itab2-c.
ENDLOOP.
Regards,
Kumar Bandanadham
‎2009 Jun 12 11:30 AM
Hi,
Try the below code, may be its easy and efficient
Report zdk_test.
TYPES : BEGIN OF TY_ITAB1,
SN TYPE I,
A TYPE CHAR04,
B TYPE CHAR02,
C TYPE CHAR02,
END OF TY_ITAB1.
TYPES : BEGIN OF TY_ITAB2,
SN1 TYPE I,
A1 TYPE CHAR04,
B1 TYPE CHAR02,
C1 TYPE CHAR02,
SN2 TYPE I,
A2 TYPE CHAR04,
B2 TYPE CHAR02,
C2 TYPE CHAR02,
END OF TY_ITAB2.
DATA: LT_ITAB1 TYPE TABLE OF TY_ITAB1,
LT_ITAB2 TYPE TABLE OF TY_ITAB2,
LS_ITAB1 TYPE TY_ITAB1,
LS_ITAB1_tmp TYPE TY_ITAB1,
LS_ITAB2 TYPE TY_ITAB2,
LV_MOD TYPE I,
LV_FLG TYPE C.
DATA : count TYPE i, count1 TYPE i.
LS_ITAB1-SN = 1.
LS_ITAB1-A = 1001.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 2.
LS_ITAB1-A = 1002.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 3.
LS_ITAB1-A = 1003.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 4.
LS_ITAB1-A = 1004.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
LS_ITAB1-SN = 5.
LS_ITAB1-A = 1005.
LS_ITAB1-B = 10.
LS_ITAB1-C = 20.
APPEND LS_ITAB1 TO LT_ITAB1.
DESCRIBE TABLE LT_ITAB1.
Count = sy-tfill.
Count = Count / 2 .
Count1 = Count + 1.
LOOP AT LT_ITAB1 INTO LS_ITAB1 TO count.
Clear LS_ITAB1_tmp.
READ TABLE LT_ITAB1 INTO LS_ITAB1_tmp INDEX Count1.
LS_ITAB2-SN1 = LS_ITAB1-SN.
LS_ITAB2-A1 = LS_ITAB1-A.
LS_ITAB2-B1 = LS_ITAB1-B.
LS_ITAB2-C1 = LS_ITAB1-C.
LS_ITAB2-SN2 = LS_ITAB1_tmp-SN.
LS_ITAB2-A2 = LS_ITAB1_tmp-A.
LS_ITAB2-B2 = LS_ITAB1_tmp-B.
LS_ITAB2-C2 = LS_ITAB1_tmp-C.
APPEND LS_ITAB2 TO LT_ITAB2.
Count1 = Count1 + 1.
ENDLOOP.Regards
Karthik D
Edited by: Karthik D on Jun 12, 2009 4:00 PM