Кодер написал(а):
В случае выноса дублированных строк после выборки по первичному ключу - соглашусь. Действительно, смысла в вашем коде не было.
Кодер написал(а):
Вообще же разработчик обычно пишет код со смысломЖ в нормальном ПО каждая строка на своем месте для соответствия работы программы поставленному ТЗ.
Да, вот только, как это часто бывает, приходится делать много лишних телодвижений, чтобы этот код работал оптимально с точки зрения СУБД, чтобы не делались повторные и лишние выборки к БД.
Кодер написал(а):
Цитата:
Кода стало меньше, я затратил меньше сил на его написание и в последующем потрачу меньше сил на его разбор, т.к. весь код на ладони.
Код не на ладони: с этим согласится даже подсветка синтаксиса 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'
По двойному щелчку даже к строке кода переходит
