Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Background scheduling in BAPI

Former Member
0 Likes
574

REPORT ZIND_BACKGROUND_JOB MESSAGE-ID zsd

NO STANDARD PAGE HEADING

LINE-SIZE 160.

----


  • Tables

----


TABLES: mara,mvke.

----


  • Data Definitions.

----


TYPES: BEGIN OF ty_mat,

matnr TYPE mara-matnr,

vkorg TYPE mvke-vkorg, " Sales Org

vtweg TYPE mvke-vtweg, " Dist. Channel

prdha TYPE mara-prdha, " Prod Hierarchy

err(60) TYPE C,

END OF ty_mat.

DATA: gt_matnr TYPE STANDARD TABLE OF ty_mat WITH HEADER LINE,

gt_matnr_err TYPE STANDARD TABLE OF ty_mat WITH HEADER LINE.

DATA: gs_matnr_err TYPE ty_mat.

DATA: lv_file_name TYPE string,

lv_message(200) TYPE c.

DATA : JN(8) TYPE C,

val(1) .

DATA: PRIPAR TYPE PRI_PARAMS,

ARCPAR TYPE ARC_PARAMS.

  • For BAPI

DATA: headdata TYPE bapimathead,

clientdata TYPE bapi_mara,

clientdatax TYPE bapi_marax,

return TYPE bapiret2,

salesdata TYPE bapi_mvke,

salesdatax TYPE bapi_mvkex.

DATA: ret TYPE STANDARD TABLE OF bapi_matreturn2 WITH HEADER LINE.

----


  • Selection Screen

----


SELECTION-SCREEN BEGIN OF BLOCK b001 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_matnr FOR mara-matnr,

s_vkorg FOR mvke-vkorg OBLIGATORY,

s_vtweg FOR mvke-vtweg OBLIGATORY,

s_matkl FOR mara-matkl.

SELECTION-SCREEN END OF BLOCK b001.

SELECTION-SCREEN BEGIN OF BLOCK b002 WITH FRAME TITLE text-002.

PARAMETERS: p_err TYPE localfile OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK b002.

SELECTION-SCREEN BEGIN OF BLOCK b003 WITH FRAME TITLE text-003.

PARAMETERS: P_FORE RADIOBUTTON GROUP rad,

P_BACK RADIOBUTTON GROUP rad.

SELECTION-SCREEN: END OF BLOCK b003.

PARAMETERS : P_JOB LIKE TBTCJOB-JOBNAME.

----


  • At selection screen

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_err.

PERFORM get_filename USING 'Output - Error File'

CHANGING p_err.

AT SELECTION-SCREEN ON BLOCK B003.

IF P_BACK = 'X' AND P_JOB NE SPACE.

PERFORM PRINTER_GET.

PERFORM JOB_OPEN.

PERFORM JOB_SUMBIT.

PERFORM JOB_CLOSE.

STOP.

ELSEIF P_JOB = SPACE AND P_BACK = 'X' .

MESSAGE 'Enter The Job Name' type 'I'.

ENDIF.

----


  • START-OF-SELECTION.

----


START-OF-SELECTION.

PERFORM 100_collect_dbrecs.

PERFORM 200_process_dbrecs.

END-OF-SELECTION.

&----


*& TOP-OF-PAGE.

&----


TOP-OF-PAGE.

WRITE: 40 'Material Product Hierarchy Update Report'.

ULINE (115).

*SKIP.

WRITE: /'MATERIAL'.

WRITE: /.

ULINE (115).

&----


*& Form 100_collect_dbrecs

&----


FORM 100_collect_dbrecs .

SELECT maramatnr mvkevkorg mvkevtweg maraprdha

INTO CORRESPONDING FIELDS OF TABLE gt_matnr

FROM mara INNER JOIN mvke

ON maramatnr = mvkematnr

WHERE mara~matnr IN s_matnr

AND mara~prdha NE space

AND mara~matkl IN s_matkl

AND mara~lvorm EQ space

AND mvke~vkorg IN s_vkorg

AND mvke~vtweg IN s_vtweg

AND mvke~prodh EQ space.

ENDFORM. " 100_collect_dbrecs

&----


