Текущее время: Вс, июл 20 2025, 14:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Ср, апр 24 2013, 18:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
Всем доброго времени суток!
Внезапно начались дампы при вот таком assigne
Code:
  field-symbols: <fs_vbrk> type vbrkvb,
                 <fs_vbpa> type vbpa_tab.
  assign ('(SAPLV60A)XVBRK') to <fs_vbrk>.

Из описания дампа подходит вот это
Цитата:
You address a global function interface, although the
respective function module is not active - that is, is
not in the list of active calls. The list of active calls
can be taken from this short dump.

т.е. группа функций уже в памяти, но ничего, что могло бы инициализировать нужный мне параметр не вызывалось.

Можно ли как-то перехватить подобную ситуацию не доводя дела до дампа?
отказ от assign - не вариант, по крайней мере в ближайшей перспективе
try...catch ситуацию не спасает :(
вариант с анализом стека вызовов - как-то уж слишком сурово и не факт что у пользователей хватит прав на чтение этого стека

есть ли другие варианты?

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Ср, апр 24 2013, 18:56 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Цитата:
группа функций уже в памяти

Видимо все же нет ;)

Если дампит сразу на assign ('(SAPLV60A)XVBRK') to <fs_vbrk> (хотя это очень странно, оно не должно падать ни в коем разе) - то кроме анализа стека выхода нет. Но мне кажется вы что-то недоговариваете. Т.к. результатом присвоения недоступной области памяти будет не присвоенный field-symbol и sy-subrc равный 4.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Ср, апр 24 2013, 19:11 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Согласен с Артемом, не помню, чтобы assign выдавал дамп. Проверьте корректность проверки sy-subrc под отладчиком.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Ср, апр 24 2013, 19:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Нормальная ситуация в системах 7.0-7.01. ФМ из этой группы нет в стеке, это приводит к дампу. Обходил через просмотр стека вызова.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 08:58 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
Цитата:
Но мне кажется вы что-то недоговариваете. Т.к. результатом присвоения недоступной области памяти будет не присвоенный field-symbol и sy-subrc равный 4.

Пономарев Артем, примерно вот так получается
Code:
  field-symbols: <fs_vbrk> type vbrkvb,
                 <fs_vbfa> type vbfavb.
  assign ('(SAPLV60A)XVBRK') to <fs_vbrk>. "после выполнения sy-subrc = 4
  assign ('(SAPLV60A)YVBFA') to <fs_vbfa>.  "после выполнения sy-subrc = 4

  call function 'SD_INVOICE_ENQUEUE'       "грузим в память SAPLV60A
    exporting
      vbrk_vbeln     = s_vbeln-low
    exceptions
      not_found      = 1
      foreign_lock   = 2
      system_failure = 3
      others         = 4.

  assign ('(SAPLV60A)YVBFA') to <fs_vbfa>.  "после выполнения sy-subrc = 0, это глобальные данные
  assign ('(SAPLV60A)XVBRK') to <fs_vbrk>. " а вот здесь получаем дамп ибо интерфейсный параметр

Кодер, насколько я понимаю, наличия группы функций в стеке будет недостаточно, нужно еще и чтобы ФМ в стеке был с требуемым интерфейсным параметром. А здесь печалька, т.к. ФМ-ов там куча как с подходящим интерфейсом так и без, и не факт что каким-нить патчем что-нибудь новое не добавится.
Или в моем случае (внешний assign выполняется в OpenFI-1050 ) такой вариант можно считать фантастическим?

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 10:07 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Если можно, немного отвлеку в сторону.
А зачем в open fi пытатьcя лезть ассигном в сбытовую фактуру?
В фактуре же есть экзиты для правки коммуникационных структур FI-документа, в которых стандартом доступны данные самой фактуры.
Не пробовали их использовать?

Цитата:
The following user exits are available in report SAPLV60B for transfer to accounting (function group V60B):

EXIT_SAPLV60B_001: Change the header data in the structure acchd
You can use this exit to influence the header information of the accounting document. For example, you can change the business transaction, "created on" date and time, the name of the person who created it or the transaction with which the document was created.
EXIT_SAPLV60B_002: Change the customer line ACCIT
You can use this exit to change the customer line in the accounting document. This exit is processed once the ACCIT structure is filled in with data from document header VBRK.
EXIT_SAPLV60B_003: Change the customer line in costing
The customer line is filled in differently for costing. You can use exit 003 to influence the ACCIT structure.
EXIT_SAPLV60B_004: Change a GL account item ACCIT You can add information to a GL account item (such as quantity specifications) with this exit.
EXIT_SAPLV60B_005: User exit for accruals
Once all relevant data for accruals was entered in the GL account item, you can add to this data with this exit.
EXIT_SAPLV60B_006: Change the control line ACCIT
You can use exit 006 to add information to the control line.
EXIT_SAPLV60B_007: Change the installment plan
You can use exit 007 to add information to the installment plan
parameters in the GL account item.
EXIT_SAPLV60B_008: Change the transfer structure ACCCR, ACCIT and ACCHD
After the accounting document is filled in with data, you can use exit 008 to change the document once again.
EXIT_SAPLV60B_010: Item table for customer lines
You can use exit 10 to influence the contents of customer lines before they are created.
EXIT_SAPLV60B_0011: Change the parameter for cash account determination or reconciliation account determination
You can use this exit to change inbound parameters in order to influence account determination.


_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 10:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 superbizon: Так-с, как мне кажется проблема в том, что это не просто интерфейс. параметр. Это интерфейс. параметр, который помечен как глобальный параметр. По факту получается, что у Вас програмка-то уже есть, а переменной в ней еще нету. Гримасы старого Сапа, однако...

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 10:29 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
superbizon, в такой постановке соглашусь с LKU. ASSIGN интерфейсных параметров - ИМХО, очень плохой стиль.

Кодер написал(а):
Нормальная ситуация в системах 7.0-7.01.

:shock: Как-то у нас сильно разное понимание нормального :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 11:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
LKU, open fi нужен чтобы получить данные по создаваемому FI документу, на момент срабатывания сбытовых расширений (весь список, который Вы предоставли я отдебагала до того как лезть в openFI) я не вижу всего что мне нужно в конечном состоянии, а внешний assign в фактуру - для получения сбытовых данных.

Касательно стиля: я в курсе, однако в доступе исключительно на чтение особой угрозы не видела (о возможности дампа при assign узнала вчера )))) ), пока не начались дампы (решение блогаполучно работало 4 месяца, теперь имеем дампы, поиск годной замены assign-у, тестирование что это работает во всех нужных случаях и не цепляет ненужного требует времени, а дампы уже сейчас и их нужно было выключить не выключая разработку завязанную на внешний assign). как-то так...

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 12:27 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Ясно.
Я тоже раньше ни разу не сталкивался с дампами при при ассигне, обычно он возникает уже при попытке обратиться в филд-символу после неудачного ассигна и лечится поверкой sy-subrc.
Раз уж вам нужно спасать ситуацию в продуктиве, попробую предложить варианты:
1. Перед ассигном проверять, что речь идет о FI документе, порождаемом фактурой по коду операции в MKPF (если проблема именно в документах не из SD)
2. Попробовать передачу данных через память: export в со тороны экситов сбыта, import в open fi.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 13:22 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Интересная тема. Узнал новое и хочу поделится.

Действительно, устаревшие технологии решают
http://help.sap.com/abapdocu_702/en/abenglobal_parameters_obsolete.htm

Могу предположить, что стэк нужно читать не только с программой, но и с конкретным ФМ, типа этого
Code:
FIELD-SYMBOLS: <fs_vbrk> TYPE vbrkvb,
                <fs_vbpa> TYPE vbpa_tab.
DATA: t_stack TYPE abap_callstack.

CALL FUNCTION 'SYSTEM_CALLSTACK'
  EXPORTING
    max_level = 0
  IMPORTING
    callstack = t_stack.
READ TABLE t_stack TRANSPORTING NO FIELDS
   WITH KEY mainprogram = 'SAPLV60A'
            blockname   = 'RV_INVOICE_CREATE'.
IF sy-subrc EQ 0.
  ASSIGN ('(SAPLV60A)XVBRK') TO <fs_vbrk>.
ENDIF.

CHECK <fs_vbrk> IS ASSIGNED.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 13:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Пономарев Артем: как видите, по найденному John Doe хелпу - действительно нормальная. "Это не баг, это - фича", что в перевод означает: "за неимением гербовой - используем туалетную".
Ну что поделать? в старых версиях не было ряда привычных уже инструментов.

2 LKU: соглашусь с superbizon. В ряде случаев приходится делать так, т.к. сбыт.экзиты или рано или поздно происходят относительно нужного места. Хотя, конечно же, знаю, что это - моветон

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Чт, апр 25 2013, 13:41 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Так я не про сам по себе инструмент. Хотя штука интересная, спору нет. Не сталкивался раньше.
А про падение в дамп. Раз уж сделали фичу, могли бы и нормальный механизм обработки исключений прикрутить. Для меня вот это ненормально, учитывая что во всех остальных случаях ASSIGN ведет себя предсказуемо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Пт, апр 26 2013, 09:32 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
А нельзя выбирать нужные данные fi документа из базы?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: внешний assign к глобальному интерфейсу
СообщениеДобавлено: Пт, апр 26 2013, 14:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
я вот думаю, а если проверять перед assign-ом что код операции равен VBRK и только в этом случае делать assign и все остальное? (все что сделано после assign должно срабатывать исключительно в случае проводки сбытовой фактуры или ее сторнирования) Возможны ли ситуации когда SD фактура проводится/стронируется с другим кодом операции?

2 weise , нельзя их из базы выбирать, их еще там нет

з.ы. дампы в качестве временного решения пока прикрыли ограничением по списку транзакций :oops:

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

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


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

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


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

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