Текущее время: Пт, июл 18 2025, 13:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Переменная ЛЮБОГО типа
СообщениеДобавлено: Чт, сен 01 2011, 16:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 29 2011, 15:55
Сообщения: 91
Пол: Мужской
trop написал(а):
недавно перешли на abap?

Недавно


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная ЛЮБОГО типа
СообщениеДобавлено: Чт, сен 01 2011, 16:26 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 29 2011, 15:55
Сообщения: 91
Пол: Мужской
Удав написал(а):
Если есть 2 разных по структуре таблицы, в которых по одному алгоритму обрабатываются поля с одинаковыми именами, то лучше "заморочится" работой с произвольными структурами данных, чем работать методом copy-paste. ;)

Именно так и есть. И не 2, а уже 5. Причем в дальнейшем будет еще больше.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная ЛЮБОГО типа
СообщениеДобавлено: Пт, сен 02 2011, 16:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Рабочий пример
Code:
FORM append_old_data TABLES pt_data_all
                            pt_package
                      USING value(p_tabix) TYPE i
                            value(p_mch_on)
                            pt_fieldmap TYPE tt_comp_fieldmap
                            pt_kfgs TYPE rsdri_th_sfk
                            p_recnum TYPE i.

  DATA: ls_key1 TYPE cube_key,
        ls_key2 TYPE cube_key,
        ls_kfg TYPE rsdri_s_sfk,
        p_ref TYPE REF TO data,
        ls_fieldmap TYPE comp_fieldmap,
        l_dummy TYPE c.

  DATA: BEGIN OF ls_data,
          recordmode  TYPE rodmupdmod,
          recno       TYPE sy-tabix,
          /bic/mch_on TYPE /bic/oimch_on,
        END OF ls_data.

  FIELD-SYMBOLS: <fs> TYPE ANY,
                 <fs_to> TYPE ANY,
                 <fs_from> TYPE ANY,
                 <fs_rec> TYPE ANY,
                 <kyf> TYPE ANY.

  CREATE DATA p_ref LIKE LINE OF pt_package.
  ASSIGN p_ref->* TO <fs_rec>.
  CHECK sy-subrc = 0.
  READ TABLE pt_data_all ASSIGNING <fs> INDEX p_tabix.
  CHECK sy-subrc = 0.
  MOVE-CORRESPONDING <fs> TO ls_key1.
  DO.
    READ TABLE pt_data_all ASSIGNING <fs> INDEX p_tabix.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    MOVE-CORRESPONDING <fs> TO ls_key2.
    IF ls_key1 <> ls_key2.
      EXIT.
    ENDIF.
    CLEAR <fs_rec>.

*       МЕНЯЕМ ЗНАК У ВСЕХ ПОКАЗАТЕЛЕЙ
    LOOP AT pt_kfgs INTO ls_kfg.
      ASSIGN COMPONENT ls_kfg-kyfnm OF STRUCTURE <fs> TO <kyf>.
      CHECK sy-subrc = 0.
      <kyf> = - <kyf>.
    ENDLOOP.
*       MOVE-CORRESPONDING l_s_data -> ls_rec2
    LOOP AT pt_fieldmap INTO ls_fieldmap.
      ASSIGN COMPONENT ls_fieldmap-name_from OF STRUCTURE <fs>
             TO <fs_from>.
      IF sy-subrc <> 0.
        MESSAGE e799(rsm1) WITH text-i13 ls_fieldmap-name_from
                                space space
          INTO l_dummy.
        RETURN.
      ENDIF.
      ASSIGN COMPONENT ls_fieldmap-name_to OF STRUCTURE <fs_rec>
             TO <fs_to>.
      IF sy-subrc <> 0.
        MESSAGE e799(rsm1) WITH text-i12 ls_fieldmap-name_to
                                space space
          INTO l_dummy.
        RETURN.
      ENDIF.
      <fs_to> = <fs_from>.
    ENDLOOP.
   ls_data-recordmode = 'X'.
    ADD 1 TO p_recnum.
    ls_data-recno = p_recnum.
    ls_data-/bic/mch_on = p_mch_on.
    MOVE-CORRESPONDING ls_data TO <fs_rec>.
    APPEND <fs_rec> TO pt_package.
    ADD 1 TO p_tabix.
  ENDDO.

ENDFORM.                    " append_old_data

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная ЛЮБОГО типа
СообщениеДобавлено: Вс, сен 04 2011, 19:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Удав написал(а):
x33z77 написал(а):
Но в общем случае, эффективнее не заморачиваться общими решениями с произвольными структурами данных.


Я бы не стал обобщать так категорично.
Если есть 2 разных по структуре таблицы, в которых по одному алгоритму обрабатываются поля с одинаковыми именами, то лучше "заморочится" работой с произвольными структурами данных, чем работать методом copy-paste. ;)

Что Питону хорошо, то Удаву плохо! :)
Согласен с x33z77 в плане эффективности использования словаря, это мощное подспорье, особенно в такой большой системе. Использование динамического кода "обрубает хвосты", особенно если разработки плохо документируются. Поэтому, если программа по своей сути все-таки привязана к определенным объектам словаря, то лучше избегать динамического кода.
Соглашусь с Удавом, если вашей программе действительно все равно, какие структуры использовать, тогда динамический код оправдан. Например, функция GUI_DOWNLOAD выгружает в файл внутреннюю таблицу любой структуры.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


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

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


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

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


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

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