Текущее время: Сб, июл 19 2025, 14:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, янв 02 2012, 22:07 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 15:54
Сообщения: 77
holocron написал(а):
Code:
          perform compare_del using ls_subitem-zz_nposto changing lv_res1.
          if lv_res1 eq 'EQ'....         
          if lv_res1 eq 'LT' or lv_res1 eq 'EQ'.



Ну там ничего страшного по-моему нет ;)
Автором не являюсь, но судя по всему, речь идет о номерах поставок, которые указаны в поле не напрямую, а после третьего слэша.
То есть нет возможности напрямую сравнивать операнды в логических условиях, типа как IF ls_subitem-zz_npostob(2)+4 LT gv_zpart. Да и вероятно в функциональной спецификации было расписано в абзаце что-то типа:

* Если номер поставки соответствует такому-то то Сценарий 1
* Если номер поставки меньше такого-то Сценарий 2
и так далее

В таких случаях есть смысл писать код максимально приближенный к ФС, так как у функционалов семь пятниц на неделе - потом будет быстрее видно, что и как надо поменять. Так что если бы уважаемый автор написал код типа          
IF lv_res1 EQ lc_del_number_equal.... 
то было бы вполне кошерно, а так единственное, что семантика вроде if lv_res1 eq 'LT' поначалу вгоняет в некоторый ступор.

_________________
F5-F6-F7-F8


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Ср, янв 04 2012, 15:52 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Сергей Королев написал:
Code:
  constants :  l_c_TRANSCODE type char9    value 'TRANSCODE' .

    clear l_tcode .
    assign component l_c_TRANSCODE
           of structure wa_zwpcontrol to <fs_tcode> .
    if  not <fs_tcode> is initial .
       move <fs_tcode> to l_tcode .
    endif .

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

и где их только берут...

Вполне нормальный код, если :
а) Тип wa_zwpcontro есть generic (type any, например) .
б) Автор предполагает, что программа wa_zwpcontrol всегда должна иметь поле TRANSCODE. Например, если в конечном итоге она ссылается на структуру в дикшинари, содержащую TRANSCODE. И если эта структура в будущем будет изменена, так что TRANSCODE изчезнет, то и программу надо менять, а дапм будет получен 99% на этапе тестирования девелопером, что гораздо лучше, чем если бы программа с неправильной логикой уехала на QA.

А как вы, господа смешливые, будете получать доступ к компонентам переменных total и extract в ракурсе ведения? Небось тоже поиндусите?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Ср, янв 04 2012, 19:29 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
А в чем сакральный смысл использования EQ вместо знака '='? Неужели не лень набивать два символа вместо одного? Или там оплата посимвольная, как у машинисток? :?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Чт, янв 05 2012, 12:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
= имеет двойное значение, это оператор присваивания и оператор сравнения.
EQ только оператор сравнения. Это ускоряет чтение кода (другим программистом), во всяком случае мне проще понимать код, когда я вижу специальные операторы сравнения.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
matel написал(а):
И если эта структура в будущем будет изменена, так что TRANSCODE изчезнет, то и программу надо менять, а дапм будет получен 99% на этапе тестирования девелопером, что гораздо лучше, чем если бы программа с неправильной логикой уехала на QA.

А что, при изменении структуры программа в дамп не упадет, если напрямую типизированная переменная указана будет?
В указанном коде значение используется только для привоения значения, никакой особой логики здесь не заложено.
Да и анализировать код транзакции в программе имхо не очень то правильно :wink:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пт, янв 13 2012, 17:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Удав написал(а):
matel написал(а):
И если эта структура в будущем будет изменена, так что TRANSCODE изчезнет, то и программу надо менять, а дапм будет получен 99% на этапе тестирования девелопером, что гораздо лучше, чем если бы программа с неправильной логикой уехала на QA.

А что, при изменении структуры программа в дамп не упадет, если напрямую типизированная переменная указана будет?
В указанном коде значение используется только для привоения значения, никакой особой логики здесь не заложено.


Ну напиши, как бы ты сделал это присвоение, при условии, что wa_zwpcontrol -- это input параметр функционального модуля, имеющий тип any.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, янв 16 2012, 10:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
matel написал(а):
Ну напиши, как бы ты сделал это присвоение, при условии, что wa_zwpcontrol -- это input параметр функционального модуля, имеющий тип any.

Я как раз говорил о том, что лучше избегать параметров типа any и использовать их только в том случае, когда без этого не обойтись.
Как раз при использовании событий в ракурсах ведения без FIELD-SYMBOLS действительно не обойтись.
Но в любом случае не делать проверку на успешность ASSIGN мягко говоря неправильно.

