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

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Некорректное считывание значения переменной из TVARVC в подпрограмме.
СообщениеДобавлено: Пн, дек 14 2015, 17:13 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 09 2013, 10:52
Сообщения: 25
Добрый день всем.
Вопрос в следующем: в подпрограмме заполнения поля есть простенький кодец:
В подпрограмме запуска:
Code:
SELECT SINGLE LOW FROM TVARVC INTO lv_tvarvc_low
  WHERE NAME EQ 'ZBPC_LOAD_CALMONTH'
    AND TYPE EQ 'P'
    AND NUMB EQ ''.

IF sy-subrc EQ 0 AND lv_tvarvc_low IS NOT INITIAL.
  gv_calmonth = lv_tvarvc_low.
ELSE.
  CONCATENATE sy-datum(6) '01' INTO l_date.
  gv_calmonth = l_date(6).
ENDIF.

В подпрограмме поля:
Code:
RESULT = gv_calmonth.


Но есть очень странная проблема:
Меняем значение переменной, жмем сохранить, заходим в RSA1, запускаем ППД и в результате в поле проставляется как новое значение, так и старое (которое было в переменной до изменения).
Если же после сохранения значения переменной подождать 1-2 минуты и запустить ППД, то значение в поле проставляется корректно.

Почему так происходит?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Некорректное считывание значения переменной из TVARVC в подпрограмме.
СообщениеДобавлено: Вт, дек 15 2015, 10:03 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, фев 09 2011, 07:19
Сообщения: 752
Откуда: Сибирь
Пол: Мужской
Для таблицы TVARVC включена полная буферизация. Это можно увидеть в тр. se12 нажав "Технические параметры настройки". Синхронизация буфера происходит как раз примерно через 1-2 минуты (наверняка это настраивается, но я не искал).
Цитата:
How are the Local Buffers Synchronized?
A buffered table is generally read on all application servers and held in the buffer there. If a program changes the data contained in the table on an application server, this is noted in the log table by the database interface. The buffers still have the old status on all the other application servers, so that the programs might read obsolete data.
A synchronization mechanism runs at a fixed time interval, usually every 1-2 minutes. The log table is read and the buffer contents that were changed by other servers are invalidated. In the next access, the data of invalidated tables is read directly from the database and updated in the bu

http://help.sap.com/erp2005_ehp_04/helpdata/EN/cf/21f244446011d189700000e8322d00/content.htm

То есть при считывании из TVARVC применяте BYPASSING BUFFER в SELECT.
http://sapabap-4.blogspot.ru/2015/08/bypassing-buffer-in-select.html

Ещё есть вариант вместо TVARVC http://02081977.blogspot.ru/2014/02/tvatv-constats.html

_________________
Ешьте рыбу, в ней фосфор.
__
Чат в Telegram по SAP BW: http://t.me/BW_SAP


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректное считывание значения переменной из TVARVC в подпрограмме.
СообщениеДобавлено: Вт, дек 15 2015, 12:44 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 09 2013, 10:52
Сообщения: 25
Спасибо большое!!!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Некорректное считывание значения переменной из TVARVC в подпрограмме.
СообщениеДобавлено: Вт, дек 15 2015, 13:03 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 09 2013, 10:52
Сообщения: 25
Самое интересное, что есть транзакция /$sync
Она, вроде бы, тоже сбрасывает буферы. Но что-то она мне не особо помогала.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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