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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Вт, апр 28 2009, 13:53 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Lars написал:
А по тому коду, который приведен ваше, можно сделать выводы о том, что не используется наследование, например?
Или что приведенный метод внутри не использует концепцию полиморфизма и инкапсуляции?
Тоесть Вы считаете, что вызов статического метода экземпляра класса - это не ООП, или статический метод и атрибуты - это только чтобы обертку сделать?


Объясню чем я руководствовался...
Code:
CALL METHOD ycl_idoc=>e1edk01
  EXPORTING
    iv_action = 'A'
    is_e1edk01 = ls_e1edk01
  CHANGING
    ct_edidd = lt_edidd[].

1. Класс вызывает специальный метод для определеннго сегмента. В ООП скорее класс был бы унаследован от общего класса обработки IDOCs и вызывал бы "безликий" (не содержащий имени сегмента) метод общего интерфейса.
2. Статический метод изменяет локальную табличку - очень похоже на обертку. Иначе табличка была бы аттрибутом класса и не нуждалась бы в передаче параметром
3. В ООП я бы ожидал чего-то такого (на основании 1 и 2).
Code:
  ycl_e1edk01->append_seg( ls_e1edk01 ).
........
  lt_edidd = ycl_e1edk01->ycl_e1edk01.


P.S. это всего лишь мои предположения, идею неразвития holy war поддерживаю и умолкаю... Просто счел уместным написать, по каким признакам мне почудилось именно то, что я написал выше...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 18:45 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 23 2009, 13:31
Сообщения: 49
Откуда: Москва
Пол: Мужской
Konstantin Anikeev написал:
Lars написал:
А по тому коду, который приведен ваше, можно сделать выводы о том, что не используется наследование, например?
Или что приведенный метод внутри не использует концепцию полиморфизма и инкапсуляции?
Тоесть Вы считаете, что вызов статического метода экземпляра класса - это не ООП, или статический метод и атрибуты - это только чтобы обертку сделать?


Объясню чем я руководствовался...
Code:
CALL METHOD ycl_idoc=>e1edk01
  EXPORTING
    iv_action = 'A'
    is_e1edk01 = ls_e1edk01
  CHANGING
    ct_edidd = lt_edidd[].

1. Класс вызывает специальный метод для определеннго сегмента. В ООП скорее класс был бы унаследован от общего класса обработки IDOCs и вызывал бы "безликий" (не содержащий имени сегмента) метод общего интерфейса.
2. Статический метод изменяет локальную табличку - очень похоже на обертку. Иначе табличка была бы аттрибутом класса и не нуждалась бы в передаче параметром
3. В ООП я бы ожидал чего-то такого (на основании 1 и 2).
Code:
  ycl_e1edk01->append_seg( ls_e1edk01 ).
........
  lt_edidd = ycl_e1edk01->ycl_e1edk01.


P.S. это всего лишь мои предположения, идею неразвития holy war поддерживаю и умолкаю... Просто счел уместным написать, по каким признакам мне почудилось именно то, что я написал выше...


Подход Константина, похоже самый оптимальный.

Только у меня у самого появились сомнения насчет моей идеи:
стоит ли городить столько классов сколько есть сегментов в IDOC,
только ради возможности поиска...

Цитата:
Structure Name
ORDERS05 Purchasing/Sales

Header

E1EDK01 IDoc: Document header general data
E1EDK14 IDoc: Document Header Organizational Data
E1EDK04 IDoc: Document header taxes
E1EDKA3 IDoc: Document Header Partner Information Additional Data

E1EDK02 IDoc: Document header reference data
E1EDK17 IDoc: Document Header Terms of Delivery
E1EDK18 IDoc: Document Header Terms of Payment
E1EDKT1 IDoc: Document Header Text Identification
E1EDKT2 IDoc: Document Header Texts

Rows ( Items )

E1EDP01 IDoc: Document Item General Data
E1EDP02 IDoc: Document Item Reference Data
E1CUREF CU: Reference order item / instance in configuration
E1ADDI1 IDoc: Additionals
E1EDP03 IDoc: Document Item Date Segment
E1EDP04 IDoc: Document Item Taxes
E1EDP05 IDoc: Document Item Conditions


(И это только малая часть...)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 19:00 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Maxus написал:
Для меня лично большой плюс в том, чтобы можно было через where-used посмотреть,
где именно был данный сегмент изменен. Особенно важно если человек 15 работает,
и время от времени с IDOC-ами непонятно что происходит.


