天天看點

ABAP之程式互相調用--SUBMIT

轉載自:http://blog.chinaunix.net/uid-28248011-id-3490447.html

功能代碼的重用是個老生常談的話題,ABAP代碼中實作程式的調用以及調用時資料參數的傳遞又是怎樣的呢

(1) 調用其他程式:

   * Trigger the IDOC

  SUBMIT zpcppmd001_idoc AND RETURN.

(2) 調用其他程式參數傳遞參數:

 當被調用的程式的螢幕有輸入參數時:

       SUBMIT zreport with p_param1 = 'value1'

                              with p_param2 = 'value2'.

當要傳遞一個内表到被調用的程式時,需要用SAP MEMORY或者ABAP MEMORY:

在調用的程式中:EXPORT it_tab TO MEMORY 'Z_MEMORY'.

在被調用的程式中:IMPORT T_ITAB FROM MEMORY 'Z_MEMORY'.

 (3) 更複雜一點的可以用檔案臨時存儲資料:

 帶select-options程式的Submit的用法

*Code used to populate 'select-options' & execute report

DATA: seltab type table of rsparams,

      seltab_wa like line of seltab.

  seltab_wa-selname = 'PNPPERNR'.

  seltab_wa-sign    = 'I'.

  seltab_wa-option  = 'EQ'.

* load each personnel number accessed from the structure into

* parameters to be used in the report

  loop at pnppernr.

    seltab_wa-low = pnppernr-low.

    append seltab_wa to seltab.

  endloop.

  SUBMIT zreport with selection-table seltab

                                via selection-screen.

其他情況

*Submit report and return to current program afterwards

SUBMIT zreport AND RETURN.

*Submit report via its own selection screen

SUBMIT zreport VIA SELECTION-SCREEN.

*Submit report using selection screen variant

SUBMIT zreport USING SELECTION-SET 'VARIANT1'.

-------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------

轉載自:http://blog.csdn.net/superying/article/details/6948189

SUBMIT zfir028_rfc USING SELECTION-SCREEN '1000'

          WITH p_bukrs = wa_bukrs-bukrs

          WITH p_gsber = gsber

          WITH p_gjahr = gjahr

          WITH p_perio = perio

          WITH p_rb_2  = 'X'

          WITH p_rb_a  = 'X' AND RETURN.

 submit zqmr018 using selection-screen '1000'

                             with s_ypm   in seltab_matnr

                             with s_lif   in seltab_lifnr

                             with s_werks in seltab_werks

                             with &1      eq 'X'

                             with s_pas between g_date and sy-datum

                             and return.

主要是調用其他程式時選擇螢幕的參數.

-------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------

轉載在:http://blog.sina.com.cn/s/blog_6f74e6d50100p74d.html

1、最普通的用法

*Code used to execute a report

SUBMIT Zreport.

2、帶select-options程式的Submit的用法

*Code used to populate 'select-options' & execute report

DATA: seltab type table of rsparams,

      seltab_wa like line of seltab.

  seltab_wa-selname = 'PNPPERNR'.

  seltab_wa-sign    = 'I'.

  seltab_wa-option  = 'EQ'.

* load each personnel number accessed from the structure into

* parameters to be used in the report

  loop at pnppernr.

    seltab_wa-low = pnppernr-low.

    append seltab_wa to seltab.

  endloop.

  SUBMIT zreport with selection-table seltab

                                via selection-screen.

3、帶parameters程式的Submit的用法

*Code used to populate 'parameters' & execute report

SUBMIT zreport with p_param1 = 'value'

with p_param2 = 'value'.

4、其他情況

*Submit report and return to current program afterwards

SUBMIT zreport AND RETURN.

*Submit report via its own selection screen

SUBMIT zreport VIA SELECTION-SCREEN.

*Submit report using selection screen variant

SUBMIT zreport USING SELECTION-SET 'VARIANT1'.

*Submit report but export resultant list to memory, rather than

*it being displayed on screen

SUBMIT zreport EXPORTING LIST TO MEMORY.

* Once report has finished and control has returned to calling

* program, use function modules LIST_FROM_MEMORY, WRITE_LIST and

* DISPLAY_LIST to retrieve and display report.

*Example Code (Retrieving list from memory)

DATA BEGIN OF itab_list OCCURS 0.

INCLUDE STRUCTURE abaplist.

DATA END OF itab_list.

DATA: BEGIN OF vlist OCCURS 0,

filler1(01) TYPE c,

field1(06) TYPE c,

filler(08) TYPE c,

field2(10) TYPE c,

filler3(01) TYPE c,

field3(10) TYPE c,

filler4(01) TYPE c,

field4(3) TYPE c,

filler5(02) TYPE c,

field5(15) TYPE c,

filler6(02) TYPE c,

field6(30) TYPE c,

filler7(43) TYPE c,

field7(10) TYPE c,

END OF vlist.

SUBMIT zreport EXPORTING LIST TO MEMORY.

CALL FUNCTION 'LIST_FROM_MEMORY'

TABLES

listobject = itab_list

EXCEPTIONS

not_found = 4

OTHERS = 8.

CALL FUNCTION 'LIST_TO_ASCI'

EXPORTING

list_index = -1

TABLES

listasci = vlist

listobject = itab_list

EXCEPTIONS

empty_list = 1

list_index_invalid = 2

OTHERS = 3.

IF sy-subrc NE '0'.

WRITE:/ 'LIST_TO_ASCI error !! ', sy-subrc.

ENDIF.

5、Submit為背景執行

*Submit report as job(i.e. in background)

data: jobname like tbtcjob-jobname value

' TRANSFER TRANSLATION'.

data: jobcount like tbtcjob-jobcount,

host like msxxlist-host.

data: begin of starttime.

include structure tbtcstrt.

data: end of starttime.

data: starttimeimmediate like btch0000-char1.

* Job open

call function 'JOB_OPEN'

exporting

delanfrep = ' '

jobgroup = ' '

jobname = jobname

sdlstrtdt = sy-datum

sdlstrttm = sy-uzeit

importing

jobcount = jobcount

exceptions

cant_create_job = 01

invalid_job_data = 02

jobname_missing = 03.

if sy-subrc ne 0.

"error processing

endif.

* Insert process into job

SUBMIT zreport and return

with p_param1 = 'value'

with p_param2 = 'value'

user sy-uname

via job jobname

number jobcount.

if sy-subrc > 0.

"error processing

endif.

* Close job

starttime-sdlstrtdt = sy-datum + 1.

starttime-sdlstrttm = '220000'.

call function 'JOB_CLOSE'

exporting

event_id = starttime-eventid

event_param = starttime-eventparm

event_periodic = starttime-periodic

jobcount = jobcount

jobname = jobname

laststrtdt = starttime-laststrtdt

laststrttm = starttime-laststrttm

prddays = 1

prdhours = 0

prdmins = 0

prdmonths = 0

prdweeks = 0

sdlstrtdt = starttime-sdlstrtdt

sdlstrttm = starttime-sdlstrttm

strtimmed = starttimeimmediate

targetsystem = host

exceptions

cant_start_immediate = 01

invalid_startdate = 02

jobname_missing = 03

job_close_failed = 04

job_nosteps = 05

job_notex = 06

lock_failed = 07

others = 99.

if sy-subrc eq 0.

"error processing

endif.

繼續閱讀