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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Ср, июн 18 2014, 20:43 
Специалист
Специалист

Зарегистрирован:
Вт, ноя 28 2006, 16:02
Сообщения: 114
Если доведете до ума и решитесь выложить разработку, то с удовольствием ознакомлюсь.
Как я понял, автор не утверждает на своем проекте, что каждый запрос к БД теперь должен использовать его инструмент.
Действительно, в некоторых случаях инструмент может быть удобен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Чт, июн 19 2014, 04:00 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Кодер написал(а):
В случае выноса дублированных строк после выборки по первичному ключу - соглашусь. Действительно, смысла в вашем коде не было.

:shumlol:

Кодер написал(а):
Вообще же разработчик обычно пишет код со смысломЖ в нормальном ПО каждая строка на своем месте для соответствия работы программы поставленному ТЗ.

Да, вот только, как это часто бывает, приходится делать много лишних телодвижений, чтобы этот код работал оптимально с точки зрения СУБД, чтобы не делались повторные и лишние выборки к БД.

Кодер написал(а):
Цитата:
Кода стало меньше, я затратил меньше сил на его написание и в последующем потрачу меньше сил на его разбор, т.к. весь код на ладони.

Код не на ладони: с этим согласится даже подсветка синтаксиса abap редактора. У Вас в определении условий where теперь не видно где поле таблы, где условие, где константа.

Здесь всё просто: слева - всегда поле таблицы, как и в стандартном SELECT, после знака равенства/неравенства - константа в кавычках, переменная в амперсандах, или просто поле ключа без какого-либо обромления.
Но об этом надо просто знать, да.

Кодер написал(а):
Цитата:
Функциональное тестирование - тестирование алгоритма работы ПО по ТЗ.
Думал, может неправильно употребил термин, но вроде всё в порядке судя по http://ru.wikipedia.org/wiki/%D4%F3%ED% ... 0%ED%E8%E5:

Вы понимаете под необходимостью тестирования тестирование вашей тулзы(т.к. по факту именно ее вы будете тестировать запуская все эти чеки)

Возможно я Вас неправильно понял, но вы предлагаете тестировать инструмент, который уже работает? Если что-то работает, то зачем это тестировать?

Кодер написал(а):
кстати, ТЗ-то на нее есть?

ТЗ нет, как и описание разработки. Но последнее планируется как только допишется весь функционал.

Кодер написал(а):
Даже более того, тестировать, что указанные параметры вызова подходят под правила вашей
разработки.
А разработчик-то надеялся, после написания софта, функционально тестировать именно свое бизнес-приложение.

И здесь мы снова возвращаемся к теме топика ;) В топике я и просил совета как узнать структуру переменной в исходном тексте.
А по поводу тестирования - здесь всё просто: тестируется софт функционально, если он не работает так как надо, то разработчику всё равно придётся лезть в код и править ошибку.
Если программист неправильно написал стандартный SQL запрос, то программа же тоже не будет правильно работать? С моим инструментом то же самое.

Кодер написал(а):
... а ведь есть еще агрегирующие функции.. и есть еще выборка полей под одним именем, а затем - присвоение им псевдонима... а чтобы память не съедалась - выборка в ту же таблу, по которой был сделан FAE...

Агрегирующие функции не используют SAP BUFFERING, посему их не будет в этой тулзе.
Псевдонимы (AS) есть в TODO листе.
А вот выборки в ту же таблу, что и в FOR ALL ENTRIES, к сожалению, нет и не будет. Как я уже и говорил, для ОГРОМНЫХ массивов данных с критической скоростью работы моя тулза не очень подходит.

Кодер написал(а):
возможность выборки в динамич.структуру созданную через create date...

