Текущее время: Чт, мар 28 2024, 17:02

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Временные таблицы AMDP(sqlscript) хранятся в памяти сессии. Как хранить на стороне ханы?
СообщениеДобавлено: Ср, фев 08 2017, 13:15 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 08 2017, 12:39
Сообщения: 3
Коллеги, доброго дня.
При сохранении временного результата внутри AMDP, внезапно, появился дамп о дефиците ресурсов.
Code:
Категория              Дефицит ресурсов
ДинамОшибка            TSV_TNEW_PAGE_ALLOC_FAILED
Краткий текст
    No more memory available to add rows to an internal table.
Что произошло?
    An attempt was made to add rows to an internal table. There was no
    memory available for this however.

No more rows could be added to internal table
  "\CLASS=ZCL_AMDP_RATE_SUM_DIF\METHOD=GET_ZTAXREGA_DATA\DATA=ET_TAB". To make
troubleshooting possible, the table had to be deleted before this log
could be compiled. This means that the table will either be displayed
further down or, if you call the ABAP Debugger from here, with 0 rows.

When the program was terminated, the internal table had the following
characteristics:

Memory location:             Session memory
Row width:            1506
No. of rows:            11905516
Allocated rows:       11905516
Newly requested rows: 8 (in 1 blocks)

Особенно смущает момент "Memory location: Session memory"
Ожидал хранения промежуточной таблицы в памяти ханы. По замыслу, промежуточная таблица должна быть сохранена на стороне ханы и исчезнуть после завершения. Судя по дампу, промежуточный результат(в виде таблицы) копируется на апликейшн сервер и уже он рождает дамп с нехваткой памяти(или это не так?). Как избавиться от этого копирования? Возможно где-то есть хитрое ключевое слово по этому поводу?
Собственно объявление:
Code:
class zcl_amdp_rate_sum_dif definition
  public
  final
  create public .
  public section.
    INTERFACES if_amdp_marker_hdb.
    class-methods: get_ztaxrega_data
    importing
    value(in_where) type string
    exporting
    value(et_tab) type ZRATE_SUM_DIF_RESULT_TAB
  .
  protected section.
  private section.
endclass.


единственный метод:
Code:
class zcl_amdp_rate_sum_dif implementation.
METHOD  get_ztaxrega_data BY DATABASE PROCEDURE FOR HDB
      LANGUAGE sqlscript options read-only
       USING ztaxrega
             bseg
*             but000
             j_3rftax_objectt
             skat
             .
et_tab_st = apply_filter ( ztaxrega, :in_where); " <-- вот на этом этапе дамп с нехваткой памяти
et_tab = select "<-- возвращаем результат только здесь (т.е. ниже места, на котором дамп).
     ... " тут много выбираемого, что для нас не актуально.
from :et_tab_st  as z ;
  endmethod.

В дампе ругается именно на нехватку памяти в строке "et_tab_st = apply_filter ( ztaxrega, :in_where);"


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Временные таблицы AMDP(sqlscript) хранятся в памяти сессии. Как хранить на стороне ханы?
СообщениеДобавлено: Ср, фев 08 2017, 15:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
То что стрелочки стека в дампе нарисованы на против этой строки, еще не означает что стек был именно там. Бывает +/- строка...
Вам же написали отдельно что аллокация была под ET_TAB.

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Временные таблицы AMDP(sqlscript) хранятся в памяти сессии. Как хранить на стороне ханы?  Тема решена
СообщениеДобавлено: Ср, фев 08 2017, 15:22 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 08 2017, 12:39
Сообщения: 3
Таки дошло :)
Если в HDB-шной SQLSCRIPT процедуре просто написать
Code:
et_tab_st = apply_filter ( ztaxrega, :in_where);

(или любое другое присвоение)
то et_tab_st чудесным образом создается на стороне апп. сервера.
Но если объявить et_tab_st с правильным типом в объявлении класса
Code:
class zcl_amdp_rate_sum_dif definition
  public
  final
  create public .

  public section.
  INTERFACES if_amdp_marker_hdb.
  class-methods: get_ztaxrega_data
  importing
  value(in_where) type string
  exporting
  value(et_tab) type ZRATE_SUM_DIF_RESULT_TAB
  .

  data et_tab_st       type table of ztaxrega.  " <---------------------

  protected section.
  private section.
endclass.


то таблица хранится на стороне ханы.

*как перенесем в прод - будет ясно в этом ли дело. (отпишусь)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Временные таблицы AMDP(sqlscript) хранятся в памяти сессии. Как хранить на стороне ханы?
СообщениеДобавлено: Ср, фев 08 2017, 16:55 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 08 2017, 12:39
Сообщения: 3
Итог: проде отработало штатно, я доволен.
Сколько с ханой работаю, всегда есть чем удивить :)
(Будет обломно, если просто память освободилась и теперь её стало хватать.)

2Kengur Думаю, то был инлайн. Если проблема повторится, проверю c хинтами на отключение оного и посмотрю на какую аллокацию будет ругаться.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Временные таблицы AMDP(sqlscript) хранятся в памяти сессии. Как хранить на стороне ханы?
СообщениеДобавлено: Вт, фев 14 2017, 12:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
У меня без объявления работает нормально. Как тогда работает хранимая процедура, если это все обсчитывается на БД.

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.RU Bot, Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB