‎2007 Jul 05 4:53 AM
Can i get the complete steps for uploading data included in Backgound processing using call transaction as well as Session Method.
Thanks,
Naveen.
‎2007 Jul 05 8:15 AM
Hi,
There are two ways for you to handle,
one manually setting up the job through SM36 which is better and convinient,
secondly through program using FM's JOB_OPEN, SUBMIT, JOB_CLOSE.
Find below steps in doing both:
Procedure 1:
1. Goto Trans -> SM36
2. Define a job with the program and variant if any
3. Click on start condition in application tool bar
4. In the pop-up window, click on Date/Time
5. Below you can see a check box "Periodic Job"
6. Next click on Period Values
7. Select "Other Period"
8. Now give '15' for Minutes
9. Save the job
Procedure 2 via Program:
Below is a sample code for the same. Note the ZTEMP2 is the program i am scheduling with 15mins frequency.
DATA: P_JOBCNT LIKE TBTCJOB-JOBCOUNT,
L_RELEASE(1) TYPE c.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = 'ZTEMP2'
IMPORTING
JOBCOUNT = P_JOBCNT
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.
ENDIF.
SUBMIT ZTEMP2 VIA JOB 'ZTEMP2' NUMBER P_JOBCNT
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
WITH DESTINATION = 'HPMISPRT'
WITH IMMEDIATELY = SPACE
WITH KEEP_IN_SPOOL = 'X' AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = P_JOBCNT
JOBNAME = 'ZTEMP2'
STRTIMMED = 'X'
PRDMINS = 15
IMPORTING
JOB_WAS_RELEASED = L_RELEASE
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.
ENDIF.
Hope the above helps you.
1. If you want to run something immeidately in the background, then you can use the SUBMIT REPORT option.
2. IF you want to schedule the job, you can call the functions, JOB_OPEN, JOB_SUBMIT / SUBMIT REPORT THROUGHT JOB NUMBER, JOB_CLOSE.
<b>Reward points</b>
Regards
‎2007 Jul 05 5:34 AM
hi,,
To make background processing in call transaction just give mode as "N".
&----
*& Report Z243_KA_BD_01
*&
&----
*&
*&
&----
REPORT Z243_KA_BD_01.
TABLES : ZSALES_ORDER.
&----
DATA:OK_CODE LIKE SY-UCOMM.
DATA : BATCH(6),CALL(6) .
DATA :I TYPE I,A TYPE I.
DATA: IT_TAB LIKE TABLE OF ZSALES_ORDER WITH HEADER LINE,
WA_TAB LIKE LINE OF IT_TAB.
DATA: IT_BDCTAB LIKE TABLE OF BDCDATA WITH HEADER LINE .
DATA: IT_MESS LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE,
WA_MESS LIKE LINE OF IT_MESS.
DATA: R(10) TYPE C.
&--
SELECTION-SCREEN : BEGIN OF SCREEN 9004.
SELECT-OPTIONS MAT_NO FOR ZSALES_ORDER-MATERIAL_NO.SKIP.
SELECT-OPTIONS CUST_NO FOR ZSALES_ORDER-CUSTOMER_NO .SKIP.
PARAMETERS: UPLOADED.
SELECTION-SCREEN : END OF SCREEN 9004.
CALL SCREEN 9002.
&----
*& Module USER_COMMAND_9002 INPUT
&----
text
----
MODULE USER_COMMAND_9002 INPUT.
CASE OK_CODE.
WHEN 'UPLOAD'.
CALL SCREEN 9003.
WHEN 'REPORT'.
LEAVE TO LIST-PROCESSING.
WRITE :'NO OF RECORDS READ'.
DESCRIBE TABLE IT_TAB LINES A.
WRITE A.
SELECT COUNT(*) FROM ZSALES_ORDER INTO I.
SKIP.
ULINE.
WRITE: / 'NO OF RECORDS UPLOADED'. WRITE I.
ULINE.
SELECT * FROM ZSALES_ORDER INTO ZSALES_ORDER.
WRITE: / 'MATERIAL NO ', 'CUSTOMER NO','CUSTOMER MATE NO','SLAES ORGANISATION','PROCESSING ORG',' TRAN AMT'.
WRITE: / ZSALES_ORDER-MATERIAL_NO UNDER 'MATERIAL NO '.write:12 sy-vline, ZSALES_ORDER-CUSTOMER_NO UNDER 'CUSTOMER
NO'.write:20 sy-vline,
ZSALES_ORDER-CUST_MAT_NO UNDER 'CUSTOMER MATE NO'.write:30 sy-vline, ZSALES_ORDER-SALE_ORG UNDER 'SLAES
ORGANISATION'.write:40 sy-vline,
ZSALES_ORDER-PROCESS_DATE UNDER 'PROCESSING ORG'.write:50 sy-vline, ZSALES_ORDER-TRAN_AMT UNDER 'TRAN
AMT'.write:60 sy-vline.
ENDSELECT.
SKIP.
ULINE.
WRITE: ' NO OF ERRORS RECORDS'.
DESCRIBE TABLE IT_TAB LINES A.
WRITE: A.
SET PF-STATUS SPACE.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9002 INPUT
&----
*& Module USER_COMMAND_9003 INPUT
&----
text
----
MODULE USER_COMMAND_9003 INPUT.
CLEAR OK_CODE.
IF CALL = 'X'.
CALL SELECTION-SCREEN 9004.
REFRESH IT_TAB.
SELECT * FROM ZSALES_ORDER.
CHECK MAT_NO.
IT_TAB-MATERIAL_NO = ZSALES_ORDER-MATERIAL_NO.
APPEND IT_TAB.
ENDSELECT.
PERFORM GUI_UPLOAD.
PERFORM TRAN USING 'Z243BDC'.
ELSEIF BATCH = 'X'.
CALL SELECTION-SCREEN 9004.
PERFORM GUI_UPLOAD.
PERFORM BATCH_TRANSACTION.
ENDIF.
ENDMODULE. " USER_COMMAND_9003 INPUT
&----
*& Form GUI_UPLOAD
&----
text
----
--> p1 text
<-- p2 text
----
FORM GUI_UPLOAD .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\siva\bdcflatfile.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_TAB
.
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT IT_TAB INTO WA_TAB.
PERFORM PNAME USING 'Z243_KA_BDC_01' '9001'.
PERFORM FNAME USING 'ZSALES_ORDER-MATERIAL_NO' WA_TAB-MATERIAL_NO.
PERFORM FNAME USING 'ZSALES_ORDER-CUSTOMER_NO' WA_TAB-CUSTOMER_NO.
PERFORM FNAME USING 'ZSALES_ORDER-CUST_MAT_NO' WA_TAB-CUST_MAT_NO.
PERFORM FNAME USING 'ZSALES_ORDER-SALE_ORG' WA_TAB-SALE_ORG.
PERFORM FNAME USING 'ZSALES_ORDER-PROCESS_DATE' WA_TAB-PROCESS_DATE.
PERFORM FNAME USING 'ZSALES_ORDER-TRAN_AMT' WA_TAB-TRAN_AMT.
PERFORM FNAME USING 'BDC_OKCODE' '=SAVE'.
ENDLOOP.
PERFORM PNAME USING 'Z243_KA_BDC_01' '9001'.
PERFORM FNAME USING 'BDC_OKCODE' '=EXIT'.
DESCRIBE TABLE IT_TAB LINES A.
ENDFORM. " GUI_UPLOAD
&----
*& Form PNAME
&----
text
----
-->P_0105 text
-->P_0106 text
----
FORM PNAME USING PRGNAME
SCRNAME.
CLEAR IT_BDCTAB.
IT_BDCTAB-PROGRAM = PRGNAME.
IT_BDCTAB-DYNPRO = SCRNAME.
IT_BDCTAB-DYNBEGIN = 'X'.
APPEND IT_BDCTAB.
ENDFORM. " PNAME
&----
*& Form FNAME
&----
text
----
-->P_0110 text
-->P_WA_TAB_MATERIAL_NO text
----
FORM FNAME USING FIELDNAME
FIELDVAL.
CLEAR : IT_BDCTAB.
IT_BDCTAB-FNAM = FIELDNAME.
IT_BDCTAB-FVAL = FIELDVAL.
APPEND IT_BDCTAB.
ENDFORM. " FNAME
&----
*& Form TRAN
&----
text
----
-->P_0054 text
----
FORM TRAN USING STRAN.
CALL TRANSACTION STRAN USING IT_BDCTAB
MODE 'N'
UPDATE 'S'
MESSAGES INTO IT_MESS.
ENDFORM. " TRAN
&----
*& Form BATCH_TRANSACTION
&----
text
----
--> p1 text
<-- p2 text
----
FORM BATCH_TRANSACTION .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'SIVA'
USER = sy-uname.
IF SY-SUBRC <> 0.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'Z243BDC'
TABLES
DYNPROTAB = IT_BDCTAB
.
IF SY-SUBRC <> 0.
ENDIF.
CALL FUNCTION 'BDC_CLOSE_GROUP'
.
IF SY-SUBRC <> 0.
ENDIF.
CALL TRANSACTION 'SM35'.
ENDFORM. " BATCH_TRANSACTION
&----
*& Module STATUS_9003 OUTPUT
&----
text
----
MODULE STATUS_9003 OUTPUT.
SET PF-STATUS 'SCREEN'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_9003 OUTPUT
check these links
http://www.sappoint.com/abap/bdcconcept.pdf
http://www.sap-img.com/bdc.htm
http://www.sapdevelopment.co.uk/bdc/updhome.htm
Table control in BDC
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
http://www.sapgenie.com/abap/bdc.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sap-img.com/sap-download/bdcrecording.zip
http://www.sappoint.com/abap/bdcconcept.pdf
http://www.sap-img.com/abap/question-about-bdc-program.htm
<b>
REward useful points
Siva</b>
Message was edited by:
SivaKumar
‎2007 Jul 05 8:15 AM
Hi,
There are two ways for you to handle,
one manually setting up the job through SM36 which is better and convinient,
secondly through program using FM's JOB_OPEN, SUBMIT, JOB_CLOSE.
Find below steps in doing both:
Procedure 1:
1. Goto Trans -> SM36
2. Define a job with the program and variant if any
3. Click on start condition in application tool bar
4. In the pop-up window, click on Date/Time
5. Below you can see a check box "Periodic Job"
6. Next click on Period Values
7. Select "Other Period"
8. Now give '15' for Minutes
9. Save the job
Procedure 2 via Program:
Below is a sample code for the same. Note the ZTEMP2 is the program i am scheduling with 15mins frequency.
DATA: P_JOBCNT LIKE TBTCJOB-JOBCOUNT,
L_RELEASE(1) TYPE c.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = 'ZTEMP2'
IMPORTING
JOBCOUNT = P_JOBCNT
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.
ENDIF.
SUBMIT ZTEMP2 VIA JOB 'ZTEMP2' NUMBER P_JOBCNT
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
WITH DESTINATION = 'HPMISPRT'
WITH IMMEDIATELY = SPACE
WITH KEEP_IN_SPOOL = 'X' AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = P_JOBCNT
JOBNAME = 'ZTEMP2'
STRTIMMED = 'X'
PRDMINS = 15
IMPORTING
JOB_WAS_RELEASED = L_RELEASE
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.
ENDIF.
Hope the above helps you.
1. If you want to run something immeidately in the background, then you can use the SUBMIT REPORT option.
2. IF you want to schedule the job, you can call the functions, JOB_OPEN, JOB_SUBMIT / SUBMIT REPORT THROUGHT JOB NUMBER, JOB_CLOSE.
<b>Reward points</b>
Regards