Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Jun 19, 2008 2:52 pm Post subject: Re: assign на table
Gleb wrote:
В чем ошибка, почему не происходит назначение?
Назначаю field-symbol на структуру, описаную в программе SAPMV56A как
TABLES: vttk, *vttk.
Насколько я понимаю Gleb хотел прицепиться к хедеру, написал он все правильно. Gleb, если у вас не подцепляется хедер посмотрите в отладчике, есть ли такая переменная в этом месте. Для этого в поля отладчика надо написать
Code:
(SAPMV56A)VTTK
ЗЫ: хотя судя по теме все таки к таблице Следующий раз пишите яснее, пожалуйста. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Thu Jun 19, 2008 5:14 pm Post subject:
Может пул модулей SAPMV56A не загружен в память?
Если ни разу не вызывались подпрограммы из этого пула, он еще не находится в памяти, поэтому ассигн не будет работать.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Jun 19, 2008 11:34 pm Post subject:
Gleb wrote:
Как проверить, что пул модулей загружен в память?
И как его загрузить?
Если таблица объявлена в глобальных данных какого то пула, то доступ к ней через assign можно получить только после того как будет вызвана одна из программ или ФМ. Что бы проверить доступна ли в нужный момент ваша таблица, поместите break в тот кусок, где соборались делать ассайн, и в отладчик вставьте
Code:
(SAPMV56A)VTTK[]
для таблицы или
Code:
(SAPMV56A)VTTK
для хедера. Если в отладчике вы увидите эту таблицу, то все ок, вы сможете ее подцепить, ну а если увидите, что такой переменной нет, то либо вы ошиблись в написании переменной(программа по-другому называется или переменная), либо из этого пула ни чего не вызывалось. В последнем случае надо искать другое место, когда эта переменная будет доступна. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Jun 20, 2008 8:55 am Post subject:
Gleb wrote:
Как проверить, что пул модулей загружен в память?
И как его загрузить?
Если правильно Вас понимаю, нет смысла получать данные из другой программы, если она не загружена в память, все равно данных там нет. НО иногда бывает нужно использовать подпрограммы из другой программы (в данном случае из пула модулей), чтобы провести вычисления для получения данных. То есть сэмулировать действие другой программы, не вызывая ее полностью, а вызвав только некоторые подпрограммы. Тогда можно пойти по такому алгоритму:
Code:
TABLES: vttk.
FIELD-SYMBOLS: <fs> TYPE vttk.
ASSIGN ('(SAPMV56A)VTTK') TO <fs>.
IF NOT <fs> IS ASSIGNED.
* пробуем загрузить пул модулей, вызвав любую подпрограмму
PERFORM initialize_data(SAPMV56A).
ASSIGN ('(SAPMV56A)VTTK') TO <fs>.
ENDIF.
CHECK <fs> IS ASSIGNED.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.