powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какой это язык?)
7 сообщений из 7, страница 1 из 1
Какой это язык?)
    #35232313
FreeBard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на каком языке это? Чисто академический интерес

IF wa_bsid-shkzg = 'H'.
v_temp = wa_bsid-wrbtr.
CONCATENATE '-' v_temp INTO v_value.
CLEAR: wa_bsid-wrbtr.
wa_bsid-wrbtr = v_value.
ENDIF.
...
Рейтинг: 0 / 0
Какой это язык?)
    #35232731
C#C++
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подозреваю, что это язык для хранимых процедур какой-нибудь БД
...
Рейтинг: 0 / 0
Какой это язык?)
    #35232847
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайно не ABAP ?
...
Рейтинг: 0 / 0
Какой это язык?)
    #35511683
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адназначна ABAP4.
Проверяется поле shkzg (Индикатор дебета/кредита) из структуры bsid (Бухгалтерия: вторичный индекс для дебиторов) и если его значение равно 'H', то значение поля wrbtr (Сумма в валюте документа) меняется на отрицательное.

Чесно сказать, за такой алгорим:

v_temp = wa_bsid-wrbtr.
CONCATENATE '-' v_temp INTO v_value.
CLEAR: wa_bsid-wrbtr.
wa_bsid-wrbtr = v_value.

, я-бы руки автору вырвал с корнями, если хотите знать почему - подумайте сами.
...
Рейтинг: 0 / 0
Какой это язык?)
    #35512112
zumTeufel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov
Чесно сказать, за такой алгорим:

v_temp = wa_bsid-wrbtr.
CONCATENATE '-' v_temp INTO v_value.
CLEAR: wa_bsid-wrbtr.
wa_bsid-wrbtr = v_value.

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

Из спортивного интереса, Вы не могли-бы привести свой пример (он ведь коротенький - это недолго) записи этого алгоритма (не выдергивания рук, конечно) на АВАР-е. Просто, чтобы показать образец хорошего стиля, в данном, конкретном случае?
...
Рейтинг: 0 / 0
Какой это язык?)
    #35513831
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zumTeufel
Из спортивного интереса, Вы не могли-бы привести свой пример (он ведь коротенький - это недолго) записи этого алгоритма (не выдергивания рук, конечно) на АВАР-е. Просто, чтобы показать образец хорошего стиля, в данном, конкретном случае?

Да пожалуйста:

IF wa_bsid-shkzg EQ 'H' AND wa_bsid-wrbtr GT 0.
wa_bsid-wrbtr = wa_bsid-wrbtr * ( -1 ).
ENDIF.

1. Проверка wa_bsid-wrbtr на положительное значение необходима, потому как зачем делать отрицательным значение которое уже отрицательно? (по крайней мере первый алгоритм делает отрицательным любое значение поля wa_bsid-wrbtr)

2. wrbtr - есть переменная типа CURR, т.е. валюта, т.е. встроенный тип данных P (длинна 13 цифр с двумя десятичными знаками), а значит поддерживается операция умножения. Вот потому проще произвести одну операцию умножения, нежели четыре операции:
1. Приведение значения временной переменной с преобразованием типа.
2. Конкатенация строк
3. Очистка переменной wa_bsid-wrbtr - вообще не понятно зачем это здесь.
4. Присвоение нового значения с преобразованием типа.

Думаю это понятно?

Дорогой, zumTeufel, надеюсь что не Вы автор сего(т.е. первого) алгоритма :)
...
Рейтинг: 0 / 0
Какой это язык?)
    #35513858
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov
IF wa_bsid-shkzg EQ 'H' AND wa_bsid-wrbtr GT 0.
wa_bsid-wrbtr = wa_bsid-wrbtr * ( -1 ).
ENDIF.


А можно исче короче написать :)

IF wa_bsid-shkzg EQ 'H' AND wa_bsid-wrbtr GT 0.
wa_bsid-wrbtr = - wa_bsid-wrbtr.
ENDIF.

Тады просто знак поменяется и усё.
Не верится?
А возьмите и проверьте. Вот пример.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
REPORT  ZT.

data: c1 type wrbtr,
      c2 type wrbtr,
      v_temp(20) type c,
      v_value(20) type c,
      h(1) type c.

c1 = 1000.
write : / 'C1 = ', c1.
h = 'H'.

if h eq 'H' and c1 GT 0.
   c1 = - c1.
endif.

write : / 'C1 = ', c1.

c1 = 1000.

v_temp = c1.

CONCATENATE '-' v_temp INTO v_value.
CLEAR: c2.
c2 = v_value.

write : / 'C2 = ', c2.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какой это язык?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]