Ситуация такая: в цикле по таблице с табельными номерами вызываю ФМ HR_INFOTYPE_OPERATION для добавления записей в 15-й инфо-тип. Не отрабатывает весь список табельных номеров, где-то вылетает в дамп по нехватке памяти:
Code:
----------------------------------------------------------------------------------------------------
|Краткий текст |
| SAP paging overflow when storing data in the ABAP/4 memory. |
----------------------------------------------------------------------------------------------------
Вылетает вот в этом месте:
Code:
----------------------------------------------------------------------------------------------------
|Фрагмент исходного текста программы |
----------------------------------------------------------------------------------------------------
|Строк|ИсхднТкст |
----------------------------------------------------------------------------------------------------
| 937|ENDMODULE. |
| 938|*---------------------------------------------------------------------* |
| 939|* MODULE POST_INPUT_CHECKS INPUT. * |
| 940|*---------------------------------------------------------------------* |
| 941|* Funktionscode-Eingabe nach Eingabepruefung * |
| 942|* QNUE4778 Modul in Routinen zerlegt * |
| 943|*---------------------------------------------------------------------* |
| 944|MODULE post_input_checks INPUT. |
| 945| DATA: akt_dynnr(4) TYPE n. |
| 946| |
| 947| if cprel-infty = '0002'. "XYLN212840 |
| 948|* perform check_it0002. "XYLN212840 "VLDN212840_2 |
| 949| perform check_it0002(mp000200). "VLDN212840_2 |
| 950| endif. "XYLN212840 |
| 951|*\begin{delete} "XPVN0384010 |
| 952|* PERFORM check_date_order CHANGING cprel-begda "XYLPH9K000775 |
| 953|* cprel-endda. "XYLPH9K000775 |
| 954|*\end{delete} "XPVN0384010 |
| 955| IF fcode EQ 'UPDL'. fcode = save. ENDIF. "QNUR3 |
| 956| MOVE sy-dynnr TO akt_dynnr. "QNUK60483 |
| 957| IF akt_dynnr(1) EQ t582a-edynr(1). "Einzelbild |
| 958|*\begin{delete} "XPVN0384010_2 |
| 959|* IF psyst-fstat <> FCODE_AZ. "XPVN0384010 |
| 960|* PERFORM check_date_order CHANGING cprel-begda "XPVN0384010 |
| 961|* cprel-endda. "XPVN0384010 |
| 962|* ENDIF. "XPVN0384010 |
| 963|*\begin{delete} "XPVN0384010_2 |
| 964| PERFORM post_input_edynr. " form ABPER, form UPDATE_BUFFER |
| 965| PERFORM fcode_edynr. " Fcode SAVE, LIST,BACK,LEAVE,DSYS |
| 966| PERFORM end_of_screen. " Dyn.Massn., naechstes Bild |
|>>>>>| ELSE. |
| 968| PERFORM fcode(sapfp50m). "Listbild |
| 969| ENDIF. |
| 970|ENDMODULE. |
В отладку выйти не могу, похоже, в операторе CALL DIALOG такое не предусмотрено.
Установить точку прерывания в месте вылета в дамп тоже не получается.
Где системе не хватает памяти?
Если учесть, что перед вызовом я чищу все буфера, которые знаю:
Code:
CALL FUNCTION 'HR_INITIALIZE_BUFFER'
* EXPORTING
* TCLAS = 'A'
* PERNR = 00000000
.
Perform initialize_ps(sapfp50p).
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '0015'
number = it_res-pernr
subtype = it_res-lgart
* OBJECTID =
* LOCKINDICATOR =
validityend = it_res-endda
validitybegin = it_res-endda
recordnumber = it_res-seqnr
record = p0015
operation = it_res-oper
* TCLAS = 'A'
* DIALOG_MODE = '0'
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
return = l_msg
* KEY =
.
Количество записей в таблице 2-3тыс.
Что там ещё отбирает память?