SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

assign на table



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Gleb
Участник
Участник



Joined: 18 Jan 2008
Posts: 32

PostPosted: Thu Jun 19, 2008 1:35 pm    Post subject: assign на table Reply with quote

В чем ошибка, почему не происходит назначение?
Назначаю field-symbol на структуру, описаную в программе SAPMV56A как
TABLES: vttk, *vttk.

Code:
  FIELD-SYMBOLS: <fs> TYPE vttk.
  ASSIGN ('(SAPMV56A)VTTK') TO <fs>.
  CHECK <fs> IS ASSIGNED.


Насколько знаю, директива TABLES всегда описывает глобальные данные.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Jun 19, 2008 2:33 pm    Post subject: Reply with quote

Code:
  FIELD-SYMBOLS: <fs> TYPE VTTK_TAB.
  ASSIGN ('(SAPMV56A)VTTK[]') TO <fs>.
  CHECK <fs> IS ASSIGNED.
Back to top
View user's profile Send private message Blog
XXX_:)
Аналитик
Аналитик


Age: 41
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Thu Jun 19, 2008 2:52 pm    Post subject: Re: assign на table Reply with quote

Gleb wrote:
В чем ошибка, почему не происходит назначение?
Назначаю field-symbol на структуру, описаную в программе SAPMV56A как
TABLES: vttk, *vttk.

Насколько я понимаю Gleb хотел прицепиться к хедеру, написал он все правильно. Gleb, если у вас не подцепляется хедер посмотрите в отладчике, есть ли такая переменная в этом месте. Для этого в поля отладчика надо написать
Code:
(SAPMV56A)VTTK

ЗЫ: хотя судя по теме все таки к таблице Embarassed Следующий раз пишите яснее, пожалуйста.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 190
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jun 19, 2008 5:14 pm    Post subject: Reply with quote

Может пул модулей SAPMV56A не загружен в память?
Если ни разу не вызывались подпрограммы из этого пула, он еще не находится в памяти, поэтому ассигн не будет работать.
Back to top
View user's profile Send private message Blog Visit poster's website
Gleb
Участник
Участник



Joined: 18 Jan 2008
Posts: 32

PostPosted: Thu Jun 19, 2008 9:07 pm    Post subject: Reply with quote

Как проверить, что пул модулей загружен в память?
И как его загрузить?
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 41
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Thu Jun 19, 2008 11:34 pm    Post subject: Reply with quote

Gleb wrote:
Как проверить, что пул модулей загружен в память?
И как его загрузить?

Если таблица объявлена в глобальных данных какого то пула, то доступ к ней через assign можно получить только после того как будет вызвана одна из программ или ФМ. Что бы проверить доступна ли в нужный момент ваша таблица, поместите break в тот кусок, где соборались делать ассайн, и в отладчик вставьте

Code:
(SAPMV56A)VTTK[]
для таблицы или
Code:
(SAPMV56A)VTTK
для хедера. Если в отладчике вы увидите эту таблицу, то все ок, вы сможете ее подцепить, ну а если увидите, что такой переменной нет, то либо вы ошиблись в написании переменной(программа по-другому называется или переменная), либо из этого пула ни чего не вызывалось. В последнем случае надо искать другое место, когда эта переменная будет доступна.
_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 190
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Jun 20, 2008 8:55 am    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.