Текущее время: Пн, июл 21 2025, 22:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Пт, сен 21 2012, 10:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
ArmAnn написал:
Чему бы грабли не учили, а сердце верит в чудеса

Ну чтож, возможно вопрос в будущих программах и решится культурой программирования, но вера в какую-то интересную реализацию подобного вопроса все еще остается :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Пт, сен 21 2012, 10:44 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Korvax написал:
ArmAnn написал:
Чему бы грабли не учили, а сердце верит в чудеса

Ну чтож, возможно вопрос в будущих программах и решится культурой программирования, но вера в какую-то интересную реализацию подобного вопроса все еще остается :)
В общем навряд ли есть такой инструмент... практическая польза сомнительна, а к тому времени как программист будет способен написать такой - приходит понимание насчет культуры :)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Пт, сен 21 2012, 11:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
не совсем то, но можно заворачивать переменные в контекстную структуру:
Code:
    data: begin of        sale
          , vkbur         type vbak-vkbur
          , vkgrp         type vbak-vkgrp
          ...
          , begin of      vbrp1
            , charg       type vbrp-charg     " Партия
            , matnr       type vbrp-matnr
            , kzwi4       type vbrp-kzwi4
            , vrkme       type vbrp-vrkme
            , fkimg       type vbrp-fkimg
          , end of        vbrp1
          , vbrp_t        like table of vbrp1
        ...
        , end of          sale.
....
        clear sale.
        do_something_with_sale
        clear sale.
        do_something_with_sale_2



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Пт, сен 21 2012, 12:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
интересный вариант. )) В дополнение к теме хотел узнать, можно ли переменной вернуть первоначальное состояние? т.е. например объявлена переменная:
DATA a TYPE i VALUE 1.
a = a + a.
Операция CLEAR переведет значение в ноль, а вот как вернуть начальное значение (ну кроме a = 1.)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Пт, сен 21 2012, 12:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
можно совсем уж извернуться, запустить программу в отдельной задаче,
заполнить memory и вынуть оттуда, но вот целесообразность..

напишите подпрограмму и заполните


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Вт, сен 25 2012, 12:49 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Korvax написал:
Хочется универсальное средство, которое можно потом использовать во всех программах, ФМ и т.д.
Как вам такое средство?
Code:
FORM init_globals.

  DATA:
    ls_fieldlist    TYPE rfieldlist,
    lt_fieldlist    TYPE STANDARD TABLE OF rfieldlist.
  FIELD-SYMBOLS:
    <vartable>      TYPE ANY TABLE,
    <variable>      TYPE ANY.

  CALL FUNCTION 'GET_GLOBAL_SYMBOLS'
    EXPORTING
      program            = sy-repid
*     name_pattern       = '*'
    TABLES
      fieldlist          =  lt_fieldlist .

  LOOP AT lt_fieldlist INTO ls_fieldlist.

    CHECK ls_fieldlist-name NE 'SYST'.
    CHECK ls_fieldlist-name NE 'SY'.
    CHECK ls_fieldlist-name NE 'RSJOBINFO'.
    CHECK ls_fieldlist-name NE 'SCREEN'.
    CHECK ls_fieldlist-name NE '%_PRINT'.
    CHECK ls_fieldlist-name NE '%_ARCHIVE'.
    CHECK ls_fieldlist-name NE '%_VIASELSCR'.
    CHECK ls_fieldlist-name NE '%_SSCR[]'.
    CHECK ls_fieldlist-name NE '%_SSCR'.
    CHECK ls_fieldlist-name NE 'VARI'.

    CHECK ls_fieldlist-type NE 'C'.  " константа

    CASE ls_fieldlist-type.
      WHEN 'h'.     " таблица
        ASSIGN (ls_fieldlist-name) TO <vartable>.
        CHECK sy-subrc EQ 0.
        REFRESH <vartable>.

      WHEN OTHERS.
        ASSIGN (ls_fieldlist-name) TO <variable>.
        CHECK sy-subrc EQ 0.
        CLEAR <variable>.
    ENDCASE.
  ENDLOOP.

ENDFORM.                    "init_globals

Перечень очищаемых переменных не окончательный, возможно надо ещё как-то ограничить, чтобы не почистить системные переменные. Кстати, можно заточить, чтобы чистка переменных выполнялось не только в своей программе...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Вт, сен 25 2012, 16:25 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Бородин Игорь написал(а):
Как вам такое средство?

Велосипед с кривыми колесами )) Забыли о статических атрибутах локальных классов и statics переменных. Кроме того, переменные не инициализируются начальными значениями, а просто очищаются


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Вт, сен 25 2012, 16:37 
Начинающий
Начинающий

Зарегистрирован:
Ср, май 16 2012, 10:07
Сообщения: 22
zsap написал:
Бородин Игорь написал(а):
Как вам такое средство?

Велосипед с кривыми колесами )) Забыли о статических атрибутах локальных классов и statics переменных. Кроме того, переменные не инициализируются начальными значениями, а просто очищаются


Нормальное решение. Первый раз вызвать CALL FUNCTION 'GET_GLOBAL_SYMBOLS' и сохранить в Статик таблице, последующие разы восстановить из оной, если так хочется извращаться с чисткой того чего можно избежать.
Но ИМХО прав ArmAnn.
Глобальных как можно меньше, и воздастся Вам меньшим геморроем в поддержке и пониманием и уважением последователей.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: refresh для всех переменных?
СообщениеДобавлено: Ср, сен 26 2012, 09:03 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
zsap написал:
Глобальных как можно меньше
Полностью согласен.


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

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


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

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


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

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