SAP ABAP通过MEMORY直接转换两个变量的值
以前去面试时碰到过这样一道题:
不通过第三个变量如何将 A 和 B 两个变量的值兑换过来?
传统的做法就是定义一个 C
C = A
A = B
B = C
这样A B 两个值就换过来了
现在不允许定义变量那么怎么办呢?当时这题没做出来。
后来研究了如下解决:
1)通过将变量 A 的值存到内存
2)A = B
3)将内存的值取出来赋给 B 。
是变量也好 ,内表也好,都可以通过这个方式解决。
代码切出来供大家参考。
REPORT ZTEST01.
data: a type i value 90.
data: b type i value 80.
write : 'a:', a ,'b:' , b , /.
export handle1 = a to memory id 'A1'.
a = b.
import handle1 = b from memory id 'A1'.
write : 'a:', a ,'b:' , b , /.
*-----------------------------------------------
DATA: BEGIN OF itab1 OCCURS 0 ,
ff(10) ,
END OF itab1.
DATA: itab2 LIKE itab1 OCCURS 0 WITH HEADER LINE .
DATA: str1 TYPE string ,
str2 TYPE string .
APPEND '111111111' TO itab1.
APPEND '222222222' TO itab1.
str1 = 'sssssssssss'.
EXPORT itab1 TO MEMORY ID 'M1'.
FREE itab1.
IMPORT itab1 FROM MEMORY ID 'M1'.
LOOP AT itab1.
WRITE / itab1-ff.
ENDLOOP.
EXPORT a = itab1 b = str1 TO MEMORY ID 'M2'.
IMPORT a = itab2 b = str2 FROM MEMORY ID 'M2'.
LOOP AT itab2.
WRITE / itab2-ff.
ENDLOOP.
WRITE / str2.
完毕。
补充:综合编程 , 其他综合 ,