Блог пользователя kenzhemax

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: Прокрутка текста в редакторе без перемещения курсора

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

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

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

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

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

  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

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

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

ALV Colors

нормальные функции в SAP

не знаю как вы, а я давно ждал нормальных функций в сап.
и вот теперь, можно писать очень красиво, и намного компактнее.
69-aba17671c8.jpg

юмор для абапера

прикольная штука: можно создавать видимость абапера 85 левела.
http://entropii.net/sap/abap_typer/

определение последней даты месяца :)

Как искал я в интернете функциональный модуль, для определения последней даты месяца, а нашел вот такую статью на ithappens:

источник: http://ithappens.ru/story/9560

Последних лет десять я занимаюсь SAP. Практически вся прикладная часть системы доступна разработчикам конечного пользователя в исходных кодах. Язык программирования ABAP/4, правда, несколько специфический. Говорят, похож на Кобол. Если сравнивать с популярными ныне языками, то у меня он более всего ассоциируется с Бейсиком.

Страницы

Подписка на RSS - Блог пользователя kenzhemax