Текущее время: Вс, сен 23 2018, 00:56

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Программа форматирования ABAP-кода
СообщениеДобавлено: Пт, дек 19 2014, 19:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
Видел, что есть программы конвертации, например, "БОЛЬШИХ" букв в "маленькие" и наоборот. Они работают по какой-нибудь горячей клавише и изменяют текст прямо на экране. Я никогда ими не пользовался, поэтому не знаю их возможностей.
Существуют ли такие, которые можно настраивать по своим правилам? Например, чтобы GO_STYLE_DEFAULT мог преобразовать в go_Style_Default. А также можно было добавить операторы ABAP, как ключевые слова...

p.s.
Почему задаю вопрос "не в тему" - возможно у кого-то есть опыт в применении к ABAP.

p.p.s
С наскока в интернете ничего не нашел. Видимо не знаю что искать...

p.p.p.s.
В результате этой темы написалась программа форматирования ABAP-кода, которую можно скачать по ссылке - https://sites.google.com/site/vvnabap/fajly/zvvn_abap_format. Устанавливается через Copy/Past, имя программы значения не имеет.

Программа "три в одном", она позволяет: делать настройки, отображать на экране результат (тестирование), расширять через enhancement стандартное форматирование. В последнем случае форматирование происходит по кнопке <Структурная печать> в редакторе ABAP, если стандартные настройки сделаны следующим образом - при включенном "Отступ" и отключенном "Провести преобр.", а в настройке ZVVN_ABAP_FORMAT включен параметр "Settings Active".

Изображение

Если нет возможности расширить стандарт, то можно пользоваться режимом тестирования, настроив ввод/вывод через буфер обмена. Тогда процесс происходит следующим образом:
- в отдельном режиме запускаем программу ZVVN_ABAP_FORMAT, включаем параметры "From Clipboard" и "to Clipboard",
- в другом режиме выделяем редактируемый текст, нужный кусок или просто весь код, копируем его в буфер обмена Ctrl+C;
- переходим в режим ZVVN_ABAP_FORMAT, нажимаем F8;
- возвращаемся в режим с редактируемым текстом и вставляем отформатированный код из буфера обмена Ctrl+V.

Выглядит программа так:
Изображение

Подключение в конец стандартного ФМ PRETTY_PRINTER:
Code:
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZVVN_ABAP_FORMAT.    "active version
  Perform ABAP_Format in program ZVVN_ABAP_FORMAT if found
    changing nText[].
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDFUNCTION.


Настройки имеют три уровня:
1. INITIAL - это "заводские настройки", прошитые прямо в программе.
2. DEFAULT - это общие настройки для случая, когда вы хотите создать единый стандарт в коллективе разработчиков.
3. <SY-UNAME> - персональные настройки разработчика, автоматически именуются его логином.

При первом запуске программа сразу готова к использованию в режиме теста (F8). Для использования в расширении стандарта нужно установить стандартные настройки "Структурной печати", как описано выше, и активировать параметр "Settings Active".
По умолчанию параметры уровней 2 и 3 имеют значение "D" (Default), что означает наследование от вышестоящего уровня, т.е. INITIAL. Справа от них показаны действующие (унаследованные) значения.
Переключаться между уровнями настроек можно нажатием кнопки с именем вашего логина. Уровни 2 (DEFAULT) и 3 (персональный) можно изменять и сохранять, уровень 1 (INITIAL) не изменяется.

Параметры "Keywords", "Naming" и "Dictionary" могут принимать значения:
пробел - Nothing, не изменять
U - Upper, все заглавные
L - Lower, все маленькие
C - Capital, первая буква заглавная
F - First Capital, первое слово в операторе с заглавной буквы, остальные маленькие. Например, Select... from... where...
D - Default, наследует настройку предыдущего уровня

Параметры "...user value" позволяют определить исключения для предыдущих параметров. В них указываются идентификаторы групп "Id" из табличной части.

Таблица в правой части экрана - настройки исключений (user value), которые не укладываются в простые правила (Upper, Lower, Capital, First capital word). Они так же наследуются от вышестоящих уровней. Существующую настройку можно переопределить - для этого достаточно изменить значение "Replacement", или отменить - "Disable".
Разумеется можно создавать новые настройки, ключом настройки являются поля "Id", "PrevKey Mask" и "Key Mask". Новая настройка с уже существующим ключом предка означает переопределение его настройки.

"Id" - одиночный символ - идентификатор группы настроек. По умолчанию "K" (Keywords) - для ключевых слов ABAP, "N" (Naming) - для всех имён (переменных, типов, подпрограмм, методов и т.д.), "T" (Dictionary Type) - типы словаря. Можно использовать любые символы для альтернативных настроек, кроме пробела и "D".

"PrevKey Mask" - условие применения настройки, соответствующее предыдущему набору ключевых слов ABAP, относительно изменяемого слова, в пределах одного оператора (statement). Например, "SELECT*FROM" для форматирования имени таблицы в операторе "Select... from <имя>".

