Текущее время: Чт, июн 19 2025, 19:41

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: WA
СообщениеДобавлено: Вт, ноя 09 2004, 16:01 
Гость
Помогите начинающему! Поясните что такое wa(work area) и с чем её едят, желательно с римером


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 09 2004, 16:14 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Все довольно просто. В САПе есть внутренние таблицы как с заголоком, так и без. Для работы с внутренними таблицами без заголовка (header line) и нужны WA.
Создаешь внутреннюю таблицу и WA со ссылкой на таблицу БД, данные выбираешь selectom во внутреннюю таблицу, а затем, например, в loopе обрабатываешь внутреннюю таблицу.

data int_mara like standard table of mara.
data wa_mara like mara.

select * from mara into table int_mara where...

loop at int_mara into wa_mara where...
...
...
modify int_mara from wa_mara.

endloop.

Примерно так.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 09 2004, 16:52 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, сен 17 2004, 08:10
Сообщения: 1024
Кстати, таблицы с header line тоже в принципе обладают WA, просто она совпадает с названием таблицы.

ТАкже САП рекомендует работать с таблицами без header line.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 09 2004, 19:38 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Manticore написал(а):
ТАкже САП рекомендует работать с таблицами без header line.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WA
СообщениеДобавлено: Ср, ноя 10 2004, 08:10 
Гость
abuser написал(а):
Помогите начинающему! Поясните что такое wa(work area) и с чем её едят, желательно с римером


а если грубо, то это структурированная переменная :-)


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 10 2004, 08:55 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
а действительно почему интересно без header line?

мне они как то больше нравились, чем отдельную work area объявлять....


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 10 2004, 09:44 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
SAP Help сообщает на этот счёт следующее:

Using the header line as a work area means that you can use shorter statements; however, they are not necessarily easier to understand, since you cannot immediately recognize the origin and target of the assignment. Furthermore, the fact that the table and its header line have the same name can cause confusion in operations with entire internal tables. To avoid confusion, you should use internal tables with differently-named work areas.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 10 2004, 11:05 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
ну не знаю...кому что нравится....

по моему меньше confusion когда они одинаково называются

если у SAP Help другое мнение флаг ему в руки :D :D :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 10 2004, 11:35 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, сен 17 2004, 08:10
Сообщения: 1024
В принципе, я согласен с подходом САПа. Это обеспечивает некую инкапсулированность данных таблицы. И потом - преимущество header line только в "укорачивании" синтаксиса кода.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 10 2004, 11:42 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Я привык пользоваться header line, меня одинаковые названия не напрягают, наоборот помогают. Дело вкуса, короче.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Ср, ноя 10 2004, 16:47 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
а огласите <я не знать русский языка> преимущества отдельной от таблицы work area...

и слово инкапсулированность как то мне непонятно в этом контексте...уж лучше confusion :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 11:26 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, сен 17 2004, 08:10
Сообщения: 1024
1. При работе с header line лично я всегда задумываюсь над такими операциями как free, refresh и clear. При работе с WA такого нет - таблица - отдельно, WA - отдельно.

2. Как проверить есть ли записи в таблице с HL? DESCRIBE, потом IF.
В таблице с WA - IF itab IS INITIAL.

Это то что приходит на ум невскидку. Подумать - найдутся еще моменты.

Вы поймите - я не ношу майки с надписями I :D WA internal tables и I :x interna tables with header line. Это мое сугубо личное мнение. Признаю, что WA-таблицы обладают недостатками, но я сторонник именно их использования. Это вопрос скорее стиля разработки.

_________________
- Ничего не поделаешь, - возразил Кот. - Все мы здесь не в своем уме - и ты, и я!
- Откуда вы знаете, что я не в своем уме? - спросила Алиса.
- Конечно, не в своем, - ответил Кот. - Иначе как бы ты здесь оказалась? :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 11:53 
Гость
Manticore написал(а):
1. При работе с header line лично я всегда задумываюсь над такими операциями как free, refresh и clear. При работе с WA такого нет - таблица - отдельно, WA - отдельно.


И думать нечего clear: i_tab[]. -очистка тейблы,clear i_tab - очистка заголовка в случае HL

Manticore написал(а):
2. Как проверить есть ли записи в таблице с HL? DESCRIBE, потом IF.
В таблице с WA - IF itab IS INITIAL.


Точно так же, никакой проблемы:
if i_tab[] is initial.

ИМХО: дело вкуса. Но опять же, даже в исходниках сапа тейблы с HL используются.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 12:16 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
Цитата:
Вы поймите - я не ношу майки с надписями I WA internal tables и I interna tables with header line. Это мое сугубо личное мнение. Признаю, что WA-таблицы обладают недостатками, но я сторонник именно их использования. Это вопрос скорее стиля разработки.


да я и не спорю на счет вкуса...просто подумал вдруг кроме вкуса еще что есть интересное по этому поводу


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

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Через WA работать, конечно, муторно. Приходится писать много саморазумеющегося кода.
Но работать через него бывает полезно, когда производится частое чтение в течении одного логического блока (особенно, если в PERFORM-ах) из внутренней таблицы. Считали значение, потом бац - сбили его. И отсюда появляются логические ошибки. WA бывают полезны в этом плане - с помощью него можно зафиксировать вытащенное значение, чтобы ни одна сволочь случайно его не попортила.
Для уменьшения муторности наделал макросов.
Правда, пока еще просто не успел убедиться в их полезности :-).
Какие-то, возможно, излишни. Каких-то не хватает.
А какие-то еще будут дополняться.

Хотя... Макрос tabtools_define так точно полезен.
==================================
*&---------------------------------------------------------------------*
*& Include /XXX/TABTOOLS
*&---------------------------------------------------------------------*

*==============================================*
define tabtools_define.
data: tbx_&1 type i, " Для хранения позиции курсора
lc_&1 type i, " Для количества строк таблицы
wa_&1 like LINE OF &1. " Work Area для таблицы
end-of-definition.
*==============================================*
define tabappend.
append wa_&1 to &1.
describe table &1 lines lc_&1.
tbx_&1 = lc_&1.
end-of-definition.
*==============================================*
define tabmodify.
modify &1 from wa_&1 index tbx_&1.
end-of-definition.
*==============================================*
define tabdelete.
delete &1 index tbx_&1.
describe table &1 lines lc_&1.
end-of-definition.
*==============================================*
define tablc.
describe table &1 lines lc_&1.
end-of-definition.
*==============================================*
define tabread_index.
describe table &1 lines lc_&1.
end-of-definition.
*==============================================*

==================================
Тестовая программа:
==================================
REPORT ZTABTOOLS_TEST.
tables: yhtrace.
include /xxx/tabtools.

data: itab type yhtrace occurs 0.

tabtools_define itab.

start-of-selection.

select * into table itab
from yhtrace.

tablc itab.
read table itab into wa_itab index lc_itab.
tbx_itab = sy-tabix.

clear wa_itab-trace_id .
tabmodify itab.
tabappend itab.
tabdelete itab.

break-point.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

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


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

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


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

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