Текущее время: Сб, авг 02 2025, 03:29

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Назначение переменной.
СообщениеДобавлено: Чт, май 10 2007, 20:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, май 22 2006, 15:45
Сообщения: 82
Имеется необходимость множественного вызова процедуры. В ней есть простая строка обработки некой ячейки внутренней таблицы.

Code:
itab-cell01  = itab-cell01 + 10.


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

для этого я пробовал использовать такой код

Code:
field-symbols <f> type any.

concatenate 'itab-' 'cell' number into fname.

assign fname to <f>.

            <f> = <f> + 10.


но к сожалению не работает.
подскажите как можно это реализовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Назначение переменной.
СообщениеДобавлено: Чт, май 10 2007, 21:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
Code:
FIELD-SYMBOLS <F> TYPE ANY.
CONCATENATE 'ITAB-CELL' NUMBER INTO FNAME.
ASSIGN (FNAME) TO <F>.
            <F> = <F> + 10.

я бы ещё переменную number на вшивость проверил...вдруг тама впереди не 0 :)

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Назначение переменной.
СообщениеДобавлено: Чт, май 10 2007, 21:59 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
wax написал(а):
Имеется необходимость множественного вызова процедуры.
...
мне необходимо вместо 01 каждый раз подставлять другие значения.


Ещё есть конструкция DO ... VARYING.

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Назначение переменной.
СообщениеДобавлено: Пт, май 11 2007, 10:53 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, май 22 2006, 15:45
Сообщения: 82
Blizzard написал:
я бы ещё переменную number на вшивость проверил...вдруг тама впереди не 0 :)

Проверял на вшивость. Переменная формируется правильно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 11:10 
Начинающий
Начинающий

Зарегистрирован:
Ср, янв 19 2005, 09:03
Сообщения: 23
Откуда: Москва
А ты заметил разницу в строке "Assign", что Blizzard написал?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 11:37 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, май 22 2006, 15:45
Сообщения: 82
Николаев Александр написал(а):
А ты заметил разницу в строке "Assign", что Blizzard написал?

да)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 13:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
wax написал(а):
Николаев Александр написал(а):
А ты заметил разницу в строке "Assign", что Blizzard написал?

да)

ну низнаю....пробуй сделай прогу такую и запустить сие :D
Code:
REPORT  Z1                            .
DATA: BEGIN OF ITAB,
        CELL01 TYPE I,
        CELL02 TYPE I,
      END OF ITAB.
DATA: NUMBER(2) VALUE '01',
      FNAME(20).

WRITE: / 'BEFORE:', ITAB-CELL01.

FIELD-SYMBOLS <F> TYPE ANY.
CONCATENATE 'ITAB-CELL' NUMBER INTO FNAME.
ASSIGN (FNAME) TO <F>.
<F> = <F> + 10.

WRITE: / 'AFTER', <F>, ITAB-CELL01.


результат:
Code:
Прогр. Z1                   
                           
BEFORE:          0         
AFTER         10          10

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 15:22 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Вы еще обратите внимание, что в последнем примере
'ITAB-CELL' написано большими буквами, а в Вашем маленькими. Попробуйте тоже большими написать.

Ну и еще проверить область видимости itab. Может Вы другую таблицу видите.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 17:25 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, май 08 2007, 15:57
Сообщения: 51
Blizzard 100% прав, браво. и vga прав, при работе с fields-symbols надо case-sensitive работать- поинтер.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 19:35 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
Graf написал(а):
при работе с fields-symbols надо case-sensitive работать- поинтер.


Почему надо? Возьмите пример Blizzard и попробуйте использовать маленькие буквы. На какой системе не будет работать? (сам пока проверил и на 4.6c, и на 2005)

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 20:30 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, май 08 2007, 15:57
Сообщения: 51
Tetty написал:
Graf написал(а):
при работе с fields-symbols надо case-sensitive работать- поинтер.


Почему надо? Возьмите пример Blizzard и попробуйте использовать маленькие буквы. На какой системе не будет работать? (сам пока проверил и на 4.6c, и на 2005)

рекомендую:ABAP351
Advanced and Generic
Programming in ABAP
там все расскажут


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 22:17 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
Graf написал(а):
рекомендую:ABAP351
Advanced and Generic
Programming in ABAP
там все расскажут

Довольно странно, но в Google смог лишь найти ссылки на ABAP351 как сессию на SAP TechEd 2004. Саму презентацию нашёл (ссылка), и там сказано, что Field symbols are not pointers. (На следующей неделе попробую в более доступный BC411 заглянуть.)

P.S. Вот названия функциональных модулей действительно _надо_ писать заглавными буквами.

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 23:40 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, май 08 2007, 15:57
Сообщения: 51
Tetty написал:
Graf написал(а):
рекомендую:ABAP351
Advanced and Generic
Programming in ABAP
там все расскажут

Довольно странно, но в Google смог лишь найти ссылки на ABAP351 как сессию на SAP TechEd 2004. Саму презентацию нашёл (ссылка), и там сказано, что Field symbols are not pointers. (На следующей неделе попробую в более доступный BC411 заглянуть.)

P.S. Вот названия функциональных модулей действительно _надо_ писать заглавными буквами.

field-symbols не поинтер на память как в С, но они указывают на струтуру в апликейшн сервер, а где структура лежит, решает абап, а не железо(так мне тогда[давно] объяснили). в презентации на странице 16 стоит:
Rule: The contents of the token must be in upper case. и это закон в абапе, например для работы с абап мемори. мне кажется, что сап до такой степени натаскан на перформэнс, что они просто сказали машине: тоукен будет тебе передан в памяти в ASCI и там будут стоять только номера больших букв, цифры и еще парочка, все остальное игнорируй.
:)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 12 2007, 23:55 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, май 08 2007, 15:57
Сообщения: 51
классно,теперь я ассистент здесь, завтра пойду просить прибавку в зарплате
;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, май 13 2007, 11:30 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Graf написал(а):
field-symbols не поинтер на память как в С, но они указывают на струтуру в апликейшн сервер, а где структура лежит, решает абап, а не железо


"Смешались в кучу - кони, люди". Как то все очень сумбурно объясняете.
ИМХО, возможность указать у field-symbols TYPE ANY и является косвенным, а но мой взгляд и 100% доказательством, что это именно указатель. А указатель - это как правило 4 байтовое целое, содержащее не непосредствнно данные, а адрес в памяти к этим данным. Размер данных, на которые указатель ссылается, не важен. Это в дальнейшем должна решать программа с помощью статического или динамического кастинга.
Для работы с указателями с языке ассемблера существуют специальные операторы [dword|word|byte] ptr (для x86), говорящие что значение надо взять не непосредственно из памяти:
mov ax,ds:[002ch]
а по смещению, взятого из ячейки, которая является указателем:
mov ax, word ptr ds:[002ch]

Graf написал(а):
Rule: The contents of the token must be in upper case. и это закон в абапе

Соглашусь с вами, видимо есть реализации с приведением к upper-case, а есть и без оных. Поэтому для переносимости кода надо всегда использовать верхний регистр. И все это пляшет от производительности, во первых, и от кривых рук программеров сапа, во-вторых, забывающих что надо скидывать 5 бит перед сравнением токенов.


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

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


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

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


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

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