SUBMIT – Pass parameters to Program
代码段显示了使用 ABAP SUBMIT 语句将参数从主程序传递到提交程序的不同方法
1.提交程序
REPORT ztest_np_2. DATA: v_erdat TYPE vbak-erdat. DATA: v_auart TYPE vbak-auart. SELECT-OPTIONS: s_erdat FOR v_erdat, s_auart FOR v_auart. PARAMETERS:p_bukrs LIKE bkpf-bukrs. START-OF-SELECTION. DATA: lv_line TYPE i. lv_line = LINES( s_erdat ). WRITE: / 'S_ERDAT', lv_line. lv_line = LINES( s_auart ). WRITE: / 'S_AUART', lv_line. lv_line = LINES( p_bukrs ). WRITE: / 'P_BUKRS, lv_line.
2.程序共同部分
DATA: v_erdat TYPE vbak-erdat. SELECT-OPTIONS: so_date FOR v_erdat. PARAMETERS: p_bukrs LIKE bkpf-bukrs. START-OF-SELECTION.
3 传递数据用 SELECTION-TABLE
DATA: lt_seltab TYPE TABLE OF rsparams, ls_seltab LIKE LINE OF lt_seltab. LOOP AT so_date. ls_seltab-selname = 'S_ERDAT'. " Name of parameter on submitted program ls_seltab-KIND = 'S'. ls_seltab-SIGN = so_date-SIGN. ls_seltab-OPTION = so_date-OPTION. ls_seltab-LOW = so_date-LOW. ls_seltab-HIGH = so_date-HIGH. APPEND ls_seltab TO lt_seltab. ENDLOOP. ls_seltab-selname = 'S_AUART'. ls_seltab-KIND = 'S'. ls_seltab-SIGN = 'I'. ls_seltab-OPTION = 'EQ'. ls_seltab-LOW = 'OR'. APPEND ls_seltab TO lt_seltab. CLEAR:ls_seltab. ls_seltab-selname = 'P_BUKRS'. ls_seltab-KIND = 'P'. ls_seltab-LOW = '1000'. APPEND ls_seltab TO lt_seltab. SUBMIT ztest_np_2 WITH SELECTION-TABLE lt_seltab AND RETURN.
4 直接传递参数
*==== Passing Parameters directly SUBMIT ztest_np_2 WITH s_erdat IN so_date WITH s_auart EQ 'OR' SIGN 'I' WITH p_bukrs = p_bukrs AND RETURN.
5 传参通过变式
*==== Passing parameters from Variant " DEFAULT is the variant on the program ZTEST_NP_2 SUBMIT ztest_np_2 USING SELECTION-SET 'DEFAULT' AND RETURN.
6 传参通过生成变式
*==== Passing parameters with generated variant DATA: ls_varid TYPE varid, lt_varit TYPE TABLE OF varit, ls_varit TYPE varit. DATA: lt_seltab TYPE TABLE OF rsparams, ls_seltab LIKE LINE OF lt_seltab. * Populate the selection table LOOP AT so_date. ls_seltab-selname = 'S_ERDAT'. " Name of parameter on submitted program ls_seltab-KIND = 'S'. ls_seltab-SIGN = so_date-SIGN. ls_seltab-OPTION = so_date-OPTION. ls_seltab-LOW = so_date-LOW. ls_seltab-HIGH = so_date-HIGH. APPEND ls_seltab TO lt_seltab. ENDLOOP. ls_seltab-selname = 'S_AUART'. ls_seltab-KIND = 'S'. ls_seltab-SIGN = 'I'. ls_seltab-OPTION = 'EQ'. ls_seltab-LOW = 'OR'. APPEND ls_seltab TO lt_seltab. * Populate the Variant Directory ls_varid-REPORT = 'ZTEST_NP_2'. ls_varid-variant = sy-datum && sy-uzeit && sy-uname. ls_varid-ename = sy-uname. ls_varid-edat = sy-datlo. * Populate the Variant texts table ls_varit-langu = sy-langu. ls_varit-REPORT = ls_varid-REPORT. ls_varit-variant = ls_varid-variant. ls_varit-vtext = 'Generated Variant'. APPEND ls_varit TO lt_varit. CALL FUNCTION 'RS_CREATE_VARIANT' EXPORTING curr_report = ls_varid-REPORT curr_variant = ls_varid-variant vari_desc = ls_varid TABLES vari_contents = lt_seltab vari_text = lt_varit EXCEPTIONS illegal_report_or_variant = 1 illegal_variantname = 2 not_authorized = 3 not_executed = 4 report_not_existent = 5 report_not_supplied = 6 variant_exists = 7 variant_locked = 8 OTHERS = 9. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. SUBMIT ztest_np_2 USING SELECTION-SET ls_varid-variant AND RETURN.
PARAMETERS:p_bukrs LIKE bkpf-bukrs.

浙公网安备 33010602011771号