Что Вы имеете ввиду под этим?
Если что-то типа этого, то так можно делать:
Code:
  DATA:
    lr_table_type  TYPE REF TO cl_abap_tabledescr,
    lr_data         TYPE REF TO data.
  FIELD-SYMBOLS:
    <lt_data>       TYPE ANY TABLE,
    <lt_buf>         TYPE ANY TABLE.

   lr_table_type = cl_abap_tabledescr=>create(
                   p_line_type  = cl_abap_structdescr=>create( cl_abap_typedescr=>describe_by_name( 'FLEET' )->get_components( ) )
                   p_table_kind = cl_abap_tabledescr=>tablekind_std ).

  CREATE DATA lr_data TYPE HANDLE lr_table_type.
  ASSIGN lr_data->* TO: <lt_data>, <lt_buf>.

  zcldev_dyndatbuf=>select(
    EXPORTING
      iv_table  = 'FLEET'
    IMPORTING
      e_data    = <lt_data>
    CHANGING
      ct_buf     = <lt_buf>
  ).


Fugitive написал(а):
Если доведете до ума и решитесь выложить разработку, то с удовольствием ознакомлюсь.
Как я понял, автор не утверждает на своем проекте, что каждый запрос к БД теперь должен использовать его инструмент.
Действительно, в некоторых случаях инструмент может быть удобен.

Спасибо! Довожу до ума уже целый год и как всегда есть к чему стремиться дальше :)

Самое интересное - реализовать получение данных из смежных буферных таблиц (это когда в ct_buf передаются совершенно разные таблицы, чтобы данные повторно не брались из БД, если указана какая-то другая буферная таблица). Этакая распределённая система буферных таблиц получается.
Ещё нет поддержки AS и IN.

OFFTOP:
Хотелось бы поделиться способом делать пометки TODO прямо в коде.
Можно просто написать несуществующую прагму, которая будет отображаться в предупреждениях при проверке синтаксиса.

Например, попробуйте ввести такую прагму в исходный текст и проверить синтаксис:
Code:
##TODO'Добавить_поддержку_SELECT_AS'

По двойному щелчку даже к строке кода переходит :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Чт, июн 19 2014, 10:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
Здесь всё просто: слева - всегда поле таблицы, как и в стандартном SELECT, после знака равенства/неравенства - константа в кавычках, переменная в амперсандах, или просто поле ключа без какого-либо обромления.
Но об этом надо просто знать, да.

"Знать" и "на ладони" - разные понятия. На ладони: я опечатался в имени поля, а мне сразу синтаксис сказал "мужик, ты - не прав!". А знать, это: я должен вот тут писать вот так. И сам должен проверить, что написал правильно без подсказчиков. Оно разработчику вот надо?
Цитата:
Возможно я Вас неправильно понял, но вы предлагаете тестировать инструмент, который уже работает? Если что-то работает, то зачем это тестировать?

Так это ж Вы предлагаете тестировать правильность передачи в ваш инструмент параметров! Т.е. по сути - функ.тестирование вашего инструмента с каждым набором моих(как рзаработчика) параметров.

Цитата:
И здесь мы снова возвращаемся к теме топика ;) В топике я и просил совета как узнать структуру переменной в исходном тексте.

В общем случае - никак. Почему? Потому что: переменная может быть определена на таком уровне вложенности, что ее определение можно будет получить только в рантайме. Это получается как за счет возможности передачи переменных generic типов как параметров, передачи как параметров результатов вызова функ.методов, так и за счет гибкой возможности определения самих переменных(например через макросы, в самых извращенных случаях или с расширением станд.типов через энхансы). Т.е. в общем случае нужен не просто синтакс.анализатор, а еще и рантаймовый анализатор последовательности вызовов.
Нормальный подход в таких случаях - проверка входных параметров в рантайме в самом методе. Но тогда - перечитываем дискуссию с начала: толку в инструменте не много, т.к. того самого жаждуемого вами статанализа не будет
Цитата:
Если программист неправильно написал стандартный SQL запрос, то программа же тоже не будет правильно работать? С моим инструментом то же самое

Если прогер напишет статический запрос неправильно, то уже по обычной проверке программы, синт.анализ выдаст ошибку. Программа не то что работать - генерироваться не будет. И не будет так нежелаемых Вами дампов. Это работает в подавляющем большинстве случаев.
Цитата:
А вот выборки в ту же таблу, что и в FOR ALL ENTRIES, к сожалению, нет и не будет. Как я уже и говорил, для ОГРОМНЫХ массивов данных с критической скоростью работы моя тулза не очень подходит.

