‎2007 Sep 24 10:14 AM
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
‎2007 Sep 24 10:52 AM
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
‎2007 Sep 24 10:52 AM
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
‎2007 Dec 20 6:12 AM