2019 Jun 12 9:25 PM
I have a program, PGM_A, which when executed runs another program PGM_B, which outputs a list and a number of pushbuttons along the top one named 'TEST' and the other 'UPDATE'.
I want to be able to run PGM_A in background mode in such a way that it executes PGM_B and executes the code for the pushbutton 'UPDATE'.
Is this done with, in PGM_A, Submit PGM_B with param = 'UPDATE'?
All help greatly appreciated!
2019 Jun 12 9:57 PM
Hi,
Try bellow code .
PROGRAM test.
DATA : v_jobhead LIKE tbtcjob.
DATA : v_jobcount LIKE tbtcjob-jobcount.
DATA : v_eventparm LIKE tbtcjob-eventparm.
DATA : v_flg_released TYPE c.
DATA : e_error.
DATA : running LIKE tbtcv-run.
TYPES: esp1_boolean LIKE boole-boole.
CONSTANTS: esp1_false TYPE esp1_boolean VALUE ' ',
esp1_true TYPE esp1_boolean VALUE 'X'.
CONSTANTS: lv_true TYPE boolean VALUE esp1_true,
lv_false TYPE boolean VALUE esp1_false.
DATA : v_jobnam LIKE tbtcjob-jobname VALUE 'ZPGM_A', "Background Job Name
v_report LIKE sy-repid VALUE 'PGM_B', "Second program name which you need to run on background
v_varian LIKE raldb-variant,
v_uname LIKE sy-uname.
v_uname = sy-uname.
* v_varian = sy-slset.
* Add the new job
CALL FUNCTION 'JOB_OPEN'
EXPORTING
* delanfrep = 'X'
jobname = v_jobnam
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
e_error = 'X'.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
authcknam = v_uname
jobcount = v_jobcount
jobname = v_jobnam
report = v_report
variant = v_varian
EXCEPTIONS
bad_priparams = 1
bad_xpgflags = 2
invalid_jobdata = 3
jobname_missing = 4
job_notex = 5
job_submit_failed = 6
lock_failed = 7
program_missing = 8
prog_abap_and_extpg_set = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
* EVENT_ID = IC_WWI_WORKPROCESS_EVENT
* EVENT_PARAM = V_EVENTPARM
* EVENT_PERIODIC = 'X'
jobcount = v_jobcount
jobname = v_jobnam
strtimmed = 'X'
IMPORTING
job_was_released = v_flg_released
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
MESSAGE 'Background job scheduled' TYPE 'S'.
ENDIF.
ENDIF." job submit
ENDIF. "jon open
Did you try batch input (call transaction ... using .../SHDB)?
2019 Jun 12 9:57 PM
Hi,
Try bellow code .
PROGRAM test.
DATA : v_jobhead LIKE tbtcjob.
DATA : v_jobcount LIKE tbtcjob-jobcount.
DATA : v_eventparm LIKE tbtcjob-eventparm.
DATA : v_flg_released TYPE c.
DATA : e_error.
DATA : running LIKE tbtcv-run.
TYPES: esp1_boolean LIKE boole-boole.
CONSTANTS: esp1_false TYPE esp1_boolean VALUE ' ',
esp1_true TYPE esp1_boolean VALUE 'X'.
CONSTANTS: lv_true TYPE boolean VALUE esp1_true,
lv_false TYPE boolean VALUE esp1_false.
DATA : v_jobnam LIKE tbtcjob-jobname VALUE 'ZPGM_A', "Background Job Name
v_report LIKE sy-repid VALUE 'PGM_B', "Second program name which you need to run on background
v_varian LIKE raldb-variant,
v_uname LIKE sy-uname.
v_uname = sy-uname.
* v_varian = sy-slset.
* Add the new job
CALL FUNCTION 'JOB_OPEN'
EXPORTING
* delanfrep = 'X'
jobname = v_jobnam
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
e_error = 'X'.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
authcknam = v_uname
jobcount = v_jobcount
jobname = v_jobnam
report = v_report
variant = v_varian
EXCEPTIONS
bad_priparams = 1
bad_xpgflags = 2
invalid_jobdata = 3
jobname_missing = 4
job_notex = 5
job_submit_failed = 6
lock_failed = 7
program_missing = 8
prog_abap_and_extpg_set = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
* EVENT_ID = IC_WWI_WORKPROCESS_EVENT
* EVENT_PARAM = V_EVENTPARM
* EVENT_PERIODIC = 'X'
jobcount = v_jobcount
jobname = v_jobnam
strtimmed = 'X'
IMPORTING
job_was_released = v_flg_released
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE 'Background job scheduling fail' TYPE 'E'.
EXIT.
ELSE.
MESSAGE 'Background job scheduled' TYPE 'S'.
ENDIF.
ENDIF." job submit
ENDIF. "jon open
2019 Jun 12 10:33 PM
Thank you for your answer.
The PGM_A has a selection screen which I will fill out, and then I will choose, from the Menu Options, execute in background. And then inside PGM_A I need to execute PGM_B which should then force the opcode for 'UPDATE' push button.
Can I send the value of which Push Button to select via JOB_SUBMIT?
2019 Jun 13 2:10 PM
Hi,
If you need to pass parameters as well , no need to call JOB_SUBMIT FM. but other two FM have to call . Look at bellow sequnce
1. CALL FUNCTION 'JOB_OPEN'
2. SUBMIT PGM_B AND RETURN
WITH p_ifux = p_ifux
WITH p_ofux = p_ofux
WITH p_acc = p_acc
WITH p_payr = p_payr
USER sy-uname
VIA JOB v_jobnam
NUMBER v_jobcount.
3 .CALL FUNCTION 'JOB_CLOSE'
2019 Jun 13 7:38 AM
Did you try batch input (call transaction ... using .../SHDB)?
2019 Jun 13 8:56 AM
I'm afraid, not. You cannot store a pressed button in a variant, can you?
maybe you can add a hidden parameter in PGM_B an pass this.
PGM_B:
parameters: p_upd as checkbox no-display.
if p_upd = 'X'.
perform my_code.
endif.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |