Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9190

Re: Spool error: internal error 0000000028/ 128 in spooler (Object not found)

$
0
0
I usually post a reply when I have found the answer to a question I posted.  This one dragged out so long I guess I forgot.  Thanks for the reminder.
I’m trying to re-trace my steps to say how I found the solution, it’s turning out to be as difficult as finding the solution the first time.
Our problem was in a HR inbound interface program that called 'HR_INFOTYPE_OPERATION'.  The problem only occurred when the program was run in the background.  I tracked the problem down to a combination of the commit that happens in this function and the WRITE inside in the same loopseemed to cause a memory problem that appeared as a few different types of spool/TEMSE errors.  For this reason I added the nocommit parameter and moved the WRITE of the ERROR table to after the data processing loop this seemed to clear up my issue.
Originally we had:
Loop at i_tab     
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
Exporting
Nocommit      = ‘’
Importing
return        = t_returnkey           = gv_key.
If t_return in not initial
Write error msg
endif.
endloop
With this we had a couple of different problems
  1. when the internal table was large and the program is run in the background the job would run for ever; eg 12,000 records took over 8 hours and we stopped it.
    • I can't find the exact links that directed me to  the answer.  I do recall that they considered it a best practice when using the FM HR_INFOTYPE_OPEATION to follow it with a call to FM HR_PSBUFFER_INITIALIZE.
    • I did find this link, it give more details, it talks about performance issues with logical DB ogical DB http://www.****************/Tutorials/HRABAP/Buffers/Index.htm
  2. the spool/TEMSE errors (this thread)
    • This error showed itself in a number of different ways and took a lot longer to fix. From experience and the way this error was appearing I figured it had to be an memory error.  I could not find a way to force a memory dump at particular points in the program (as I have done
      in other languages) and continue running.
    • I don’t recall exactly what directed me to this but I found the combination of the commit that happens in this function and the WRITE inside in the same loop
New version of code:
Loop at i_tab    
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
Exporting
Nocommit      = ‘X’
Importing
return        = t_return
key           = gv_key.
CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
If t_return in not initial
Append t_return to t_error_tab
endif.
endloop
Loop at t_error_tab into w_error_line
Write w_error_line
Endloop
After this making these changes we have not had either issue.

CORRECTION - This change was NOT fully tested and did NOT make it into production.  Higher priority work came up and we have not gone back to this.  I apologize for the confusion.

Hope this helps

 


Viewing all articles
Browse latest Browse all 9190

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>