"Key Mask" - условие применения настройки, соответствующее текущему изменяемому слову. Например, "WHERE" для изменения ключевого слова. При этом, поскольку "where" не является первым словом в операторе, "PrevKey Mask" должно иметь значение "*", если нужно его форматировать во всех возможных операторах (Select, Delete, Loop). Либо в "PrevKey Mask" указать конкретный оператор, например, "SELECT*".

"Replacement" - замена слова. Например, "where" для замены Key Mask = "WHERE". Также можно выполнять операцию над словом или частью слова. Символ операции ставится на то место, где в Key Mask указана "*". Например, если для Key Mask = "END*" указать Replacement = "End"C"", то во всех операторах, начинающихся с "END" начало заменится на "End", а хвостовая часть будет обработана по правилу Capital (первая буква большая) - EndCase, EndMethod, EndIf и т.д.

"Owner" показывает владельца настройки, "пусто" - INITIAL.

"Disable" - отключение настройки.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Последний раз редактировалось Parazit Вс, апр 24 2016, 01:35, всего редактировалось 8 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Пт, дек 19 2014, 21:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
Как-то не уделял этому раньше внимания, а оказалось, что и в самом ABAP-редакторе кое-что есть:
http://saphr.ru/2009/06/04/new_abap_editor/

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Пн, дек 22 2014, 09:17 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 07 2007, 15:31
Сообщения: 35
Эклипс еще покопайте:
https://tools.hana.ondemand.com/#abap
http://scn.sap.com/community/abap/eclipse


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Пн, дек 22 2014, 14:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 12:11
Сообщения: 961
недавно вышел патч к sapgui 7.40, 32-bit инсталлятор можно найти в инете (раздельно sapgui и патч),
вроде много чего исправлено - http://sapboard.ru/forum/viewtopic.php?f=14&t=88544&view=unread


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Пн, дек 22 2014, 19:52 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 424
в ABAP-editor поступаем так:

- выделяем код мышкой
- нажимаем правой кнопкой мыши
- идем по пути контекстного меню: ФОРМАТ-> Сменить регистр -> можно выбрать строчные буквы, ПРОПИСНЫЕ буквы, первая буква маленькая и т.д. (english path in context menu: Format -> Change case -> [Lowercase], UPPER CASE, Capitalize and so on)

Вам это нужно, Parazit ?


Последний раз редактировалось olegbash Пн, дек 22 2014, 19:57, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Пн, дек 22 2014, 19:55 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 424
Parazit написал:
Как-то не уделял этому раньше внимания, а оказалось, что и в самом ABAP-редакторе кое-что есть:
http://saphr.ru/2009/06/04/new_abap_editor/


не совсем согласен с фразой Виталия, что

"Сразу оговорюсь, что ничего нового с точки зрения юзабилити САП не изобрел. Все эти функции и удобства были еще в древних версиях Сишника и Делфи."
кто у кого, что спёр - это вопрос спорный :-)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Посоветуйте программу форматирования ABAP-кода
СообщениеДобавлено: Вт, дек 23 2014, 18:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
olegbash написал(а):
в ABAP-editor поступаем так:

- выделяем код мышкой
- нажимаем правой кнопкой мыши
- идем по пути контекстного меню: ФОРМАТ-> Сменить регистр -> можно выбрать строчные буквы, ПРОПИСНЫЕ буквы, первая буква маленькая и т.д. (english path in context menu: Format -> Change case -> [Lowercase], UPPER CASE, Capitalize and so on)

Вам это нужно, Parazit ?

Да, я сейчас этим и пользуюсь. Например, из атрибутов класса копирую и вставляю GO_STYLE_DEFAULT, а потом, чтобы сделать go_Style_Default, выделяю отдельные части и кнопками Ctrl+L и Ctrl+J исправляю.
Согласитесь, весьма неудобно, особенно если копирование/вставка больших кусков кода.
Поэтому текст, как лоскутное одеяло, лень же весь текст переделывать.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


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

Зарегистрирован:
Вт, фев 15 2011, 16:02
Сообщения: 122
Немного странный у Вас стиль именования переменных.
Обычно же либо camelCase либо under_score (snake_case).
А в данном случае какая-то смесь получается этих двух стилей.

_________________
Поздравляю тебя, Шарик, ты - балбес!


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

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
8051core написал(а):
Немного странный у Вас стиль именования переменных.
Обычно же либо camelCase либо under_score (snake_case).
А в данном случае какая-то смесь получается этих двух стилей.

Мне ближе стиль goStyleDefault, взращенный еще на Borland Pascal - на их книгах, исходных кодах и собственном опыте. Но приход R/3 4.0 всё сломал, с тех пор и маюсь. :) Придерживаться этого стиля в ABAP абсолютно невозможно, попадая в параметры ФМ и методов, атрибуты и типы классов, такие имена становятся не читабельными. Приходится вставлять подстрочные разделители. Однако в исходном тексте сап-овский стиль GO_STYLE_DEFAULT или go_style_default тоже мало читабельны, особенно первый. Т.е. отдельно вроде выглядят неплохо, но визуально, на фоне текста, превращаются в кашу.
Поэтому приходится использовать нечто среднее - go_Style_Default.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


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

