1. 程式人生 > 其它 >SUBMIT – Pass parameters to Program

SUBMIT – Pass parameters to Program

程式碼段顯示了使用 ABAP SUBMIT 語句將引數從主程式傳遞到提交程式的不同方法

1.提交程式

 1  
 2 REPORT ztest_np_2.
 3  
 4 DATA: v_erdat TYPE vbak-erdat.
 5 DATA: v_auart TYPE vbak-auart.
 6  
 7 SELECT-OPTIONS: s_erdat FOR v_erdat,
 8                 s_auart FOR v_auart.
 9  
10 START-OF-SELECTION.
11   DATA: lv_line TYPE i.
12   lv_line = LINES
( s_erdat ). 13 WRITE: / 'S_ERDAT', lv_line. 14 15 lv_line = LINES( s_auart ). 16 WRITE: / 'S_AUART', lv_line.
View Code

2.程式共同部分

1 DATA: v_erdat TYPE vbak-erdat.
2 SELECT-OPTIONS: so_date FOR v_erdat.
3  
4 START-OF-SELECTION.
5  
View Code

3 傳遞資料用 SELECTION-TABLE

 1  DATA: lt_seltab  TYPE
TABLE OF rsparams, 2 ls_seltab LIKE LINE OF lt_seltab. 3 4 LOOP AT so_date. 5 ls_seltab-selname = 'S_ERDAT'. " Name of parameter on submitted program 6 ls_seltab-KIND = 'S'. 7 ls_seltab-SIGN = so_date-SIGN. 8 ls_seltab-OPTION = so_date-OPTION. 9 ls_seltab-LOW = so_date-LOW.
10 ls_seltab-HIGH = so_date-HIGH. 11 APPEND ls_seltab TO lt_seltab. 12 ENDLOOP. 13 14 ls_seltab-selname = 'S_AUART'. 15 ls_seltab-KIND = 'S'. 16 ls_seltab-SIGN = 'I'. 17 ls_seltab-OPTION = 'EQ'. 18 ls_seltab-LOW = 'OR'. 19 APPEND ls_seltab TO lt_seltab. 20 21 SUBMIT ztest_np_2 22 WITH SELECTION-TABLE lt_seltab 23 AND RETURN. 24
View Code

4 直接傳遞引數

1 *==== Passing Parameters directly
2   SUBMIT ztest_np_2
3     WITH s_erdat IN so_date
4     WITH s_auart EQ 'OR' SIGN 'I'
5     AND RETURN.
6  
View Code

5 傳參通過變式

1 *==== Passing parameters from Variant
2   " DEFAULT is the variant on the program ZTEST_NP_2
3   SUBMIT ztest_np_2
4     USING SELECTION-SET 'DEFAULT'
5     AND RETURN.
View Code

6 傳參通過生成變式

 1 *==== Passing parameters with generated variant
 2   DATA:  ls_varid       TYPE          varid,
 3          lt_varit       TYPE TABLE OF varit,
 4          ls_varit       TYPE          varit.
 5  
 6   DATA: lt_seltab  TYPE TABLE OF rsparams,
 7         ls_seltab  LIKE LINE OF lt_seltab.
 8  
 9 * Populate the selection table
10   LOOP AT so_date.
11     ls_seltab-selname = 'S_ERDAT'.          " Name of parameter on submitted program
12     ls_seltab-KIND    = 'S'.
13     ls_seltab-SIGN    = so_date-SIGN.
14     ls_seltab-OPTION  = so_date-OPTION.
15     ls_seltab-LOW     = so_date-LOW.
16     ls_seltab-HIGH    = so_date-HIGH.
17     APPEND ls_seltab TO lt_seltab.
18   ENDLOOP.
19  
20   ls_seltab-selname = 'S_AUART'.
21   ls_seltab-KIND    = 'S'.
22   ls_seltab-SIGN    = 'I'.
23   ls_seltab-OPTION  = 'EQ'.
24   ls_seltab-LOW     = 'OR'.
25   APPEND ls_seltab TO lt_seltab.
26  
27 * Populate the Variant Directory
28   ls_varid-REPORT  = 'ZTEST_NP_2'.
29   ls_varid-variant = sy-datum && sy-uzeit && sy-uname.
30   ls_varid-ename   = sy-uname.
31   ls_varid-edat    = sy-datlo.
32  
33 * Populate the Variant texts table
34   ls_varit-langu   = sy-langu.
35   ls_varit-REPORT  = ls_varid-REPORT.
36   ls_varit-variant = ls_varid-variant.
37   ls_varit-vtext   = 'Generated Variant'.
38   APPEND ls_varit TO lt_varit.
39  
40   CALL FUNCTION 'RS_CREATE_VARIANT'
41     EXPORTING
42       curr_report               = ls_varid-REPORT
43       curr_variant              = ls_varid-variant
44       vari_desc                 = ls_varid
45     TABLES
46       vari_contents             = lt_seltab
47       vari_text                 = lt_varit
48     EXCEPTIONS
49       illegal_report_or_variant = 1
50       illegal_variantname       = 2
51       not_authorized            = 3
52       not_executed              = 4
53       report_not_existent       = 5
54       report_not_supplied       = 6
55       variant_exists            = 7
56       variant_locked            = 8
57       OTHERS                    = 9.
58   IF sy-subrc <> 0.
59     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
60             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
61   ENDIF.
62  
63   SUBMIT ztest_np_2
64     USING SELECTION-SET ls_varid-variant
65     AND RETURN.
View Code