序言
2015年12月,OpenAI公司于美国旧金山成立。OpenAI最初成立旨在实现DeepMind 和Google无法做到的一切。它将作为一个非营利组织运营,致力于使先进人工智能的好处民主化,并承诺发布其研究成果,并开源其所有技术。
具体来说,ChatGPT是由GPT-3.5 模型提供的支持,GPT(Generative Pre-trained Transformer,生成式预训练变换器) 是一种基于互联网可用数据训练的文本生成深度学习模型。
对于ChatGPT是什么这个问题,OpenAI 公司CEO Sam Altman在一篇推文中做了这样的比喻:ChatGPT 看起来像个百科全书,能够回答连续的问题、生成文本摘要、翻译文档、对信息分类、写代码等,它也会承认错误、质疑不正确的前提并拒绝不恰当的请求。
到底,ChatGPT写出的SQL代码什么水平?
目前的ChatGPT还只能帮程序员完善思考,但不能替代程序员思考。程序员无需惊慌被替代
ChatGPT的长处
1、天然流通的对话:ChatGPT经过对海量对话数据的学习,具有天然流通的对话才能,能够与用户进行传神的天然言语交互。
2、能够了解语境:ChatGPT能够了解语境,不只能依据上下文生成答复,还能辨认当时对话的主题,更好地满意用户需求。
3、多言语支撑:ChatGPT支撑多种言语,能够用于跨言语交互,协助用户处理跨言语沟通的问题。
用chatGPT写一个alv报表
看看chatGPT是怎么实现的(使用了传统的函数GRID的方式)
完整的代码如下:
REPORT z_alv_report.
* 定义内部表和工作区
TABLES: scarr.
DATA: it_scarr TYPE STANDARD TABLE OF scarr,
wa_scarr LIKE LINE OF it_scarr.
* 选择 SCARR 表中的数据
SELECT *
FROM scarr
INTO TABLE it_scarr.
* 调用函数模块来设置字段目录
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'SCARR'
CHANGING
ct_fieldcat = fieldcatalog[].
* 初始化 REUSE_ALV_GRID_DISPLAY 参数
CLEAR alv_layout.
alv_layout-colwidth_optimize = 'X'.
* 调用函数模块来显示 ALV 报表
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = alv_layout
TABLES
t_outtab = it_scarr.
写一个OO ALV报表
使用类的方式实现
完整的代码如下
REPORT z_oo_alv_report.
* 定义类和对象
CLASS lcl_app DEFINITION.
PUBLIC SECTION.
TYPES:
BEGIN OF ty_scarr,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
currcode TYPE scarr-currcode,
END OF ty_scarr,
tty_scarr TYPE STANDARD TABLE OF ty_scarr WITH KEY carrid.
DATA:
mt_scarr TYPE tty_scarr,
mo_alv TYPE REF TO cl_salv_table.
METHODS:
constructor,
get_data,
display_report.
ENDCLASS.
CLASS lcl_app IMPLEMENTATION.
METHOD constructor.
CREATE OBJECT mo_alv.
ENDMETHOD.
METHOD get_data.
SELECT carrid carrname currcode
FROM scarr
INTO CORRESPONDING FIELDS OF TABLE mt_scarr.
ENDMETHOD.
METHOD display_report.
FIELD-SYMBOLS:
<lt_columns> TYPE cl_salv_columns_table.
mo_alv->get_functions( )->set_all( abap_true ).
mo_alv->set_screen_status(
pfstatus = 'STATUS'
report = sy-repid
set_functions = mo_alv->get_functions( ) ).
mo_alv->get_columns( )->set_optimize( abap_true ).
ASSIGN mo_alv->get_columns( )->get_column( 'CARRID' ) TO <lt_columns>.
<lt_columns>-r_column->set_long_text( 'Airline Code' ).
ASSIGN mo_alv->get_columns( )->get_column( 'CARRNAME' ) TO <lt_columns>.
<lt_columns>-r_column->set_long_text( 'Airline Name' ).
ASSIGN mo_alv->get_columns( )->get_column( 'CURRCODE' ) TO <lt_columns>.
<lt_columns>-r_column->set_long_text( 'Currency Code' ).
mo_alv->set_data( mt_scarr ).
mo_alv->display( ).
ENDMETHOD.
ENDCLASS.
* 创建对象并调用方法来执行报表
DATA: lo_app TYPE REF TO lcl_app.
CREATE OBJECT lo_app.
lo_app->get_data( ).
lo_app->display_report( ).
ALV简介
ALV报表是ABAP最重要的报表工具,其英文全称Abap list viewer,其输入结果以行和列展示,集成的功能有排序,求和,过滤,列求和,隐藏等,输出的格式也有EXCEL,水晶报表,CSV文件等,然后展现的方式有简单list,连续等级list,树等。
在SAP的开发中,可能有50%是ALV的开发,所以对ALV的掌握很重要。
The SAP List Viewer is a generic tool that outputs data in a table form (rows and columns), with integrated functions to manipulate output (sort, totals, filter, column order, hide, etc.) and export it (Excel, Crystal report, CSV files, etc.) It is also possible to make ALV editable via ALV control.
ALV name comes from “ABAP List Viewer”, as named initially because it was only available in ABAP. It is now a more general concept, which is available in java too (since 7.1).
ALV tool proposes 3 display types (schemes are taken from the SAP Library - An Overview of ALV Tools) and in several technologies:
Technologies:
List
Control Framework
In SAP release 4.5b was introduced the Control Framework. A control was made available for ALVs, known as ALV grid. It can be used in 3 ways:
Direct use of control
Function module wrapper. It may be used in full screen mode, which means that the buttons are displayed in the application toolbar, and also in popup mode.
Object-oriented wrapper, since basis 6.40. Full screen and popup are also available.
Web Dynpro
Web Dynpro for ABAP
Web Dynpro for java (since NetWeaver 7.10)