Честно говоря, не совсем понятна суть конкретной проблемы. :? А зачем вообще что-то изменять в стандартных сегментах? Пускай себе будут как есть. Если что-то надо свое, так расширяйте IDoc. Если же программа просто создает IDoc и заполняет сегменты данными, то по идее такая программа должна быть одна и ее должно быть нетрудно отловить. Ну а кто в программе покопался - это уж вообще проще простого установить.

По-любому должны быть стандарты development и документация. Правда заставить все 15 человек следовать стандартам и писать документацию - это уже отдельная проблема. Тут вон дай бог каждого принудить хоть тексты сообщений не писать прямо в коде. :roll:

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 19:53 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 23 2009, 13:31
Сообщения: 49
Откуда: Москва
Пол: Мужской
Jelena написала:
Честно говоря, не совсем понятна суть конкретной проблемы. :? А зачем вообще что-то изменять в стандартных сегментах? Пускай себе будут как есть.


Так уж получилось, что до меня был выбран путь менять-добавлять-удалять стандартные сегменты.
Теперь приходится со всем этим справляться.


Jelena написала:
Если что-то надо свое, так расширяйте IDoc. Если же программа просто создает IDoc и заполняет сегменты данными, то по идее такая программа должна быть одна и ее должно быть нетрудно отловить. Ну а кто в программе покопался - это уж вообще проще простого установить.


Есть куча юзер-экзитов и функций, классов, где все это происходит. Тем более, на отдельный класс изменения сегмента E1EDK01 можно поставить break-point или же использовать where-used.


Jelena написала:
По-любому должны быть стандарты development и документация. Правда заставить все 15 человек следовать стандартам и писать документацию - это уже отдельная проблема. Тут вон дай бог каждого принудить хоть тексты сообщений не писать прямо в коде. :roll:


По-любому. Но одно дело документация, которой как Вы правильно сказали не все умеют пользоваться, другое дело "Where-Used", который нам все покажет и расскажет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 20:52 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Я бы лично не стала заморачиваться никакими классами, а максимум попыталась все собрать в какой-нибудь include или ФМ. Ход мысли примерно такой:
1) Многие мои коллеги - зубры мейнфрейма и ко всяким там модным веяниям типа ООП относятся подозрительно. 15 человек будет проще подбить следовать стандарту, если он будет использовать более привычные им технологии.
2) Ctrl-F работает куда быстрее, чем "where-used".

Вообще наверное имеет смысл скорее поинтересоваться мнением 15 коллег, чем форума. Если они не поддержат вашу инициативу, то грош цена будет этому "where-used", если кто-то будет продолжать все делать по старинке. Чистое IMHO, конечно.

А что вы, кстати, с существующим кодом будете делать - переписывать? Нам бы на это время не дали...

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 21:02 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 23 2009, 13:31
Сообщения: 49
Откуда: Москва
Пол: Мужской
Jelena написала:
Я бы лично не стала заморачиваться никакими классами, а максимум попыталась все собрать в какой-нибудь include или ФМ. Ход мысли примерно такой:
1) Многие мои коллеги - зубры мейнфрейма и ко всяким там модным веяниям типа ООП относятся подозрительно. 15 человек будет проще подбить следовать стандарту, если он будет использовать более привычные им технологии.
2) Ctrl-F работает куда быстрее, чем "where-used".


Если так рассуждать, зачем нам вообще какие-то новые технологии и решения. Давайте все делать по-старинке, так надежнее. И соберем весь код в одном include на 20000 LOC. Весело будет.

Jelena написала:
Вообще наверное имеет смысл скорее поинтересоваться мнением 15 коллег, чем форума. Если они не поддержат вашу инициативу, то грош цена будет этому "where-used", если кто-то будет продолжать все делать по старинке. Чистое IMHO, конечно.


Коллеги в курсе, не стоит беспокоиться. Если решение будет разумным и логичным, то поддержат - никуда не денутся.

Jelena написала:
А что вы, кстати, с существующим кодом будете делать - переписывать? Нам бы на это время не дали...


Переписывать будем по ходу изменений. Лучше какая-никакая, но система, чем непонятно что.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: OOP при создании структуры IDOC
СообщениеДобавлено: Чт, май 21 2009, 21:15 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 23 2009, 13:31
Сообщения: 49
Откуда: Москва
Пол: Мужской
Небольшой пример (после изменений концепции)

Для создания новых сегментов ORDERS05:

Code:
ycl_e1edp01->append( ls_e1edp01 ).
ycl_e1edp05->append( ls_e1edp05 ).


Для изменения:
Code:
ycl_e1edk01->modify( ls_e1edk01 ).


Таким образом, все изменения в IDOC отслеживаются с помощью "Where-Used"


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

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


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

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


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

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