Книга: ChatGPT для саморазвития: Освоения программирования, консалтинга и изучения иностранных языков
Назад: Дополнительные рекомендации
Дальше: Анализ чужого кода и его оптимизация

Сравнение версий

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

В данном разделе мы рассмотрим ещё один способ использования чата при анализе ошибок программ на 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". Если проблема не устраняется, необходимо обратиться за помощью к разработчику или администратору системы.

Назад: Дополнительные рекомендации
Дальше: Анализ чужого кода и его оптимизация