А это не относится к теме больших объемов данных. Это частая практика: собрали фильтр для FAE и, чтобы не париться, храним его в той же внутр.табле строго до момента выборки.

Мне ближе подход сапа: создание отдельных функ.модулей\методов для буферизованного чтения.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
UKY написал(а):
С SAP Query знаком только шапочно. Предпочитаю забыть его как страшный сон :)

Зря. Очень мощный инструмент, если правильно его использовать :wink:
Но не во всех случаях, как и ваша разработка :wink:
Как эксперимент она полезна, но для массового использования не подойдет по причинам, описанным Кодером и мной.
В процессе написания вы наверняка многое узнали о реализации Open SQL. Это поможет в будущем грамотно писать программы на ABAP.

Каждый нормальный программист реализовывал какой-нибудь свой мега-проект.
Я например в свое время написал программу универсального пакетного ввода для бух.документов, не зная о стандартном FI posting interface, который делал то же самое :oops:
И стал после этого намного лучше разбираться в отладке и стандартных программах SAP. :D

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Пт, июн 20 2014, 03:25 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Кодер написал(а):
"Знать" и "на ладони" - разные понятия. На ладони: я опечатался в имени поля, а мне сразу синтаксис сказал "мужик, ты - не прав!". А знать, это: я должен вот тут писать вот так. И сам должен проверить, что написал правильно без подсказчиков. Оно разработчику вот надо?

Конечно не надо. Поэтому я создал эту тему.
А без знаний всё равно ничего не получится сделать, даже при использовании OPEN SQL: если не знаешь синтаксис, то ничего у тебя не получится.
В разработке всё равно приходится узнавать интерфейсы используемых инструментов.

Кодер написал(а):
Цитата:
Возможно я Вас неправильно понял, но вы предлагаете тестировать инструмент, который уже работает? Если что-то работает, то зачем это тестировать?

Так это ж Вы предлагаете тестировать правильность передачи в ваш инструмент параметров! Т.е. по сути - функ.тестирование вашего инструмента с каждым набором моих(как рзаработчика) параметров.

Я предлагаю тестировать в автоматическом режиме. Типа проверки синтаксиса по CTRL+F2, только проверка будет запускаться тестирующими классами по CTRL+SHIFT+F10.

Кодер написал(а):
Цитата:
И здесь мы снова возвращаемся к теме топика ;) В топике я и просил совета как узнать структуру переменной в исходном тексте.

В общем случае - никак.

Да, я понимаю, что в общем случае определить структуру переменной не получится. Но в подавляющем большинстве случаях использования это можно сделать.

Кодер написал(а):
толку в инструменте не много, т.к. того самого жаждуемого вами статанализа не будет

Толк инструмента не в том, чтобы он проходит статанализ, а в удобстве его использования, насколько он облегчает труд и какие преимущества даёт по сравнению со стандартными подходами.

Кодер написал(а):
Если прогер напишет статический запрос неправильно, то уже по обычной проверке программы, синт.анализ выдаст ошибку. Программа не то что работать - генерироваться не будет. И не будет так нежелаемых Вами дампов. Это работает в подавляющем большинстве случаев.

Да, здесь я с Вами и не спорю. Но при этом можно забыть, например, проверить на заполненность таблицы FOR ALL ENTRIES или написать кучу промежуточного кода, или делать ненужные выборки, что перегрузит код ненужными деталями и нагрузит БД, когда этого можно избежать.

Кодер написал(а):
Цитата:
А вот выборки в ту же таблу, что и в FOR ALL ENTRIES, к сожалению, нет и не будет. Как я уже и говорил, для ОГРОМНЫХ массивов данных с критической скоростью работы моя тулза не очень подходит.

А это не относится к теме больших объемов данных. Это частая практика: собрали фильтр для FAE и, чтобы не париться, храним его в той же внутр.табле строго до момента выборки.

