kenzhemax

Аватар пользователя kenzhemax
Имя: 
Максим
Фамилия: 
Кенжебаев
Компания: 
CBS ERP
Дата рождения: 
воскресенье, января 3, 1988
Twitter: 
kenzhemax
Gtalk: 
kenzhemax@gmail.com
Magent: 
kenzhemax@mail.ru
Google +: 
kenzhemax
Skype: 
kenzhemax
Хабр: 
kenzhemax

Материалы пользователя

Выгрузка ABAP Source на компьютер

Есть такая стандартная программа для выгрузки ABAP исходных кодов на персональный компьютер. Иногда бывает очень полезно.
Название программы: REPTRAN.

Теги:

ABAP разработка через IDE Eclipse.

Новинка сезона, ABAP разработка через IDE Eclipse. Безумно удобно! применимо на практике!
Clipboard01_0.png

горячие клавиши ABAP редактора

Добрый день. Ниже описаны сочетания клавиш которые могут быть полезны в ABAP редакторе, а некоторые и вообще в SAP GUI.
Сочетания клавиш:

Ctrl + D: Дублирует любую строку
Ctrl + /: Перемещает курсор в поле ввода транзакции
Ctrl + J: Конвертирует всю строку в нижний регистр кроме первых букв каждого слова
Ctrl + I или Ctrl + Shift + I: Инкрементный поиск
Ctrl + K: переключение регистра строки между верхним и нижним
Ctrl + O: Переход к определенной строке редактора
Ctrl + Shift + S: Сохранить программу на рабочий стол с расширение .abap
Ctrl+Alt+T: Поменять местами строки, текущую с предыдущей
Ctrl+Shift+L/X: Удаляет текущую строчку
Ctrl + "]" и Ctrl + "[": Переход к следующему и предыдущему параграфу соответственно
Ctrl + Shift + Num8 и Ctrl + Shift + Num2: Прокрутка текста в редакторе без перемещения курсора

Пишите хороший код, экономьте своё время, удачи.

Подсветка ABAP синтаксиса в Sublime Text

Нашел на просторах интернета отличный инструмент для подсветки ABAP синтаксиса.
По сути, это плагин для текстового редактора Sublime Text.
Но возможности не ограничиваются подсветкой синтаксиса.
Плагин также добавляет возможности автодополнения кода, инспекции процедур по CTRL+R, а также удобные сниппеты.
Жаль нельзя встроить в SAP GUI вместо стандартного редактора, но тоже может пригодиться.
Некоторых фишек не хватает.
Вот ссылка на сайт автора плагина, рекомендую:
http://www.jaros.in/item/abap-syntax-highlighting-for-sublime-text
В любом случае не за горами использование официального редактора встроенного в Eclipse.
Кто пользовался, прошу поделиться впечатлениями.

сальдо по счету в разрезе контрагента

сальдо по счету в разрезе контрагента через стандартные транзакции можно посмотреть через транзакции fbl5n, fd10n и fk10n.

Теги:

сравнение с RANGE

Будьте осторожны, сравнение с рэнджами при выборке не всегда работает корректно.
следующее выражение может возвращать документы с датой больше чем datum-high.

  1. WHERE bukrs IN bukrs AND
  2. budat LT budat AND

рекомендуемый способ решения - использовать непрерывный SELECT-OPTION и сравнивать с budat-low, вот так:

  1. WHERE bukrs IN bukrs AND
  2. budat < budat-low AND

будьте внимательны, и экономьте своё время.

Теги:

кодировка cp1251

Для чтения с сервера файла записанного в кодировке cp1251 (кириллица Windows) используется следующая незамысловатая конструкция.
Каждый раз вспоминаю...

OPEN DATASET FILE FOR OUTPUT IN LEGACY text mode CODE PAGE '1504'.

Быстрая функция расстояния Левенштейна

Здравствуйте.

Мне удалось значительно оптимизировать свою процедуру нахождения расстояния Левенштейна.
Я добился двукратного увеличения производительности.