*& Form 200_process_dbrecs

&----


FORM 200_process_dbrecs.

IF gt_matnr[] IS INITIAL.

MESSAGE s000 WITH 'No Materials Processed.'.

ELSE.

LOOP AT gt_matnr.

CLEAR: headdata,

clientdata,

clientdatax,

return,

salesdata ,

salesdatax,

ret.

REFRESH: ret.

          • Filling Material.

MOVE: gt_matnr-matnr TO headdata-material,

'X' TO headdata-sales_view.

  • Sales Org

MOVE: gt_matnr-vkorg TO salesdata-sales_org,

gt_matnr-vkorg TO salesdatax-sales_org.

*Dist Channel

MOVE: gt_matnr-vtweg TO salesdata-distr_chan,

gt_matnr-vtweg TO salesdatax-distr_chan.

*Prod Hierarchy

MOVE: gt_matnr-prdha TO salesdata-prod_hier,

'X' TO salesdatax-prod_hier.

PERFORM 220_bapi_call.

CLEAR: gt_matnr.

ENDLOOP.

  • Download Error Files

IF gt_matnr_err[] IS INITIAL.

  • no errors to be downloaded

ELSE.

  • Error File being downloaded.

lv_file_name = p_err.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = lv_file_name

filetype = 'ASC'

TABLES

data_tab = gt_matnr_err

EXCEPTIONS

file_write_error = 1

no_batch = 2

gui_refuse_filetransfer = 3

invalid_type = 4

no_authority = 5

unknown_error = 6

header_not_allowed = 7

separator_not_allowed = 8

filesize_not_allowed = 9

header_too_long = 10

dp_error_create = 11

dp_error_send = 12

dp_error_write = 13

unknown_dp_error = 14

access_denied = 15

dp_out_of_memory = 16

disk_full = 17

dp_timeout = 18

file_not_found = 19

dataprovider_exception = 20

control_flush_error = 21

OTHERS = 99.

IF sy-subrc = 0.

WRITE: /05 'Error File Download - Successful.'.

ELSE.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4

INTO lv_message.

FORMAT INTENSIFIED ON.

WRITE: /05 'Write error:', lv_message COLOR COL_NEGATIVE.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " 200_process_dbrecs

&----


*& Form 220_BAPI_CALL

&----


FORM 220_bapi_call .

DATA: lv_message(60) TYPE c.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = headdata

clientdata = clientdata

clientdatax = clientdatax

salesdata = salesdata

salesdatax = salesdatax

IMPORTING

return = return

TABLES

returnmessages = ret.

IF sy-subrc EQ 0.

MOVE : return-message TO lv_message.

IF return-type EQ 'E'.

WRITE: / gt_matnr-matnr,

'Change Failed -', lv_message.

MOVE-CORRESPONDING gt_matnr TO gs_matnr_err.

APPEND gs_matnr_err to gt_matnr_err. CLEAR gs_matnr_err.

ELSE.

WRITE: / gt_matnr-matnr,

'Change Successful -', lv_message, ' for ', gt_matnr-vkorg,' ', gt_matnr-vtweg.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

COMMIT WORK.

ENDIF.

ENDIF.

ENDFORM. " 220_BAPI_CALL

&----


*& Form get_filename

&----


  • Call up a dialog window to retrieve the filename

----


  • --> P_FILETITLE Dialog file title

  • <-- P_FILENAME FIle name retrieved

----


FORM get_filename USING p_filetitle TYPE c

CHANGING p_filename TYPE localfile.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = ' '

def_path = ' '

mask = ',.,..'

mode = 'O'

title = p_filetitle

IMPORTING

filename = p_filename

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

ENDFORM. " get_filename

&----


*& Form JOB_OPEN

&----


  • BACK GROUND JOB ASSIGNING JOB NAME AND IMPORTING JOB NUMBER

----


form JOB_OPEN .

CALL FUNCTION 'JOB_OPEN'

EXPORTING

  • DELANFREP = ' '

  • JOBGROUP = ' '

jobname = P_JOB

  • SDLSTRTDT = NO_DATE

  • SDLSTRTTM = NO_TIME

  • JOBCLASS =

IMPORTING

