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

猜你喜欢

转载自www.cnblogs.com/1187163927ch/p/10307346.html
今日推荐