- 程序名 :ZABAP1903_07FUNCTIONALV
- 主界面
*&---------------------------------------------------------------------*
*& Report ZABAP1903_07FUNCTIONALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZABAP1903_07FUNCTIONALV.
INCLUDE ZLPJ_TOP.
INCLUDE ZLPJ_FORM.
*START-OF-SELECTION 下面是获取数据 END-OF-DEFINITION 下面是显示数据
START-OF-SELECTION .
PERFORM GET_DATA.
END-OF-SELECTION.
IF GT_STUDENT IS NOT INITIAL. "在ZLPJ_TOP里面定义一个内表,用来对数据的输出
PERFORM DISPLAY_DATA.
ELSE.
MESSAGE S000(LPJ) WITH 'NO DATA!' DISPLAY LIKE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZLPJ_TOP
*&---------------------------------------------------------------------*
TYPE-POOLS SLIS. "所有的数据都来自于该类型池。
TYPES: BEGIN OF GTY_STUDENT.
TYPES: BOX TYPE C LENGTH 1. " 声明一个字段,功能:ALV报表的所有字段前面添加一个选中的按钮
INCLUDE STRUCTURE ZSTUDENT_LPJ_01.
TYPES: ICON TYPE C LENGTH 10. "增加一个ICON的图标列
TYPES: CHECK TYPE C LENGTH 3. "增加一个复选框
TYPES: LINE_COLOR TYPE C LENGTH 4. "增加颜色
TYPES: FIELD_COLOR TYPE LVC_T_SCOL. "定义一个内表,用来存放不同字段的不同颜色值 设置单元格颜色 参照的类型记住
TYPES: END OF GTY_STUDENT.
DATA: GT_STUDENT TYPE TABLE OF GTY_STUDENT,
GS_STUDENT TYPE GTY_STUDENT.
*FUNTION AVL
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "列属性
GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
*LAYOUT是一个结构,存储整个b表单的全局设置****************************************************************************
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " 全局参数
DATA: GT_SORT TYPE SLIS_T_SORTINFO_ALV, "排序
GS_SORT TYPE SLIS_SORTINFO_ALV.
DATA: GT_FILTER TYPE SLIS_T_FIELDCAT_ALV,
GS_FILTER TYPE SLIS_FIELDCAT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT, "CALLBACK事件
GS_EVENTS TYPE SLIS_ALV_EVENT.
*创建 宏 "宏里面传递的参数使用 & + 数字 :代表占位符;一个宏中最多可以定义9个参数
DEFINE %%APPEND_FIELDCAT. "&&开头,易于和其他变量区分
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = &1.
GS_FIELDCAT-FIELDNAME = &2.
GS_FIELDCAT-OUTPUTLEN = &3.
GS_FIELDCAT-SELTEXT_M = &4.
CASE &2.
WHEN 'ZCODE'.
GS_FIELDCAT-KEY = 'X'. "设置为主键的那一列会变颜色
WHEN 'ICON'.
GS_FIELDCAT-ICON = 'X'.
WHEN 'CHECK'.
GS_FIELDCAT-CHECKBOX = 'X'.
GS_FIELDCAT-EDIT = 'X'. "可编辑状态
WHEN 'WEIGH'.
GS_FIELDCAT-DO_SUM = 'X'. "当选中weigh列的时候,进行合计 (do_sum:只能用于数字类型I,P)
GS_FIELDCAT-HOTSPOT = 'X'. "热点:光变会发生变化 给指定的字段设置热点,在LAYOUT里面给关键字设置热点
GS_FIELDCAT-QFIELDNAME = 'ZUNIT'. "内表中标明当前数值的单位的字段 (在表中WEIGH字段对应的单位的字段)
GS_FIELDCAT-EMPHASIZE = 'C610'. "列 颜色设置:C+X(颜色1~7)+X(事否加重0/1)+X(是否反色0/1),第三位表明是字体还是底纹
WHEN 'ZUNIT'.
GS_FIELDCAT-EMPHASIZE = 'C600'.
ENDCASE.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
" DISPLAY_DATA
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
DATA: LS_SCOL TYPE LVC_S_SCOL.
SELECT *
FROM ZSTUDENT_LPJ_01
INTO CORRESPONDING FIELDS OF TABLE GT_STUDENT. "GT_STUDENT中数据的输出,通过函数里面的export中的table输出
LOOP AT GT_STUDENT INTO GS_STUDENT.
*图标
IF GS_STUDENT-SEX = 'F'.
GS_STUDENT-ICON = ICON_GREEN_LIGHT. " 通过ICON事物码去查看图标
ELSE.
GS_STUDENT-ICON = ICON_RED_LIGHT.
ENDIF.
*行颜色 zname为空值的行设置颜色 颜色设置属于layout,
IF GS_STUDENT-ZNAME IS INITIAL.
GS_STUDENT-LINE_COLOR = 'C610'.
ENDIF.
*单元格颜色 颜色设置属于layout,
"1. 给性别字段增加颜色
IF GS_STUDENT-SEX IS INITIAL.
CLEAR LS_SCOL.
LS_SCOL-FNAME = 'SEX'. "字段
LS_SCOL-COLOR-COL = 6. "颜色
LS_SCOL-COLOR-INT = 1. "加重
LS_SCOL-COLOR-INV = 0. "反色
APPEND LS_SCOL TO GS_STUDENT-FIELD_COLOR.
ENDIF.
"1. 给姓名字段增加颜色
IF GS_STUDENT-ZUNIT IS INITIAL.
CLEAR LS_SCOL.
LS_SCOL-FNAME = 'ZUNIT'. "字段
LS_SCOL-COLOR-COL = 1. "颜色
LS_SCOL-COLOR-INT = 1. "加重
LS_SCOL-COLOR-INV = 1. "反色
APPEND LS_SCOL TO GS_STUDENT-FIELD_COLOR.
ENDIF.
MODIFY GT_STUDENT FROM GS_STUDENT.
ENDLOOP.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Include ZLPJ_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
PERFORM BUILD_FIELDCAT. "给GT_FIELDCAT内表 增加数据(可以查看) fieldcat:输出列 使用宏和perform都可以
PERFORM BUILD_LAYOUT. "LAYOUT是一个结构,,存储的是整个表单的全局设置
PERFORM BUILD_SORT.
* PERFORM BUILD_FILTER. "未实现
PERFORM BUILD_EVENTS.
PERFORM BUILD_ALV.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG "Name of the calling program:Name of the calling program;SY-CPROG:调用程序名 (call program)
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS' " 不需要再去传参: IT_EVENTS = GT_EVENTS;二选一
I_CALLBACK_USER_COMMAND = 'FM_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = 'FM_TOP_OF_PAGE' "或者使用event事件 添加表头
I_CALLBACK_HTML_TOP_OF_PAGE = 'FM_HTML_TOP_OF_PAGE' "动态添加表头 (动态优先级大于静态)
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'ALV报表的title'
* I_GRID_SETTINGS =
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT "进入函数,根据字段描述查找
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = GT_SORT
* IT_FILTER = GT_FILTER
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
IT_EVENTS = GT_EVENTS
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_STUDENT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " BUILD_ALV
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
"向GT_FIELDCAT 内表加入行后,会执行函数,将其GT_FIELDCAT输给IT_FIELDCAT,用于规定ALV表单输出的时候每一列的基本属性,用于输出GT_STUDENT,通过GET_DATA,给GT_STUDENT进行数据的增加。
FORM BUILD_FIELDCAT .
*创建宏之后,使用
%%APPEND_FIELDCAT: '1' 'ZCODE' '10' '学生编号',
'2' 'ZNAME' '20' '姓名',
'3' 'SEX' '3' '学生性别',
'4' 'ZSCHOOL' '20' '学生所在学校',
'5' 'WEIGH' '15' '体重',
'6' 'ZUNIT' '10' '单位',
'7' 'ICON' '10' '图标',
'8' 'CHECK' '3' '复选框'.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽,自适应,覆盖之前设置的length
GS_LAYOUT-ZEBRA = 'X'. "设置斑马纹
GS_LAYOUT-KEY_HOTSPOT = 'X'. "给关键字设置热点
GS_LAYOUT-BOX_FIELDNAME = 'BOX'. "内表中字段名称- 定义为当前的选择按钮
GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'. "运行,选择详细按钮查看详细信息的时候,会显示所有字段的信息,即使该字段为空,也会显示
GS_LAYOUT-WINDOW_TITLEBAR = '窗体抬头'. "修改程序名
GS_LAYOUT-CONFIRMATION_PROMPT = 'X'. "推出的时候提示是否退出的确认框 CONFIRMATION:确认, PROMPT:提示
*颜色
GS_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'. "以行位单位进行设置颜色
GS_LAYOUT-COLTAB_FIELDNAME = 'FIELD_COLOR'."单元格颜色
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_SORT .
**按照学校升序
CLEAR GS_SORT.
GS_SORT-SPOS = '1'.
GS_SORT-FIELDNAME = 'ZSCHOOL'.
GS_SORT-UP = 'X'.
GS_SORT-SUBTOT = 'X'. " 小计,根据不同的单位去计算
APPEND GS_SORT TO GT_SORT.
*按照性别降序
CLEAR GS_SORT.
GS_SORT-SPOS = '2'. "在学校升序的基础上对性别进行降序
GS_SORT-FIELDNAME = 'ZNAME'.
GS_SORT-DOWN = 'X'.
APPEND GS_SORT TO GT_SORT.
ENDFORM. " BUILD_SORT
*&---------------------------------------------------------------------*
*& Form BUILD_FILTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FILTER .
*该功能没有实现
* CLEAR GS_FILTER.
* GS_FILTER-FIELDNAME = 'SEX'. "字段名
* GS_FILTER-SIGN0 = 'E'. "不包含
* GS_FILTER-OPTIO = 'EQ'. "等于
* GS_FILTER-VALUF = ''. "空值
* APPEND GS_FILTER TO GT_FILTER.
ENDFORM. " BUILD_FILTER
*&---------------------------------------------------------------------*
*& Form BUILD_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_EVENTS .
*前两个可以在function里面单独用,不需要再event事件里面可以
*添加按钮
CLEAR GS_EVENTS.
GS_EVENTS-NAME = 'PF_STATUS_SET'. "打开函数, IMPORTING里面找IT_EVENTS事件,查看长文本描述
GS_EVENTS-FORM = 'SET_STATUS'. "form是一个子程序,需要在程序中声明这个子程序
APPEND GS_EVENTS TO GT_EVENTS.CLEAR GS_EVENTS.
*添加点击事件
CLEAR GS_EVENTS.
GS_EVENTS-NAME = 'USER_COMMAND'.
GS_EVENTS-FORM = 'FM_USER_COMMAND'.
APPEND GS_EVENTS TO GT_EVENTS.
*添加表头
CLEAR GS_EVENTS.
GS_EVENTS-NAME = 'TOP_OF_PAGE'.
GS_EVENTS-FORM = 'FM_TOP_OF_PAGE'.
APPEND GS_EVENTS TO GT_EVENTS.
ENDFORM. " BUILD_EVENTS
*添加表头
FORM FM_TOP_OF_PAGE.
DATA: LT_HEADER TYPE SLIS_T_LISTHEADER, "函数里面的events字段代码的453行
LS_HEADER TYPE SLIS_LISTHEADER.
CLEAR LS_HEADER.
LS_HEADER-TYP = 'H'. "当类型为H的时候,不需要key 三种类型:H = Header, S = Selection, A = Action
LS_HEADER-INFO = '学生信息表'.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.
LS_HEADER-TYP = 'S'.
LS_HEADER-KEY = '当前日期:'.
LS_HEADER-INFO = SY-DATUM.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.
LS_HEADER-TYP = 'A'.
LS_HEADER-INFO = '可查看的学生信息'.
APPEND LS_HEADER TO LT_HEADER.
*添加表头调用的函数
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LT_HEADER
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM .
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. "USING后面的参数和类型来源于长文本里面(上上条注释)
SET PF-STATUS 'STATUS' EXCLUDING RT_EXTAB. " 通过长文本描述来进行代码编写 设定一个自己的按钮
ENDFORM.
*write语句定义按钮,参考ZABAP1903_07screen_selectio程序,使用END-OF-SELECTION.
FORM FM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "通过长文本获取using后面的参数
*单击的对象是单元格(一个字段),双击的对象是一行。 R_UCOMM :按钮的功能 (单击的前提是设置热点,双击不需要设置热点)
CASE R_UCOMM.
WHEN '&IC1'. "单击功能 通过debug可以查看单双击的代码,单双击的代码是相同的
CASE RS_SELFIELD-FIELDNAME.
WHEN 'ZCODE'. "有热点的字段:单击的前提是设置热点(两种方法) 单击事件是在sy-ucomm中完成
SET PARAMETER ID 'LIF' FIELD RS_SELFIELD-VALUE . "将点击的值带入到该事务码所在的字段里面 ,在KF03事物码对应的字段使用F1 查看parameters ID 的值 (LIF)。
CALL TRANSACTION 'FK03'.
WHEN 'WEIGH'.
WHEN OTHERS. "双击,其他字段没有设置热点(一般单机在上,双击在下)
"当前行的学校信息
READ TABLE GT_STUDENT INTO GS_STUDENT INDEX RS_SELFIELD-TABINDEX. " 在内表中获取点击的行,传入到结构体中
PERFORM DISPLAY_ALV_SCHOOL USING GS_STUDENT-ZSCHOOL.
ENDCASE.
WHEN 'CALLSF'.
"PERFORM CALL_SMARTFORMS
WHEN 'DOWNLOAD'.
"PERFORM DOWNLOAD_FILE
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_SCHOOL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_SCHOOL USING GS_STUDENT-ZSCHOOL.
DATA: GT_SCHOOL TYPE TABLE OF ZSCHOOL_LPJ_01.
SELECT *
FROM ZSCHOOL_LPJ_01
INTO CORRESPONDING FIELDS OF TABLE GT_SCHOOL
WHERE ZSCHOOL = GS_STUDENT-ZSCHOOL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'ZSCHOOL_LPJ_01'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
* IT_FIELDCAT =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_SCHOOL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " DISPLAY_ALV_SCHOOL
*动态添加表头
FORM FM_HTML_TOP_OF_PAGE USING PR_DOCUMENT TYPE REF TO CL_DD_DOCUMENT. "参照一个类声明一个对象用: REF TO ; CL_DD_DOCUMENT:类; PR_DOCUMENT:对象
*如果用参照类型里面的内容,一定要使用参数:using(列如:参照内表,下面可以给这个内表里面的某个字段赋值,没有使用using参数,就不行)
*方法和属性:
"1. 属性:常量:Constant和变量:Instance Attribute,
" 区别:常量使用双线箭头(类名=>常量),变量使用单线箭头(对象名->变量名)
"2. 方法:Instance Method和Static Method ,
" 区别:Instance Method使用单项箭头(对象名->方法名),Static Method 使用双向箭头(类名=>方法名)
DATA: LV_DATUM TYPE SDYDO_TEXT_ELEMENT. "定义变量,参照text类型
CALL METHOD PR_DOCUMENT->ADD_TEXT "ADD_TEXT:方法
EXPORTING "因为ADD_TEXT方法在PR_DOCUMENT类中的parameters里面是importing
TEXT = '学生信息表' "可以通过类名直接进入类中查看方法的参数,也可以使用事物码se24
SAP_STYLE = CL_DD_DOCUMENT=>SUCCESS. "SAP_STYLE = CL_DD_DOCUMENT=>HEADING.
CALL METHOD PR_DOCUMENT->NEW_LINE.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = '日期'
SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
CALL METHOD PR_DOCUMENT->ADD_GAP "添加一个空格
EXPORTING
WIDTH = 3. "中间留有3个空格
WRITE SY-DATUM TO LV_DATUM USING EDIT MASK '__日__月____年'. "类型转换,因为add_text接收的是c类型
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = LV_DATUM
SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
CALL METHOD PR_DOCUMENT->NEW_LINE.
CALL METHOD PR_DOCUMENT->ADD_TEXT "ADD_TEXT:方法
EXPORTING "因为ADD_TEXT方法在PR_DOCUMENT类中的parameters里面是importing
TEXT = '学生信息表' "可以通过类名直接进入类中查看方法的参数,也可以使用事物码se24
SAP_FONTSTYLE = CL_DD_DOCUMENT=>HEADING.
CALL METHOD PR_DOCUMENT->NEW_LINE.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = '链接'
SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
CALL METHOD PR_DOCUMENT->ADD_GAP "添加一个空格
EXPORTING
WIDTH = 3. "中间留有3个空格
CALL METHOD PR_DOCUMENT->ADD_LINK "添加一个链接
EXPORTING
NAME = '度娘'
URL = 'https://www.baidu.com/'
TEXT = '度娘'.
ENDFORM.
网友评论