JOBCOUNT = JN

  • CHANGING

  • RET =

EXCEPTIONS

CANT_CREATE_JOB = 1

INVALID_JOB_DATA = 2

JOBNAME_MISSING = 3

OTHERS = 4

.

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4

INTO lv_message.

FORMAT INTENSIFIED ON.

WRITE: /05 'Write error:', lv_message COLOR COL_NEGATIVE.

ENDIF.

endform. " JOB_OPEN

&----


*& Form JOB_SUMBIT

&----


  • SUBMITTING THE JOB

----


form JOB_SUMBIT .

CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

  • ARCPARAMS =

authcknam = SY-UNAME

  • COMMANDNAME = ' '

  • OPERATINGSYSTEM = ' '

  • EXTPGM_NAME = ' '

  • EXTPGM_PARAM = ' '

  • EXTPGM_SET_TRACE_ON = ' '

  • EXTPGM_STDERR_IN_JOBLOG = 'X'

  • EXTPGM_STDOUT_IN_JOBLOG = 'X'

  • EXTPGM_SYSTEM = ' '

  • EXTPGM_RFCDEST = ' '

  • EXTPGM_WAIT_FOR_TERMINATION = 'X'

jobcount = JN

jobname = P_JOB

  • LANGUAGE = SY-LANGU

  • PRIPARAMS = pripar

REPORT = SY-REPID

  • VARIANT = ' '

  • IMPORTING

  • STEP_NUMBER =

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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4

INTO lv_message.

FORMAT INTENSIFIED ON.

WRITE: /05 'Write error:', lv_message COLOR COL_NEGATIVE.

ENDIF.

  • submit ZIND_BACKGROUND_JOB

  • via job p_JOB

  • number JN

  • to sap-spool without spool dynpro

  • spool parameters PRIPAR

  • and return.

*SUBMIT ZIND_BACKGROUND_JOB AND RETURN

*USER SY-UNAME " User for runtime authorizations

*VIA JOB p_JOB NUMBER JN

*" Job name and job number

*" from JOB_OPEN

*TO SAP-SPOOL " Print and archiving options from

*" GET_PRINT_PARAMETERS

*" Both sets of options come from

*" GET_PRINT_PARAMETERS

*SPOOL PARAMETERS PRIPAR

*ARCHIVE PARAMETERS ARCPAR

*WITHOUT SPOOL DYNPRO.

**End of Content Area

endform. " JOB_SUMBIT

&----


*& Form JOB_CLOSE

&----


  • text

----


form JOB_CLOSE .

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

  • AT_OPMODE = ' '

  • AT_OPMODE_PERIODIC = ' '

  • CALENDAR_ID = ' '

  • EVENT_ID = ' '

  • EVENT_PARAM = ' '

  • EVENT_PERIODIC = ' '

jobcount = JN

jobname = P_JOB

  • LASTSTRTDT = NO_DATE

  • LASTSTRTTM = NO_TIME

  • PRDDAYS = 0

  • PRDHOURS = 0

  • PRDMINS = 0

  • PRDMONTHS = 0

  • PRDWEEKS = 0

  • PREDJOB_CHECKSTAT = ' '

  • PRED_JOBCOUNT = ' '

  • PRED_JOBNAME = ' '

  • SDLSTRTDT = NO_DATE

  • SDLSTRTTM = NO_TIME

  • STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS

STRTIMMED = 'X'

  • TARGETSYSTEM = ' '

  • START_ON_WORKDAY_NOT_BEFORE = SY-DATUM

  • START_ON_WORKDAY_NR = 0

  • WORKDAY_COUNT_DIRECTION = 0

  • RECIPIENT_OBJ =

  • TARGETSERVER = ' '

  • DONT_RELEASE = ' '

  • TARGETGROUP = ' '

  • DIRECT_START =

  • IMPORTING

  • JOB_WAS_RELEASED =

  • CHANGING

  • RET =

EXCEPTIONS

CANT_START_IMMEDIATE = 1

INVALID_STARTDATE = 2

JOBNAME_MISSING = 3

JOB_CLOSE_FAILED = 4

JOB_NOSTEPS = 5

JOB_NOTEX = 6

