Текущее время: Вт, июл 22 2025, 02:40

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


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

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


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

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