ABAP 程序/接口调用其他程序的数据详解编程语言

在ABAP遇到的业务场景中,可能会遇到一种情况,需要调用其他报表的数据来发送或者二次加工,这个时候又不想对源程序做大的改动、有以下几种思路解决。

1.修改源程序,将需要展示的数据存储到DB中,然后主程序再从DB中读取;(增加存储开销)

2.Submit配合EXPORT/IMPORT :将数据临时存放到内存中,然后主程序再从内存中读取,及时Free Memory ID;(增加内存开销)

3.修改主程序和源程序的逻辑,增加耦合;(后期运维困难)

4.Copy出源程序的代码逻辑后,将源程序大卸八块,只要逻辑不变,随便怎么改就要能跑起来就行;(推荐这一种)

下面推荐第二种方法:

源程序【被调用程序】:

 1 *&---------------------------------------------------------------------* 
 2 *& Report  ZCHENH072 
 3 *& 
 4 *&---------------------------------------------------------------------* 
 5 *& 
 6 *& 
 7 *&---------------------------------------------------------------------* 
 8  
 9 REPORT zchenh072. 
10 PARAMETERS:p_call TYPE c NO-DISPLAY. " 被调用的标志 
11  
12 IF p_call IS INITIAL. 
13   WRITE:/,'未被其他程序调用'. 
14 ELSE. 
15 *  WRITE:/,'被其他程序调用开始'. 
16  
17   DATA:lv_key TYPE i, 
18        lv_value TYPE string, 
19        BEGIN OF lt_tab OCCURS 0, 
20          key TYPE i, 
21          value TYPE string, 
22          END OF lt_tab. 
23   DO 3 TIMES. 
24     lv_key = sy-index. 
25     lv_value = '测试值'. 
26     lt_tab-key = lv_key. 
27     lt_tab-value = lv_value. 
28     APPEND lt_tab. 
29   ENDDO. 
30   EXPORT lt_tab TO MEMORY ID 'EXPORTID'. 
31 *  WRITE:/,'被其他程序调用结束'. 
32 ENDIF.

接口【主程序】:

 1 *&---------------------------------------------------------------------* 
 2 *& Report  ZCHENH072_1 
 3 *& 
 4 *&---------------------------------------------------------------------* 
 5 *& 
 6 *& 
 7 *&---------------------------------------------------------------------* 
 8  
 9 REPORT zchenh072_1. 
10 DATA:BEGIN OF lt_tab OCCURS 0, 
11         key TYPE i, 
12         value TYPE string, 
13       END OF lt_tab. 
14  
15  
16 SUBMIT zchenh072 WITH p_call = 'X' 
17                   AND RETURN. 
18 IMPORT lt_tab FROM MEMORY ID  'EXPORTID'. 
19 FREE MEMORY ID 'EXPORTID'. 
20 BREAK-POINT.

此处注释掉Write的原因,请自行尝试后体会.

使用时注意以下几点:

1.export与import两边的内表(包含内表名称),字段结构(包括长度/内型/小数位数/字段的多少)保持完全一致,建议Copy源程序中的内表到主程序【接口】中,或SE11定义全局结构和内表。

2.Submit后要and return,将数据返回到主程序中。

3.该方法缺点:当后期源程序逻辑变动或者内表结构发生改变,风险极大,不轻易推荐使用。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18022.html

(0)
上一篇 2021年7月19日 20:43
下一篇 2021年7月19日 20:43

相关推荐

发表回复

登录后才能评论