Текущее время: Пт, авг 01 2025, 10:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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