ChatGTP
4.0 и 3.5 при написании кода
ABAP
Для демонстрации различия качества кода, который генерирует ChatGTP на ABAP в версиях 4.0 и 3.5, мы создадим пример с одними и теми же функциональными требованиями, связанными с созданием финансового отчета, оптимизированного для работы с большим объемом данных.
Вы также можете вставить этот же запрос и посмотреть, какой код чат предложит вам, и определить, сколько попыток потребуется, чтобы сделать его работоспособным.
Пользователь:
Напиши кода на языке программирования ABAP.
Дано следующие таблицы
T001 – BUKRS + Название БЕ (BUTXT)
BKPF – BUDAT (дата проводки) , XBLNR (Ссылка)
BSEG – BUKRS (БЕ), GJAHR (Год), BELNR (Номер документа), HKONT (Счет), DMBTR (Сумма во внутренне валюте) BKPF-BUKRS = T001-BUKRS BKPF-BUKRS = BSEG-BUKRS ; BKPF-BELNR = BSEG-BELNR; BKPF-GJAHR = BSEG-GJAHR
Отчет должен быть оптимизирован на работу с большим объёмом данных
Вывести на селекционном экране номер бе и номер счета и год
Отчет представить в формате Alv gride
Чат версии 3.5:
Привет! Вот пример кода на языке ABAP, который реализует требуемый отчет:

Этот код объединяет таблицы bkpf, bseg и t001, чтобы получить данные, соответствующие выбранным параметрам. Затем он создает Alv gride и выводит полученные данные. Обратите внимание, что для ускорения работы отчета можно использовать индексы и оптимизировать запрос на получение данных.
давайте добавим индексы для таблиц bkpf и bseg, а также оптимизируем запрос на получение данных.

В этой версии кода мы создали индексы для таблиц bkpf и bseg, а также добавили условия для выбора
Чат версии 4.0:
Привет! Я создал код ABAP для тебя, который выполняет задачу на основе данных из трех указанных таблиц и выводит результат в виде ALV Grid.
В данном примере я использую INNER JOIN для связи таблиц и оптимизации работы с большим объемом данных. Вот код:


Теперь код структурирован и легко читаем. Этот отчет использует данные из трех таблиц (T001, BKPF и BSEG) с использованием INNER JOIN для оптимизации работы с большим объемом данных. Затем он вызывает функцию 'REUSE_ALV_FIELDCATALOG_MERGE' для создания каталога полей ALV и функцию 'REUSE_ALV_GRID_DISPLAY' для отображения результатов в виде ALV Grid.
Если возникнет ошибка при вызове функций, программа выведет соответствующее сообщение об ошибке. Вся логика отчета находится в блоке START-OF-SELECTION, который выполняется после ввода пользователем требуемых параметров (номер БЕ, номер счета и год).
Внимание:
Иногда в четвёртой версии чата возникают проблемы с форматированием, как вы уже могли заметить на приведённой выше картинке. В таких случаях программный код чата может отображаться в не отформатированном виде. Однако, не стоит паниковать, так как код всё равно можно легко скопировать для последующей вставки в среду разработки.
В данном разделе мы рассмотрим ещё один способ использования чата при анализе ошибок программ на ABAP. Если в работающей системе SAP возникает ошибка, её можно отправить на анализ в чат и узнать причину её возникновения. Этот помощник по анализу кода готов работать круглосуточно без перерывов и всегда будет под рукой функционального консультанта в трудный момент.
Результат:
При работе программы SAP возник дамп(ошибка)

Итого:
Мы можем взять текст анализа ошибки, даже если он написан на немецком языке, и отправить его на анализ в чат, где языковая проблема не будет иметь значения – ведь наш чат понимает любой язык. При необходимости мы также можем уточнить запрос, указав причины, которые могли привести к ошибке, если о них нам известно.
Пользователь:
Das Datenbankfeld oder der Ergebnistyp der Aggregatfunktion PERIO und die Komponente "PERIO" von "LT_OUTPUT" sind nicht kompatibel."
Чат:
Эта ошибка возникает, когда тип поля "PERIO" в структуре "LT_OUTPUT", используемой для вывода данных, не совместим с типом данных поля, используемого в запросе в качестве аргумента агрегатной функции "PERIO".
Например, если в запросе используется функция "SUM" для поля "PERIO", то это поле должно иметь числовой тип данных, такой как "INT" или "FLOAT", а не символьный тип данных, например "CHAR" или "STRING".
Чтобы исправить эту ошибку, необходимо убедиться, что тип данных поля "PERIO" в структуре "LT_OUTPUT" соответствует типу данных, используемому для агрегатной функции "PERIO" в запросе. Если тип данных не совпадает, необходимо изменить тип данных поля в структуре "LT_OUTPUT" или изменить тип аргумента функции в запросе.
Также возможно, что в запросе агрегатная функция используется некорректно, и ее нужно изменить. Если проблема не решается, необходимо обратиться к разработчику или администратору системы для получения дополнительной помощи в решении проблемы.
Еще одна причина возникновения этой ошибки может быть связана с неправильным присвоением значений в запросе. Например, если поле "PERIO" в таблице имеет тип "CHAR" с длиной 4 символа, а в запросе в качестве аргумента функции используется поле "PERIO" со значением "2021", то может возникнуть ошибка, поскольку агрегатная функция ожидает числовые значения, а не символьные.
Чтобы исправить эту ошибку, необходимо убедиться, что значения в поле "PERIO" в запросе соответствуют типу данных поля в таблице. Если это символьное поле, то значение должно быть строкой, состоящей из цифр, а не числом.
Также возможно, что в запросе используется неправильный аргумент для агрегатной функции "PERIO". Например, если функция "PERIO" ожидает значение даты, а в качестве аргумента используется строка, то может возникнуть ошибка. В этом случае необходимо изменить аргумент функции, чтобы он соответствовал ожидаемому типу данных.
В целом, для решения этой ошибки необходимо убедиться в правильности типов данных и присвоения значений в запросе, а также в правильном использовании агрегатной функции "PERIO". Если проблема не устраняется, необходимо обратиться за помощью к разработчику или администратору системы.