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

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


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

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


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

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