Зарегистрирован:
Вт, фев 15 2011, 16:02
Сообщения: 122
Понятно.
Я на текущий момент пока пришел к выводу, что мне удобней стандартный pretty printer с ключевыми словами заглавными буквами и стиль именования с подчеркиваниями. Вроде более менее читабельно.

Еще пробовал "Hovitaga Advanced Pretty Printer". Он конечно так как Вам нужно не умеет вроде делать и настроек у него маловато, но он довольно неплох после стандартного по первым впечатлениям. В итоге я отказался от него после того как он пару раз вылетел.

Может под Ваши нужды есть какой-нибудь способ подправить ФМ PRETTY_PRINTER который за все это отвечает .....

_________________
Поздравляю тебя, Шарик, ты - балбес!


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

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
В общем доконала меня эта тема. Особенно когда пишешь-пишешь в стиле go_Style_Default, а кто-нибудь ("нехороший человек в идиоматических выражениях") одним нажатием кнопки сносит все твои старания. Против этого можно противопоставить только нечто, способное так же одним нажатием "вертать всё взад".
Накропал таки программку, способную удовлетворить не только общечеловеческие нормы, но и специфические личные предпочтения.
Наверно можно в ней ещё что-то докрутить, но программа уже вполне работоспособная, поэтому выложил её и описал в первом сообщении этой темы.
Если есть какие-то замечания, предложения или вопросы, пишите в эту тему.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа форматирования ABAP-кода
СообщениеДобавлено: Чт, окт 06 2016, 11:50 
Начинающий
Начинающий

Зарегистрирован:
Вт, июн 17 2014, 14:18
Сообщения: 9
Откуда: Москва
Пол: Женский
Вопрос такой: мне надо отчет выводить с нумерацией страниц с 01 по 150, вместо 151 будет снова страница 1, при этом я на селекционник добавлю пользователю возможность проставлять номер страницы, с которой начинать печать, т.к. в предыдущей пачке последняя страница, например, была 28, значит надо начинать печать с 29, пользователь проставит на СЭ 29 и печать отчета будет с 29 стр. до 150.Есть ли подобный опыт у кого-нибудь ? Думаю, что да , т.к. это требование Минфина РФ с 10.2015 сдавать в налоговые органы отчетность в пачках по 150 страниц в каждой.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа форматирования ABAP-кода
СообщениеДобавлено: Чт, окт 06 2016, 13:02 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 21:18
Сообщения: 49
tvsokol написала:
Вопрос такой: мне надо отчет выводить с нумерацией страниц с 01 по 150, вместо 151 будет снова страница 1, при этом я на селекционник добавлю пользователю возможность проставлять номер страницы, с которой начинать печать, т.к. в предыдущей пачке последняя страница, например, была 28, значит надо начинать печать с 29, пользователь проставит на СЭ 29 и печать отчета будет с 29 стр. до 150.Есть ли подобный опыт у кого-нибудь ? Думаю, что да , т.к. это требование Минфина РФ с 10.2015 сдавать в налоговые органы отчетность в пачках по 150 страниц в каждой.

Эта тема немного не про это. тут идет про форматирование ABAP кода, а не формируемых им документов. Не думаю, что Минфин требует сдавать распечатки АБАП программ. А так, смотришь на sy-pagno и в зависимости от него проставляешь нужную цифру.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программа форматирования ABAP-кода
СообщениеДобавлено: Чт, окт 06 2016, 13:04 
Начинающий
Начинающий

Зарегистрирован:
Вт, июн 17 2014, 14:18
Сообщения: 9
Откуда: Москва
Пол: Женский
GeneralLao написал(а):
tvsokol написала:
Вопрос такой: мне надо отчет выводить с нумерацией страниц с 01 по 150, вместо 151 будет снова страница 1, при этом я на селекционник добавлю пользователю возможность проставлять номер страницы, с которой начинать печать, т.к. в предыдущей пачке последняя страница, например, была 28, значит надо начинать печать с 29, пользователь проставит на СЭ 29 и печать отчета будет с 29 стр. до 150.Есть ли подобный опыт у кого-нибудь ? Думаю, что да , т.к. это требование Минфина РФ с 10.2015 сдавать в налоговые органы отчетность в пачках по 150 страниц в каждой.

Эта тема немного не про это. тут идет про форматирование ABAP кода, а не формируемых им документов. Не думаю, что Минфин требует сдавать распечатки АБАП программ


Знаю, что тема не про это, но близко


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

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1849
Откуда: Москва
Пол: Мужской
tvsokol написала:
GeneralLao написал(а):
...
Эта тема немного не про это. тут идет про форматирование ABAP кода, а не формируемых им документов. Не думаю, что Минфин требует сдавать распечатки АБАП программ


Знаю, что тема не про это, но близко

Боюсь, что ответа будете ждать долго. Во-первых потому, что эта тема не "близко" и не "немного не про это", а ВООБЩЕ не про это.
Во-вторых, из Вашего вопроса абсолютно непонятно какими средствами формируете отчёт: листинг, PDF, смартформы, MS Office или может вообще SAP Script? Или что-то другое? Во всех случаях и решение будет разным.
Поэтому рекомендую подробней сформулировать вопрос и выложить отдельной темой.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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