LOCK_FAILED = 7

INVALID_TARGET = 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

INTO lv_message.

FORMAT INTENSIFIED ON.

WRITE: /05 'Write error:', lv_message COLOR COL_NEGATIVE.

ENDIF.

endform. " JOB_CLOSE

&----


*& Form PRINTER_GET

&----


  • text

----


form PRINTER_GET .

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING

DESTINATION = 'LOCL'

IMMEDIATELY = ''

NO_DIALOG = 'X'

IMPORTING

out_archive_parameters = arcpar

OUT_PARAMETERS = PRIPAR

valid = val

EXCEPTIONS

ARCHIVE_INFO_NOT_FOUND = 1

INVALID_PRINT_PARAMS = 2

INVALID_ARCHIVE_PARAMS = 3

OTHERS = 4

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

endform. " PRINTER_GET

<b>Actually this prog schedules a job and i can see it in SM37, but when i try to release it error i get is step is not defined properly....

What can be the possible causes of the errors.

here in my prog i have two parameters which is obligatory (VTWEG and VKORG).

Iam not submitting this parameter in the background jb, how to do this???

is it necessary for it to be scheduled in background.

Pls help me ASAP.</b>

Title was edited by:

Alvaro Tejada Galindo

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
511

Hi Naveen,

You are trying to submit the same program in background. You need to create 2 programs for that..

Create a program : ZBCKGD & inside it use FM JOB_SUBMIT & Pass program name as ZIND_BACKGROUND_JOB.

Export the selection criteria from ZBCKGD to ZIND_BACKGROUND_JOB.

Refer:/people/prashant.patil12/blog/2007/02/20/displaying-alv-grid-in-background-job

form JOB_SUMBIT .

CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

  • ARCPARAMS =

authcknam = SY-UNAME

  • COMMANDNAME = ' '

  • OPERATINGSYSTEM = ' '

  • EXTPGM_NAME = ' '

  • EXTPGM_PARAM = ' '

  • EXTPGM_SET_TRACE_ON = ' '

  • EXTPGM_STDERR_IN_JOBLOG = 'X'

  • EXTPGM_STDOUT_IN_JOBLOG = 'X'

  • EXTPGM_SYSTEM = ' '

  • EXTPGM_RFCDEST = ' '

  • EXTPGM_WAIT_FOR_TERMINATION = 'X'

jobcount = JN

jobname = P_JOB

  • LANGUAGE = SY-LANGU

  • PRIPARAMS = pripar

<b>REPORT = 'ZIND_BACKGROUND_JOB'</b>

  • VARIANT = ' '

  • IMPORTING

  • STEP_NUMBER =

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

2 REPLIES 2
Read only

Former Member
0 Likes
512

Hi Naveen,

You are trying to submit the same program in background. You need to create 2 programs for that..

Create a program : ZBCKGD & inside it use FM JOB_SUBMIT & Pass program name as ZIND_BACKGROUND_JOB.

Export the selection criteria from ZBCKGD to ZIND_BACKGROUND_JOB.

Refer:/people/prashant.patil12/blog/2007/02/20/displaying-alv-grid-in-background-job

form JOB_SUMBIT .

CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

  • ARCPARAMS =

authcknam = SY-UNAME

  • COMMANDNAME = ' '

  • OPERATINGSYSTEM = ' '

  • EXTPGM_NAME = ' '

  • EXTPGM_PARAM = ' '

  • EXTPGM_SET_TRACE_ON = ' '

  • EXTPGM_STDERR_IN_JOBLOG = 'X'

  • EXTPGM_STDOUT_IN_JOBLOG = 'X'

  • EXTPGM_SYSTEM = ' '

  • EXTPGM_RFCDEST = ' '

  • EXTPGM_WAIT_FOR_TERMINATION = 'X'

jobcount = JN

jobname = P_JOB

  • LANGUAGE = SY-LANGU

  • PRIPARAMS = pripar

<b>REPORT = 'ZIND_BACKGROUND_JOB'</b>

  • VARIANT = ' '

  • IMPORTING

  • STEP_NUMBER =

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

Read only

Former Member
0 Likes
511

thnx

closing the thread