首页 > 应用开发 > IT综合 > 用abap实现内表的行列转换-源代码2 (转)
source is as follows
[@more@]****向第一行加一个空数据,有几个不同的num就加几个
RTAB2-NUM = '' .
APPEND RTAB2 TO ITAB2 .
****有几个相同的num就加几个
DO L_NUM TIMES .
RTAB2-NUM = RTAB1-NUM .
APPEND RTAB2 TO ITAB2 .
ENDDO .
ENDAT .
ENDLOOP .
***初始化行列数
L_H = '0' .
L_V = '1' .
L_CY = '0' .
***处理开始了
APPEND RTAB1 TO ITAB1_TEMP .
AT END OF NUM .
****相同的num作为一个组处理
DESCRIBE TABLE ITAB1_TEMP LINES L_X .
DO L_COUN TIMES .
L_INDEX = L_INDEX + 1 .
******准备修改的表数据
READ TABLE ITAB2 ASSIGNING
DO L_X TIMES .
********取得要修改的元素
CONCATENATE '
ASSIGN (L_TEMP) TO
READ TABLE ITAB1_TEMP ASSIGNING
CONCATENATE '
ASSIGN (L_TEMP) TO
********修改完成
********行列累加
L_H = L_H + 1 .
L_V = L_V + 1 .
ENDDO .
******列累加,再初始化,继续处理下一列
L_CY = L_CY + 1 .
L_H = '0' .
L_V = '1' .
ENDDO .
****记得要清空临时表
CLEAR: ITAB1_TEMP[],ITAB1_TEMP .
ENDAT .
**重置列名
L_CY = '0' .
ENDLOOP .
***上面转置好了,下面整理一下表
**取得第一行的数据
READ TABLE ITAB2 ASSIGNING
***如果下面有比第一行多的数据,把多的给第一行
IF SY-TABIX <> 1 AND RTAB2-NUM = '' .
IF
DELETE ITAB2 INDEX SY-TABIX .
ELSE .
DELETE ITAB2 INDEX SY-TABIX .
ENDIF.
ENDIF.
ENDLOOP .
***打印出来看看吧
WRITE: / RTAB2-NUM ,RTAB2-0 ,RTAB2-1,RTAB2-2 ,RTAB2-3,RTAB2-4,RTAB2-5,
RTAB2-6,RTAB2-7,RTAB2-8,RTAB2-9 .
ENDLOOP .
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8214011/viewspace-910675/ ,如需转载,请注明出处,否则将追究法律责任。