Да, я тоже люблю так делать и именно потому, что не нужно создавать всякие промежуточные таблицы, мэппинги полей, конкатенаций с константами и т.п., что как раз и делает мой инструмент ;)

Кодер написал(а):
Мне ближе подход сапа: создание отдельных функ.модулей\методов для буферизованного чтения.

Этот подход не так гибок и хорош, как хотелось бы:
  1. На каждую таблицу/параметр фильтрации приходится делать отдельный модуль (писать на него ТЗ, писать покрывающие код тесты, функционально тестировать, делать описание разработки, поддерживать... :mrgreen: ).
  2. Другие программисты не знают имена этих модулей и пишут одно и то же в разных частях системы или тратят своё время на поиск/разбор модуля, который им нужен. Но проще конечно написать заново и плодить сущности в системе :)
  3. Обычно сап пишет модули для буферизованного чтения только для одного кортежа по первичному ключу.
    Мой метод позволяет читать из БД несколько кортежей сразу пачкой только один раз и по любому ключу, а затем сможет брать данные из буферной таблицы из разных разработок, которые совершенно ничего не знают друг о друге.

Т.е. программисту можно просто использовать инструмент и сосредоточится на реализации задачи, а не искать модули, использующие буферизацию (которых может и не быть), не тратить время на изучение/создание/тестирование/поддержку этих модулей.

Удав написал(а):
... В процессе написания вы наверняка многое узнали о реализации Open SQL. Это поможет в будущем грамотно писать программы на ABAP.
Каждый нормальный программист реализовывал какой-нибудь свой мега-проект. ...
Я ... стал после этого намного лучше разбираться в отладке и стандартных программах SAP. :D

Если бы нам не приходилось писать что-то новое, то наша работа была бы слишком скучна и неинтересна ;)
А так, конечно, жаль, что всего знать невозможно или чего-то попросту нет и приходится извращаться и делать свои велосипеды :)


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

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
UKY написал(а):
...Для этого я пишу тестовый класс, который запускается при нажатии CTRL+SHIFT+F10, читает код, заменяет вызов метода на стандартный SELECT, делает проверку синтаксиса. Если имеются какие-либо ошибки, то указывается строка кода, в которой есть ошибка и текст ошибки.

если ошибок нет, можно сделать insert report .. keeping directory entry и на этом остановиться

динамическая типизация (rtti) - путь в никуда (в.и. ленин)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Пт, июн 20 2014, 10:19 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
trop написал(а):
если ошибок нет, можно сделать insert report .. keeping directory entry и на этом остановиться

Так синтаксических ошибок и так нет. Могут быть ошибки неправильно переданного параметра.

trop написал(а):
динамическая типизация (rtti) - путь в никуда (в.и. ленин)

Я тоже люблю статику. Но так же не люблю делать лишнюю ненужную и скучную работу, поэтому здесь и используется динамика :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Пт, июн 20 2014, 15:50 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Ой что я пропустил.

UKY, не взлетит. За такое и побить могут :)

По существу. Плох тот разработчик, который ни разу не попытался дать свой ответ на The Ultimate Question of Life, the Universe, and Everything. С практической точки зрения, занятие сугубо бесполезное. Для саморазвития специалиста же - крайне полезное.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получить описание переменной
СообщениеДобавлено: Пн, июн 23 2014, 03:29 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Пономарев Артем написал:
UKY, не взлетит. За такое и побить могут :)

Да, меня и так тут на форуме уже хотят побить. А может быть даже кто-то и закопать... :)
Но почему же не взлетит, когда уже целый год летает? Если скорость работы не важна, то почему бы не использовать этот инструмент?
Для каких-нибудь программок, которые собирают данные для каких-нибудь формуляров - само то! :)


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
UKY написал(а):
Если скорость работы не важна, то почему бы не использовать этот инструмент?
Для каких-нибудь программок, которые собирают данные для каких-нибудь формуляров - само то! :)

И эти люди не любят SAP Query... :lol:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3

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


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

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


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

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