当前位置:编程学习 > 网站相关 >>

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.

 

完毕。

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,