Вот альтернативный код.
Я не буду здесь распостраняться на тему использования лишних переменных типа l_tcode ;)
Code:
DATA: BEGIN OF ls_data,
        transcode TYPE sy-tcode,
      END OF ls_data.

...
  CLEAR ls_data. "Можно опустить, т.к. структура  - локальная переменная
  MOVE-CORRESPONDING wa_zwpcontrol TO ls_data.
  IF ls_data-transcode IS NOT INITIAL.
    ...
  ENDIF.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, янв 16 2012, 10:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Работает, правда мы тогда никак не узнаем, есть ли в wa_zwpcontrol компонент transcode или он просто initial.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
matel написал(а):
Работает, правда мы тогда никак не узнаем, есть ли в wa_zwpcontrol компонент transcode или он просто initial.

А зачем нам гадать, есть он там или нет?
Я же уже писал, что в таком случае лучше сразу использовать типизированные параметры. И не нужно будет гадать на кофейной гуще с обнаружением ошибок только в runtime :mrgreen:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, янв 16 2012, 12:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
А если wa_zwpcontrol может, скажем, быть трех разных типов, каждый из которых, по убеждению автора, обязан содержать поле transcode?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, янв 16 2012, 13:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Тогда наверное автор должен был просто выделить transcode в отдельный параметр и не заставлять нас тратить время на такие пустяки.
Поэтому Сергей Королев и привел этот код, чтобы мы такое не писали :lol:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Вт, янв 17 2012, 17:00 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
matel написал(а):
А как вы, господа смешливые, будете получать доступ к компонентам переменных total и extract в ракурсе ведения? Небось тоже поиндусите?

С ракурсом ведения незачем к индусам ходить
Code:
data ls_row type my_table.
ls_row = total.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Пн, мар 05 2012, 19:42 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Code:
"4) Т.к. таблица MSEG достаточно большая (50000 записей в сутки),прошу
"добавить перед поиском проверку на наличие хотя бы одной записи.
  SELECT COUNT( * ) FROM mseg.
  CHECK sy-subrc = 0.


как вам?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Ср, мар 21 2012, 14:39 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Code:
READ TABLE T_BKPF INTO BKPF INDEX 1.
IF T_BKPF-BSTAT NE ' '.  EXIT.  ENDIF.
SELECT SINGLE * FROM T001 WHERE BUKRS = T_BKPF-BUKRS.

А как вам это?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Очередной пример индо-кода
СообщениеДобавлено: Вт, апр 02 2013, 13:06 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Видимо решили меня вчера индусы поздравить с 1 апреля. Вот только неувязка, они даже не догадываются о таком празднике :)
Долго пытался вникнуть что хотели сделать этим нестандартным индусским подходом, а оказалось всё довольно просто. Записать в переменную текущую дату в пользовательском формате.
Code:
constants: c_dot(1)      type c value '.',
           c_slash(1)    type c value '/',
           c_hyphen(1)   type c value '-',
           c_date1(10)   type c value 'DD.MM.YYYY',
           c_date2(10)   type c value 'MM/DD/YYYY',
           c_date3(10)   type c value 'MM-DD-YYYY',
           c_date4(10)   type c value 'YYYY.MM.DD',
           c_date5(10)   type c value 'YYYY/MM/DD',
           c_date6(10)   type c value 'YYYY-MM-DD'.
data:  v_date(10)  type c.
       t_usdef     like usdef occurs 0 with header line.

    t_usdef-bname = sy-uname.
    append t_usdef.
*  Getting user defaults
    call function 'SUSR_GET_USER_DEFAULTS'
      tables
        users = t_usdef.

    v_date = sy-datum.

    case t_usdef-datfm.
      when c_date1.
        concatenate v_date+6(2) v_date+4(2) v_date+0(4)
               into v_date separated by c_dot.
      when c_date2.
        concatenate v_date+4(2) v_date+6(2) v_date+0(4)
               into v_date separated by c_slash.
      when c_date3.
        concatenate v_date+4(2) v_date+6(2) v_date+0(4)
               into v_date separated by c_hyphen.
      when c_date4.
        concatenate v_date+0(4) v_date+4(2) v_date+6(2)
               into v_date separated by c_dot.
      when c_date5.
        concatenate v_date+0(4) v_date+4(2) v_date+6(2)
               into v_date separated by c_slash.
      when c_date6.
        concatenate v_date+0(4) v_date+4(2) v_date+6(2)
               into v_date separated by c_hyphen.
    endcase.
P.S. Какие же все-таки трудолюбивые люди :mrgreen:

_________________
В SAPе есть всё, просто вы чего-то не нашли.


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

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


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

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


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

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