SAP ABAP通过MEMORY直接转换两个变量的值

以前去面试时碰到过这样一道题:

不通过第三个变量如何将 A 和 B 两个变量的值兑换过来?

传统的做法就是定义一个 C

C = A

A = B

B = C

这样A  B  两个值就换过来了

现在不允许定义变量那么怎么办呢?当时这题没做出来。

后来研究了如下解决:

1)通过将变量 A 的值存到内存

2)A = B

3)将内存的值取出来赋给 B 。

是变量也好 ,内表也好,都可以通过这个方式解决。

代码切出来供大家参考。

 

REPORT  ZTEST01.

datatype value 90.
datatype value 80.

write 'a:','b:' /.

export handle1 to memory id 'A1'.
b.

import handle1 from memory id 'A1'.

write 'a:','b:' /.

*-----------------------------------------------

DATABEGIN OF itab1 OCCURS ,
      ff(10,
      END OF itab1.

DATAitab2 LIKE itab1 OCCURS WITH HEADER LINE .

DATAstr1 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 itab1 b str1 TO MEMORY ID 'M2'.
IMPORT itab2 b str2 FROM MEMORY ID 'M2'.

LOOP AT itab2.
  WRITE / itab2-ff.
ENDLOOP.
WRITE / str2.

 

完毕。

你可能感兴趣的:(SAP ABAP通过MEMORY直接转换两个变量的值)