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 Job processing

Former Member
0 Likes
1,439

After writing a report, I used this Function Module “LIST_TO_ASCI” to copy my report to an internal table (DOWNTAB) because I’ll use that internal table to download a text file on the server using dataset.

Here is my code:

----


FORM DL_REP_SERVER.

DATA: ABAP_LIST LIKE ABAPLIST OCCURS 1,

MV_FILE2 LIKE RLGRAP-FILENAME.

DATA: BEGIN OF DOWNTAB OCCURS 1,

LINE(150),

END OF DOWNTAB.

CLEAR: MV_FILE2.

MV_FILE2 = ‘J:/Downloads/Report.txt’.

CALL FUNCTION 'LIST_TO_ASCI'

EXPORTING

LIST_INDEX = SY-LSIND

TABLES

LISTASCI = DOWNTAB

LISTOBJECT = ABAP_LIST

EXCEPTIONS

LIST_INDEX_INVALID = 1

OTHERS = 2.

OPEN DATASET MV_FILE2 FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC <> 0.

IF SY-SUBRC = 8.

MESSAGE E037 WITH 'File could not be opened'.

ELSE.

MESSAGE E037 WITH 'Error occurs in downloading the file'.

ENDIF.

ENDIF.

LOOP AT DOWNTAB.

TRANSFER DOWNTAB TO MV_FILE2.

ENDLOOP.

CLOSE DATASET MV_FILE2.

ENDFORM. " DL_REP_SERVER

----


My big problem is this, when I’m running my program ordinarily (not as background job), I’m getting all the pages downloaded correctly but when I run it as background job (using SM36), I’m only getting the last page of my report being downloaded. Definitely, I can’t debug it because it’s in background. I can’t figure out why. Hope that I stated my problem clearly. Any help would be greatly appreciated. Thanks.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
692

You can debug batch jobs by going to 'SM37', type in 'JDBG' in the

command line ( no '/' ), put the cursor on the job and press enter - will

take you to the job in debug mode.

You can do this only after the job has finished execution. This will simulate the exact background scenario with the same selection screen values as used in the job also sy-batch will set to 'X'.

So type in the transaction code 'JDBG' and place your cursor on the job after It has finished. It will take you to a SAP program in debug mode. Step through this program which is about 10 lines, after this your program will be executed in the debug mode.

Steps

1. Create variant called BACKGROUND for program to be debugged.

2. Execute ZDEBUGBG (pgm code below) in background for immediate processing.

3. Execute transaction SM50.

4. Select process that runs ZDEBUGBG.

5. Goto 'Program/Session' 'Program' 'Debugging'.

A se80 debug session will open.

6. Change variable W_EXIT to 'E'.

7. Step thru (F6) until ZWBTEST comes up.

1. Go to Transaction SM66 and find your work porocess.

Select the line work process is on and click on the Debugging button.

If this is a custom program, you can put a wait statement in the code to buy yourself sometime.

2. Go to Transaction SM50. From the tool bar "Program/session"->Program->Debugging.

goto SM37 and from Program menu(not sure.. try other menu's)

-->Catchjob . it will goto the active job in debugging mode.

2 REPLIES 2
Read only

Former Member
0 Likes
693

You can debug batch jobs by going to 'SM37', type in 'JDBG' in the

command line ( no '/' ), put the cursor on the job and press enter - will

take you to the job in debug mode.

You can do this only after the job has finished execution. This will simulate the exact background scenario with the same selection screen values as used in the job also sy-batch will set to 'X'.

So type in the transaction code 'JDBG' and place your cursor on the job after It has finished. It will take you to a SAP program in debug mode. Step through this program which is about 10 lines, after this your program will be executed in the debug mode.

Steps

1. Create variant called BACKGROUND for program to be debugged.

2. Execute ZDEBUGBG (pgm code below) in background for immediate processing.

3. Execute transaction SM50.

4. Select process that runs ZDEBUGBG.

5. Goto 'Program/Session' 'Program' 'Debugging'.

A se80 debug session will open.

6. Change variable W_EXIT to 'E'.

7. Step thru (F6) until ZWBTEST comes up.

1. Go to Transaction SM66 and find your work porocess.

Select the line work process is on and click on the Debugging button.

If this is a custom program, you can put a wait statement in the code to buy yourself sometime.

2. Go to Transaction SM50. From the tool bar "Program/session"->Program->Debugging.

goto SM37 and from Program menu(not sure.. try other menu's)

-->Catchjob . it will goto the active job in debugging mode.

Read only

Former Member
0 Likes
692

Hi !

The LIST_TO_ASCII thing is not working correctly in background because the the list-processing in beckground is working not the same as in dialog.

What you can do.

Put the output into an internal table when

sy-batch = 'X'.

Then save the file as usual.

Regards

Rainer

Some points would be nice if that helped a bit.