当前位置:网站首页>A Sina Weibo semantic sentiment analysis tool developed by ABAP
A Sina Weibo semantic sentiment analysis tool developed by ABAP
2022-08-10 15:33:00 【Wang Zixi】
ABAP Report appearance:
ZWEIBO_01 的源代码:
*&---------------------------------------------------------------------*
*& Include ZWEIBO_01
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_result,
name TYPE string,
value TYPE string,
END OF ty_result.
TYPES: tt_result TYPE STANDARD TABLE OF ty_result.
class lcl_analyzer DEFINITION create private.
PUBLIC SECTION.
METHODS: analyze IMPORTING iv_company_name TYPE string iv_text TYPE string EXPORTING ev_result TYPE string.
CLASS-METHODS:get_instance returning value(RO_INSTANCE) type ref to lcl_analyzer.
PRIVATE SECTION.
class-data mo_instance type ref to lcl_analyzer .
data: mr_http_client TYPE REF TO if_http_client.
CONSTANTS: gc_baseurl TYPE string VALUE 'http://xxx:9000/service_weibo/analysis?q='.
METHODS: constructor,
sendrequest IMPORTING iv_company_name TYPE string iv_text TYPE string EXPORTING ev_text TYPE string.
ENDCLASS.
class lcl_analyzer IMPLEMENTATION.
method analyze.
sendrequest( EXPORTING iv_company_name = iv_company_name iv_text = iv_text IMPORTING ev_text = ev_result ).
ENDMETHOD.
method constructor.
endmethod.
method sendrequest.
DATA: lv_url TYPE string,
lv_sysubrc TYPE sysubrc,
lv_error TYPE string,
lv_http_code TYPE i.
lv_url = gc_baseurl && cl_http_utility=>escape_url( iv_text ).
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = lv_url
"proxy_host = 'PROXY' "proxy_service = '8080'
"ssl_id = 'ANONYM'
IMPORTING
client = mr_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
CHECK sy-subrc = 0.
CALL METHOD mr_http_client->request->set_method( 'GET' ).
CALL METHOD mr_http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc <> 0.
CALL METHOD mr_http_client->get_last_error
IMPORTING
code = lv_sysubrc
message = lv_error.
mr_http_client->close( ).
RETURN.
ENDIF.
CALL METHOD mr_http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc <> 0.
CALL METHOD mr_http_client->get_last_error
IMPORTING
code = lv_sysubrc
message = lv_error.
mr_http_client->close( ).
RETURN.
ENDIF.
ev_text = mr_http_client->response->get_cdata( ).
mr_http_client->close( ).
endmethod.
method get_instance.
IF mo_instance IS NOT BOUND.
CREATE OBJECT mo_instance.
ENDIF.
ro_instance = mo_instance.
endmethod.
ENDCLASS.
CLASS lcl_weibo_tool DEFINITION.
PUBLIC SECTION.
METHODS: send FOR EVENT FUNCTION_SELECTED OF CL_GUI_TOOLBAR importing !FCODE,
display IMPORTING iv_text TYPE string,
constructor IMPORTING iv_editor TYPE REF TO cl_gui_textedit iv_alv TYPE REF TO CL_GUI_ALV_GRID,
set_table CHANGING ct_table TYPE tt_result,
get_formatted_string IMPORTING it_table TYPE any table EXPORTING ev_text TYPE string.
PRIVATE SECTION.
TYPES: BEGIN OF mytable_line,
line(1024) TYPE c,
END OF mytable_line.
TYPES: tt_mytable TYPE TABLE OF mytable_line.
DATA: lt_mytable TYPE tt_mytable.
DATA: mr_editor TYPE REF TO cl_gui_textedit,
mr_alv TYPE REF TO CL_GUI_ALV_GRID,
mr_result TYPE REF TO data.
CONSTANTS: gc_filter TYPE string VALUE '<br>'.
ENDCLASS.
CLASS lcl_weibo_tool IMPLEMENTATION.
METHOD send.
DATA: lv_text TYPE string,
ls_line TYPE mytable_line,
lv_result TYPE string.
CHECK fcode = 'CHECK'.
CLEAR: lt_mytable,lv_text.
cl_gui_cfw=>flush( ).
mr_editor->get_text_as_stream( IMPORTING text = lt_mytable ).
CHECK lt_mytable IS NOT INITIAL.
get_formatted_string( EXPORTING it_table = lt_mytable IMPORTING ev_text = lv_text ).
lcl_analyzer=>get_instance( )->analyze( EXPORTING iv_company_name = 'dummy' iv_text = lv_text
IMPORTING ev_result = lv_result ).
display( EXPORTING iv_text = lv_result ).
ENDMETHOD.
method set_table.
GET REFERENCE OF ct_table INTO mr_result.
endmethod.
method display.
FIELD-SYMBOLS: <table> TYPE tt_result.
ASSIGN mr_result->* TO <table>.
CLEAR: <table>.
DATA: lt_raw TYPE string_table,
lv_line TYPE string,
lv_len TYPE i,
ls_line TYPE ty_result.
SPLIT iv_text AT gc_filter INTO TABLE lt_raw.
LOOP AT lt_raw INTO lv_line.
ls_line-name = lv_line+0(5).
lv_len = strlen( lv_line ) - 6.
ls_line-value = lv_line+6(lv_len).
APPEND ls_line TO <table>.
ENDLOOP.
mr_alv->refresh_table_display( ).
endmethod.
METHOD constructor.
mr_editor = iv_editor.
mr_alv = iv_alv.
ENDMETHOD.
method get_formatted_string.
FIELD-SYMBOLS: <line> TYPE mytable_line.
DATA: lv_text TYPE string.
LOOP AT it_table ASSIGNING <line>.
CONCATENATE lv_text <line>-line INTO lv_text.
ENDLOOP.
ev_text = lv_text.
endmethod.
ENDCLASS.
主程序源代码:
*&---------------------------------------------------------------------*
*& Report ZWEIBO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZWEIBO.
INCLUDE zweibo_01.
DATA: go_toolbar_con TYPE REF TO cl_gui_docking_container,
go_edit_con TYPE REF TO cl_gui_docking_container,
go_alv TYPE REF TO CL_GUI_ALV_GRID,
go_result_con TYPE REF TO cl_gui_docking_container,
go_editor TYPE REF TO cl_gui_textedit,
go_toolbar TYPE REF TO CL_GUI_TOOLBAR,
go_tool TYPE REF TO lcl_weibo_tool,
l_container TYPE REF TO cl_gui_container,
l_s_event TYPE cntl_simple_event,
l_t_events TYPE cntl_simple_events,
ok_code LIKE sy-ucomm,
gt_result TYPE tt_result,
gv_rep_name LIKE sy-repid.
START-OF-SELECTION.
gv_rep_name = sy-repid.
call screen 0101.
MODULE STATUS_0101 OUTPUT.
PERFORM init.
SET TITLEBAR 'ZTITLE'.
SET PF-STATUS 'ZSTATUS'.
ENDMODULE.
MODULE USER_COMMAND_0101 INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'BACK' OR 'QUIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
FORM init.
IF go_toolbar_con IS NOT INITIAL.
go_alv->refresh_table_display( ).
RETURN.
ENDIF.
CREATE OBJECT go_toolbar_con
EXPORTING
repid = gv_rep_name
dynnr = '0101'
side = cl_gui_docking_container=>dock_at_top
extension = 19
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
ASSERT sy-subrc = 0.
l_container = go_toolbar_con.
CREATE OBJECT go_toolbar
EXPORTING
parent = l_container
display_mode = cl_gui_toolbar=>m_mode_horizontal
EXCEPTIONS
cntl_install_error = 1
cntl_error = 2
cntb_wrong_version = 3
OTHERS = 4.
ASSERT sy-subrc = 0.
l_s_event-eventid = cl_gui_toolbar=>m_id_function_selected.
l_s_event-appl_event = abap_false.
APPEND l_s_event TO l_t_events.
CALL METHOD go_toolbar->set_registered_events
EXPORTING
events = l_t_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
OTHERS = 4.
ASSERT sy-subrc = 0.
CALL METHOD go_toolbar->add_button
EXPORTING
fcode = 'CHECK'
icon = icon_check
butn_type = cntb_btype_button
quickinfo = 'Send'
EXCEPTIONS
cntl_error = 1
cntb_btype_error = 2
cntb_error_fcode = 3
OTHERS = 4.
ASSERT sy-subrc = 0.
CREATE OBJECT go_edit_con
EXPORTING
repid = gv_rep_name
dynnr = '0101'
side = cl_gui_docking_container=>dock_at_top
extension = 110
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
ASSERT sy-subrc = 0.
l_container = go_edit_con.
CREATE OBJECT go_editor
EXPORTING
parent = l_container
"wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position "wordwrap_to_linebreak_mode = cl_gui_textedit=>true
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
gui_type_not_supported = 5
OTHERS = 6.
ASSERT sy-subrc = 0.
CREATE OBJECT go_result_con
EXPORTING
repid = gv_rep_name
dynnr = '0101'
side = cl_gui_docking_container=>dock_at_top
extension = 140
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
ASSERT sy-subrc = 0.
CREATE OBJECt go_alv
EXPORTING
i_parent = go_result_con
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
ASSERT sy-subrc = 0.
DATA: ls_layout TYPE LVC_S_LAYO,
lt_caption TYPE LVC_T_FCAT,
ls_caption LIKE LINE OF lt_caption,
ls_default TYPE ty_result.
ls_layout-cwidth_opt = abap_false.
ls_caption-fieldname = 'NAME'.
ls_caption-just = 'C'.
ls_caption-seltext = 'Name'.
APPEND ls_caption TO lt_caption.
ls_caption-fieldname = 'VALUE'.
ls_caption-outputlen = 120.
APPEND ls_caption TO lt_caption.
ls_default-name = '微博内容'.
APPEND ls_default TO gt_result.
ls_default-name = '是否相关'.
APPEND ls_default TO gt_result.
ls_default-name = '讨论产品'.
APPEND ls_default TO gt_result.
ls_default-name = 'Microblogging tendencies'.
APPEND ls_default TO gt_result.
ls_default-name = '服务需求'.
APPEND ls_default TO gt_result.
ls_default-name = '购买需求'.
APPEND ls_default TO gt_result.
CREATE OBJECT go_tool EXPORTING iv_editor = go_editor iv_alv = go_alv.
go_tool->set_table( CHANGING ct_table = gt_result ).
SET HANDLER go_tool->send FOR go_toolbar.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_layout = ls_layout
CHANGING
it_outtab = gt_result
it_fieldcatalog = lt_caption
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
.
ENDFORM.
101 屏幕设计:
边栏推荐
- MySQL batch update and batch update method of different values of multiple records
- Custom picker scroll selector style
- 学习MySQL 临时表
- Pytest framework optimization
- 程序调试介绍及其使用
- 【数仓设计】企业数仓为什么要进行分层?(六大好处)
- storage of data in memory
- 易基因|深度综述:m6A RNA甲基化在大脑发育和疾病中的表观转录调控作用
- 网络初识(二)
- Programmer = overtime??- Master the time to master the life
猜你喜欢
TCP为什么是三次握手和四次挥手?
【MindSpore易点通机器人-02】设计与技术选型
Understanding_Data_Types_in_Go
It is reported that the original Meitu executive joined Weilai mobile phone, the top product may exceed 7,000 yuan
Scala collections
Allwinner V853 development board transplants LVGL-based 2048 games
Redis -- Nosql
APP automation testing with Uiautomator2
metaForce佛萨奇2.0系统开发功能逻辑介绍
Appium for APP automation testing
随机推荐
Pagoda panel open Redis to specify the network machine
秒杀项目收获
photoshop入门教程
Epoll learn to think: a high performance server processing framework
网络初识(二)
fastposter v2.9.1 程序员必备海报生成器
软件测试用例篇
【语义分割】DeepLab系列
const修饰的指针变量(详解)
Common conventions such as common SQL and API interfaces
systemui shield notification bar
异地多活方法论
富爸爸穷爸爸之读书笔记
网络工程师的背包(EDC总结推荐)
fatal error C1083 无法打开包括文件'io.h' No such file
关于async\await 的理解和思考
Mini Program-Voice broadcast function
Redis -- Nosql
It is reported that the original Meitu executive joined Weilai mobile phone, the top product may exceed 7,000 yuan
5G NR MIB详解