SUBMIT – Pass parameters to Program
阿新 • • 發佈:2022-05-13
程式碼段顯示了使用 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 = LINESView Code( s_erdat ). 13 WRITE: / 'S_ERDAT', lv_line. 14 15 lv_line = LINES( s_auart ). 16 WRITE: / 'S_AUART', lv_line.
2.程式共同部分
1 DATA: v_erdat TYPE vbak-erdat. 2 SELECT-OPTIONS: so_date FOR v_erdat. 3 4 START-OF-SELECTION. 5View Code
3 傳遞資料用 SELECTION-TABLE
1 DATA: lt_seltab TYPEView CodeTABLE 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
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. 6View 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