Далее прикладываю код оптимизированной процедуры. Пользуйтесь на здоровье.

  1. form dist using s1 type csequence s2 type csequence CHANGING res TYPE i.
  2. ntab TYPE table OF i,
  3. otab TYPE table of i,
  4. ls1 type i, ls2 type i,
  5. t1 type i, t2 type i,
  6. tt2 type i,
  7. x1 type i, x2 type i,
  8. x type i,
  9. inp type i.
  10.  
  11. ls1 = strlen( s1 ) - 1.
  12. ls2 = strlen( s2 ) - 1.
  13. do.
  14. do.
  15. if s1+t1(1) = s2+t2(1).
  16. if t1 = 0.
  17. inp = t2.
  18. elseif t2 = 0.
  19. inp = t1.
  20. read table otab into inp index t2.
  21. insert inp into table ntab.
  22. if t1 = 0.
  23. inp = t2 + 1.
  24. elseif t2 = 0.
  25. inp = t1 + 1.
  26. tt2 = t2 + 1.
  27. read table ntab into x index t2.
  28. read table otab into x1 index t2.
  29. read table otab into x2 index tt2.
  30. if x < x1.
  31. if x < X2.
  32. inp = x + 1.
  33. inp = x2 + 1.
  34. if x1 < x2.
  35. inp = x1 + 1.
  36. inp = x2 + 1.
  37. insert inp into table ntab.
  38. if t2 = ls2.
  39. t2 = 0.
  40. t2 = t2 + 1.
  41. refresh otab.
  42. otab[] = ntab[].
  43. refresh ntab.
  44. if t1 = ls1.
  45. t1 = t1 + 1.
  46. res = inp.

Правильная функция расстояния Левенштейна

Здравствуйте.

На нашем сайте недавно публиковался материал посвященный алгоритму определения похожести строк - расстоянию Левенштейна: http://abap.kz/blog/74/user/inikolax . Автор материала inikolax

Я обнаружил ошибку в предоставленном по ссылке алгоритме, неверно определяется расстояние, в ситуациях с различающимся первым знаком двух сравниваемых строк.

Чтобы исправить ошибку я переписал функцию, заодно оптимизировал выполнение с помощью хэшированной таблицы.

Мне удалось добиться прироста производительности в 6%. Что сэкономило час времени для массовой обработки.
Я использовал для удобства составной ключ хэшированной таблицы, думаю, что если переписать алгоритм так, чтобы для ключа использовалось одно поле, можно добиться ещё большего прироста.

Далее прикладываю исходный код процедуры, вы можете его оптимизировать ещё больше, и опубликовать на нашем сайте.

Спасибо за внимание.

  1. form dist using s1 type csequence s2 type csequence CHANGING res TYPE i.
  2. BEGIN OF rec,
  3. i1 type i,
  4. i2 type i,
  5. d type i,
  6. end of rec.
  7. ztab type HASHED TABLE OF rec WITH UNIQUE key i1 i2,
  8. rtab type rec,
  9. mtab type rec,
  10. mtab1 type rec,
  11. mtab2 type rec,
  12. ls1 type i, ls2 type i, t1 type i, t2 type i, tt1 type i, tt2 type i.
  13.  
  14. ls1 = strlen( s1 ).
  15. ls2 = strlen( s2 ).
  16. t1 = 1.
  17. t2 = 1.
  18. do.
  19. do.
  20. tt1 = t1 - 1.
  21. tt2 = t2 - 1.
  22. rtab-i1 = t1.
  23. rtab-i2 = t2.
  24. if s1+tt1(1) = s2+tt2(1).
  25. if tt1 = 0.
  26. rtab-d = tt2.
  27. elseif tt2 = 0.
  28. rtab-d = tt1.
  29. read table ztab WITH TABLE KEY i1 = tt1 i2 = tt2 into mtab.
  30. rtab-d = mtab-d.
  31. insert rtab into table ztab.
  32. if tt1 = 0.
  33. rtab-d = t2.
  34. elseif tt2 = 0.
  35. rtab-d = t1.
  36. read table ztab WITH TABLE KEY i1 = tt1 i2 = tt2 into mtab.
  37. read table ztab WITH TABLE KEY i1 = tt1 i2 = t2 into mtab1.
  38. read table ztab WITH TABLE KEY i1 = t1 i2 = tt2 into mtab2.
  39. if mtab-d < mtab1-d.
  40. if mtab-d < mtab2-d.
  41. rtab-d = mtab-d + 1.
  42. rtab-d = mtab2-d + 1.
  43. if mtab1-d < mtab2-d.
  44. rtab-d = mtab1-d + 1.
  45. rtab-d = mtab2-d + 1.
  46. insert rtab into table ztab.
  47. if t2 = ls2.
  48. t2 = 1.
  49. t2 = t2 + 1.
  50. if t1 = ls1.
  51. t1 = t1 + 1.
  52. res = rtab-d.

Замена типа стандартного сообщения SAP

Здравствуйте.

Сегодня я расскажу вам способ, как сменить тип стандартного сообщения SAP с зеленого на красное например.

Для этого вам нужно нажать двойным щелчком на сообщение, и в описании посмотреть его номер, например BF00210.

Чтобы сменить тип этого сообщения, нужно в транзакции OBA5 указать прикладную область, это первые четыре знака из номера сообщения, в нашем случае BF00, затем добавить строчку с записью 210, и указать нужный тип сообщения, в нашем случае это "E" (красный).

bf00210.jpg

Сохраняем, проверяем, работает.

Удачного вам рабочего дня!

Страницы