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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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