Текущее время: Вс, июл 20 2025, 18:15

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


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

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


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

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