*功能如下:
*1.界面定时刷新,无需手动刷新,这个可以指定时间。
*2.涨跌着色,一目了然,参照其它股票行情软件,不同区域使用不同的着色。
*3.可以增加,删除行项目。
*4.抬头增加刷新时间显示。
*5.分时信息,盘口信息单独显示。
*6.增加行情数据来源,新的行情信息来自腾讯,信息更完整。
REPORT zstock_003.
*TYPE-POOLS: abap,slis.
TABLES: zstock_list.
*INCLUDE zstock_json_util.
DATA:f_picture TYPE REF TO cl_gui_picture,
r_picture TYPE REF TO cl_gui_picture,
z_picture TYPE REF TO cl_gui_picture,
y_picture TYPE REF TO cl_gui_picture.
DATA: f_container TYPE REF TO cl_gui_custom_container,
r_container TYPE REF TO cl_gui_custom_container,
y_container TYPE REF TO cl_gui_custom_container,
z_container TYPE REF TO cl_gui_custom_container.
DATA:f_url TYPE cndp_url,
r_url TYPE cndp_url,
z_url TYPE cndp_url,
y_url TYPE cndp_url.
DATA:stock_url(20) TYPE c.
DATA:ok_code LIKE sy-ucomm.
DATA: gv_snum(6) TYPE c.
TYPES: BEGIN OF ty_snum,
num(6) TYPE c,
END OF ty_snum.
TYPES: BEGIN OF ty_sl_snum,
sign TYPE char1,
option TYPE char2,
low TYPE char6,
high TYPE char6,
END OF ty_sl_snum.
DATA: gs_range_snum TYPE ty_sl_snum.
* 清单代码清单
DATA: gt_snum TYPE TABLE OF ty_snum WITH HEADER LINE.
DATA: gv_status TYPE char20 .
*----------------TYPE DEFINITION--------------------------
TYPES: BEGIN OF ty_list,
name TYPE char6, "股票名字
code TYPE char10, "股票代码
curr TYPE dmbtr, "当前价格;
yclos TYPE dmbtr, "昨日收盘价;
open TYPE dmbtr, "今日开盘价
total TYPE dmbtr, "成交的股票数
buyf TYPE dmbtr, "外盘
salef TYPE dmbtr, "内盘
buy12 TYPE dmbtr, "买一,报价
buy11 TYPE dec10, "买一,数量
buy22 TYPE dmbtr, "买二,报价
buy21 TYPE dec10, "买二,数量
buy32 TYPE dmbtr, "买三,报价
buy31 TYPE dec10, "买三,数量
buy42 TYPE dmbtr, "买四,报价
buy41 TYPE dec10, "买四,数量
buy52 TYPE dmbtr, "买五,报价
buy51 TYPE dec10, "买五,数量
sale12 TYPE dmbtr, "卖一,报价
sale11 TYPE dec10, "卖一,数量
sale22 TYPE dmbtr, "卖二,报价
sale21 TYPE dec10, "卖二,数量
sale32 TYPE dmbtr, "卖三,报价
sale31 TYPE dec10, "卖三,数量
sale42 TYPE dmbtr, "卖四,报价
sale41 TYPE dec10, "卖四,数量
sale52 TYPE dmbtr, "卖五,报价
sale51 TYPE dec10, "卖五,数量
deal TYPE string, "最近逐笔成交
date TYPE sy-datum, "时间
time TYPE sy-uzeit,
updwn TYPE dmbtr, "涨跌
updwnp TYPE dmbtr, "涨跌%
high TYPE dmbtr, "当日最高价
low TYPE dmbtr, "今日最低价
prcamt TYPE string, "价格/成交量(手)/成交额
number TYPE dmbtr, "总手
amount TYPE dmbtr, "成交额(万)
chrn TYPE dmbtr, "换手率
peratio TYPE dmbtr, "市盈率
top TYPE dmbtr, "最高
lowest TYPE dmbtr, "最低
swing TYPE dmbtr, "振幅
marketv TYPE dmbtr, "流通市值
totalv TYPE dmbtr, "总市值
pb TYPE dmbtr, "市净率
hlimit TYPE dmbtr, "涨停价
stopp TYPE dmbtr, "跌停价
END OF ty_list.
TYPES: BEGIN OF ty_internal,
_number TYPE i ,"序列号
_excp TYPE c,"需要在LAYOUT-EXCP_FNAME中指定,绿灯3,红灯1,黄灯2"
_check TYPE c ,"复选框,还需要在FCAT中设置成CHECKBOX,记录用户的选择
_box TYPE c ,"需要在LAYOUT-BOX_NAME中指定,记录用户的选择,跟_BOX不同,记录的是ALV控件的标准选择框,
_delete TYPE c , "记录删除标识X"
_action TYPE c ,"用户操作,插入I,更新U,删除D"
_row_id TYPE sytabix,"行项目ID"
_tabix TYPE sytabix,"引用的表行标识"
_line_color(4) TYPE c, "行项目的颜色"
_field_style TYPE lvc_t_styl,"行项目的样式"
_cell_colors TYPE lvc_t_scol ,"颜色控制
_mess_type TYPE c,"消息类型,用于数据检查"
_message TYPE char255,"行项目的消息内容"
END OF ty_internal.
TYPES: BEGIN OF ty_type.
INCLUDE TYPE ty_internal.
INCLUDE TYPE ty_list.
TYPES END OF ty_type.
DATA: gt_table TYPE TABLE OF ty_type WITH HEADER LINE.
DATA: gv_code TYPE ty_type-code.
TYPES: BEGIN OF ty_charlist,
name TYPE char10, "股票名字
code TYPE char10, "股票代码
curr TYPE char10, "当前价格;
yclos TYPE char10, "昨日收盘价;
open TYPE char10, "今日开盘价
total TYPE char10, "成交的股票数
buyf TYPE char10, "外盘
salef TYPE char10, "内盘
buy12 TYPE char8, "买一,报价
buy11 TYPE char10, "买一,数量
buy22 TYPE char8, "买二,报价
buy21 TYPE char10, "买二,数量
buy32 TYPE char8, "买三,报价
buy31 TYPE char10, "买三,数量
buy42 TYPE char8, "买四,报价
buy41 TYPE char10, "买四,数量
buy52 TYPE char8, "买五,报价
buy51 TYPE char10, "买五,数量
sale12 TYPE char8, "卖一,报价
sale11 TYPE char10, "卖一,数量
sale22 TYPE char8, "卖二,报价
sale21 TYPE char10, "卖二,数量
sale32 TYPE char8, "卖三,报价
sale31 TYPE char10, "卖三,数量
sale42 TYPE char8, "卖四,报价
sale41 TYPE char10, "卖四,数量
sale52 TYPE char8, "卖五,报价
sale51 TYPE char10, "卖五,数量
deal TYPE string, "最近逐笔成交
date TYPE sy-datum, "时间
time TYPE sy-uzeit,
updwn TYPE char10, "涨跌
updwnp TYPE char10, "涨跌%
high TYPE char10, "当日最高价
low TYPE char10, "今日最低价
prcamt TYPE string, "价格/成交量(手)/成交额
number TYPE char10, "总手
amount TYPE char10, "成交额(万)
chrn TYPE char10, "换手率
peratio TYPE char10, "市盈率
top TYPE char10, "最高
lowest TYPE char10, "最低
swing TYPE char10, "振幅
marketv TYPE char10, "流通市值
totalv TYPE char10, "总市值
pb TYPE char10, "市净率
hlimit TYPE char10, "涨停价
stopp TYPE char10, "跌停价
END OF ty_charlist.
DATA: gs_table TYPE ty_charlist.
DATA: gv_tabidx TYPE sy-tabix.
*ALV类变量定义
DATA: gs_layout TYPE lvc_s_layo.
DATA: gt_fieldcat TYPE lvc_t_fcat.
DATA: gt_alv_sort TYPE lvc_t_sort.
DATA: x_save TYPE c,
gs_variant TYPE disvariant,
g_title TYPE lvc_title.
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* CLASS lcl_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS. "lcl_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_receiver IMPLEMENTATION.
METHOD handle_finished.
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = '&NTE'.
ENDMETHOD. "handle_finished
ENDCLASS. "lcl_receiver IMPLEMENTATION
DATA: receiver TYPE REF TO lcl_receiver,
timer TYPE REF TO cl_gui_timer.
**屏幕
SELECTION-SCREEN BEGIN OF SCREEN 101.
SELECT-OPTIONS: op1_snum FOR zstock_list-code MATCHCODE OBJECT zstock_help1."gv_snum.
SELECTION-SCREEN END OF SCREEN 101.
SELECT-OPTIONS:op_snum FOR zstock_list-code MATCHCODE OBJECT zstock_help1."gv_snum.
PARAMETERS: p_time TYPE int4 DEFAULT 5.
PARAMETERS: p_col TYPE char1 AS CHECKBOX DEFAULT ' '."颜色控制。
**屏幕
INITIALIZATION.
*默认自己设的变式U+登录用户名
PERFORM init_variant.
CREATE OBJECT timer.
CREATE OBJECT receiver.
SET HANDLER receiver->handle_finished FOR timer.
timer->interval = p_time.
gv_status = sy-uzeit.
START-OF-SELECTION .
PERFORM set_number TABLES op_snum[] USING ''.
PERFORM read_data.
PERFORM dis_prepare_layout CHANGING gs_layout.
PERFORM dis_prepare_sort CHANGING gt_alv_sort.
PERFORM dis_prepare_field_catalog CHANGING gt_fieldcat.
PERFORM dis_show_data_alv.
* PERFORM write_grid_output.
*&---------------------------------------------------------------------*
*& Form READ_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_data.
DATA: l_tmp TYPE string,
l_str TYPE string,
l_url TYPE string.
IF gt_snum[] IS INITIAL.
RETURN.
ENDIF.
CLEAR: gt_table,gt_table[].
* PERFORM read_data_from_sina.
PERFORM read_data_from_tencent.
PERFORM modify_before_dis.
* PERFORM build_filedcat1.
* PERFORM process_data.
PERFORM move_to_screen.
ENDFORM. "READ_DATA
*&---------------------------------------------------------------------*
*& Form move_to_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM move_to_screen.
IF gv_code IS NOT INITIAL.
READ TABLE gt_table WITH KEY code = gv_code.
IF sy-subrc = 0.
MOVE-CORRESPONDING gt_table TO gs_table.
ELSE.
CLEAR gs_table.
ENDIF.
ENDIF.
CALL METHOD timer->run.
ENDFORM. "move_to_screen
*&---------------------------------------------------------------------*
*& Form read_data_from_sina
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_data_from_sina.
DATA: l_res TYPE string.
DATA: result_tab TYPE TABLE OF string WITH HEADER LINE.
DATA: l_tmp TYPE string,
l_str TYPE string,
l_url TYPE string.
DATA: lt_feld TYPE TABLE OF string WITH HEADER LINE.
DATA: idx TYPE sy-tabix.
FIELD-SYMBOLS: <dyn_field>.
* REFRESH result_tab .
LOOP AT gt_snum.
CLEAR l_tmp.
IF gt_snum-num(1) < 6.
CONCATENATE 'sz' gt_snum-num INTO l_tmp.
ENDIF.
IF gt_snum-num(1) = '6'.
CONCATENATE 'sh' gt_snum-num INTO l_tmp.
ENDIF.
CONCATENATE l_str l_tmp INTO l_str SEPARATED BY ','.
ENDLOOP.
IF l_str(1) = ','.
SHIFT l_str LEFT DELETING LEADING ','.
ENDIF.
CONCATENATE 'http://58.63.237.216/list=' l_str INTO l_url .
PERFORM send_http USING l_url CHANGING l_res.
SPLIT l_res AT cl_abap_char_utilities=>newline INTO TABLE result_tab .
"新浪下载实时数据,类型与下载的数据一致。
TYPES: BEGIN OF ty_sina_live,
code TYPE string,"股票代码
name TYPE string,"股票名字
open TYPE string,"今日开盘价
yclos TYPE string,"昨日收盘价;
curr TYPE string,"当前价格;
high TYPE string,"当日最高价
low TYPE string,"今日最低价
buy1 TYPE string,"竞买价,即“买一”报价;
sale1 TYPE string,"竞卖价,即“卖一”报价;
total TYPE string,"成交的股票数
amount TYPE string,"成交的金额
buy11 TYPE string,"买一,数量
buy12 TYPE string,"买一,报价
buy21 TYPE string,"买二,数量
buy22 TYPE string,"买二,报价
buy31 TYPE string,"买三,数量
buy32 TYPE string,"买三,报价
buy41 TYPE string,"买四,数量
buy42 TYPE string,"买四,报价
buy51 TYPE string,"买五,数量
buy52 TYPE string,"买五,报价
sale11 TYPE string,"卖一,数量
sale12 TYPE string,"卖一,报价
sale21 TYPE string,"卖二,数量
sale22 TYPE string,"卖二,报价
sale31 TYPE string,"卖三,数量
sale32 TYPE string,"卖三,报价
sale41 TYPE string,"卖四,数量
sale42 TYPE string,"卖四,报价
sale51 TYPE string,"卖五,数量
sale52 TYPE string,"卖五,报价
date TYPE string,"日期
time TYPE string,"时间
END OF ty_sina_live.
DATA : lt_sina_live TYPE TABLE OF ty_sina_live WITH HEADER LINE.
LOOP AT result_tab.
CLEAR: lt_feld,lt_feld[].
SPLIT result_tab AT ',' INTO TABLE lt_feld.
READ TABLE lt_feld INDEX 1.
IF sy-subrc = 0.
lt_sina_live-code = lt_feld+13(6).
lt_sina_live-name = lt_feld+21.
ELSE.
MESSAGE e001(00) WITH '下载数据出错。'.
ENDIF.
idx = 2.
WHILE idx < 33.
READ TABLE lt_feld INDEX idx.
idx = idx + 1.
ASSIGN COMPONENT idx
OF STRUCTURE lt_sina_live TO <dyn_field>.
<dyn_field> = lt_feld.
ENDWHILE.
APPEND lt_sina_live.
ENDLOOP.
LOOP AT lt_sina_live.
MOVE-CORRESPONDING lt_sina_live TO gt_table.
gt_table-date = lt_sina_live-date.
gt_table-time = lt_sina_live-time.
APPEND gt_table.
ENDLOOP.
ENDFORM. "read_data_from_sina
*&---------------------------------------------------------------------*
*& Form read_data_from_tensent
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_data_from_tencent.
DATA: l_res TYPE string.
DATA: result_tab TYPE TABLE OF string WITH HEADER LINE.
DATA: l_tmp TYPE string,
l_str TYPE string,
l_url TYPE string.
DATA: lt_feld TYPE TABLE OF string WITH HEADER LINE.
DATA: idx TYPE sy-tabix.
FIELD-SYMBOLS: <dyn_field>.
* REFRESH result_tab .
SORT gt_snum.
delete ADJACENT DUPLICATES FROM gt_snum.
LOOP AT gt_snum.
CLEAR l_tmp.
IF gt_snum-num(1) < 6.
CONCATENATE 'sz' gt_snum-num INTO l_tmp.
ENDIF.
IF gt_snum-num(1) = '6'.
CONCATENATE 'sh' gt_snum-num INTO l_tmp.
ENDIF.
CONCATENATE l_str l_tmp INTO l_str SEPARATED BY ','.
ENDLOOP.
IF l_str(1) = ','.
SHIFT l_str LEFT DELETING LEADING ','.
ENDIF.
* CONCATENATE 'http://qt.gtimg.cn/q=' l_str INTO l_url .
CONCATENATE 'http://14.17.52.161/q=' l_str INTO l_url .
PERFORM send_http USING l_url CHANGING l_res.
SPLIT l_res AT cl_abap_char_utilities=>newline INTO TABLE result_tab .
"新浪下载实时数据,类型与下载的数据一致。
TYPES: BEGIN OF ty_struct,
unkn TYPE char20,"未知
name TYPE string,"股票名字
code TYPE string,"股票代码
curr TYPE string,"当前价格;
yclos TYPE string,"昨日收盘价;
open TYPE string,"今日开盘价
total TYPE string,"成交的股票数
buyf TYPE string,"外盘
salef TYPE string,"内盘
buy12 TYPE string,"买一,报价
buy11 TYPE string,"买一,数量
buy22 TYPE string,"买二,报价
buy21 TYPE string,"买二,数量
buy32 TYPE string,"买三,报价
buy31 TYPE string,"买三,数量
buy42 TYPE string,"买四,报价
buy41 TYPE string,"买四,数量
buy52 TYPE string,"买五,报价
buy51 TYPE string,"买五,数量
sale12 TYPE string,"卖一,报价
sale11 TYPE string,"卖一,数量
sale22 TYPE string,"卖二,报价
sale21 TYPE string,"卖二,数量
sale32 TYPE string,"卖三,报价
sale31 TYPE string,"卖三,数量
sale42 TYPE string,"卖四,报价
sale41 TYPE string,"卖四,数量
sale52 TYPE string,"卖五,报价
sale51 TYPE string,"卖五,数量
deal TYPE string,"最近逐笔成交
datetime TYPE string,"时间
updwn TYPE string,"涨跌
updwnp TYPE string,"涨跌%
high TYPE string,"当日最高价
low TYPE string,"今日最低价
prcamt TYPE string,"价格/成交量(手)/成交额
number TYPE string,"成交量(手)
amount TYPE string,"成交额(万)
chrn TYPE string,"换手率
peratio TYPE string,"市盈率
unkn1 TYPE string,"
top TYPE string,"最高
lowest TYPE string,"最低
swing TYPE string,"振幅
marketv TYPE string,"流通市值
totalv TYPE string,"总市值
pb TYPE string,"市净率
hlimit TYPE string,"涨停价
stopp TYPE string,"跌停价
END OF ty_struct.
DATA : lt_struct TYPE TABLE OF ty_struct WITH HEADER LINE.
LOOP AT result_tab.
CLEAR: lt_feld,lt_feld[].
SPLIT result_tab AT '~' INTO TABLE lt_feld.
idx = 1.
WHILE idx < 50.
READ TABLE lt_feld INDEX idx.
ASSIGN COMPONENT idx
OF STRUCTURE lt_struct TO <dyn_field>.
<dyn_field> = lt_feld.
idx = idx + 1.
ENDWHILE.
APPEND lt_struct.
ENDLOOP.
LOOP AT lt_struct.
MOVE-CORRESPONDING lt_struct TO gt_table.
gt_table-date = lt_struct-datetime(8).
gt_table-time = lt_struct-datetime+8(6).
APPEND gt_table.
ENDLOOP.
ENDFORM. "read_data_from_tensent
*&---------------------------------------------------------------------*
*& Form modify_before_dis
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM modify_before_dis.
"颜色 ,5是绿色,6是红色。
DATA ls_cellcolor TYPE lvc_s_scol ."颜色控制
DEFINE change_field_color.
clear ls_cellcolor.
ls_cellcolor-fname = &1 .
ls_cellcolor-color-col = &2 .
ls_cellcolor-color-int = '1' .
ls_cellcolor-color-inv = '0' .
append ls_cellcolor to gt_table-_cell_colors .
END-OF-DEFINITION.
DATA : c_red TYPE lvc_s_scol-color-col VALUE 5.
DATA : c_gre TYPE lvc_s_scol-color-col VALUE 7.
LOOP AT gt_table.
IF p_col IS NOT INITIAL.
"外盘总是红色
IF gt_table-buyf IS NOT INITIAL.
change_field_color 'BUYF' c_red.
ENDIF.
"内秀总是绿色。
IF gt_table-salef IS NOT INITIAL.
change_field_color 'SALEF' c_gre.
ENDIF.
IF gt_table-updwn < 0.
gt_table-_excp = 3.
change_field_color 'CURR' c_red.
change_field_color 'UPDWN' c_red.
change_field_color 'UPDWNP' c_red.
ELSEIF gt_table-updwn = 0.
gt_table-_excp = 2.
ELSE.
gt_table-_excp = 1.
change_field_color 'CURR' c_gre.
change_field_color 'UPDWN' c_gre.
change_field_color 'UPDWNP' c_gre.
ENDIF.
IF gt_table-open IS NOT INITIAL.
IF gt_table-open > gt_table-yclos.
change_field_color 'OPEN' c_gre.
ELSEIF gt_table-open < gt_table-yclos.
change_field_color 'OPEN' c_red.
ENDIF.
ENDIF.
IF gt_table-high IS NOT INITIAL.
IF gt_table-high > gt_table-yclos.
change_field_color 'HIGH' c_gre.
ELSEIF gt_table-high < gt_table-yclos.
change_field_color 'HIGH' c_red.
ENDIF.
ENDIF.
IF gt_table-low IS NOT INITIAL.
IF gt_table-low > gt_table-yclos.
change_field_color 'LOW' c_gre.
ELSEIF gt_table-low < gt_table-yclos.
change_field_color 'LOW' c_red.
ENDIF.
ENDIF.
ENDIF.
IF gt_table-total IS NOT INITIAL.
gt_table-total = gt_table-total / 10000.
ENDIF.
IF gt_table-salef IS NOT INITIAL.
gt_table-salef = gt_table-salef / 10000.
ENDIF.
IF gt_table-buyf IS NOT INITIAL.
gt_table-buyf = gt_table-buyf / 10000.
ENDIF.
IF gt_table-number IS NOT INITIAL.
gt_table-number = gt_table-number / 10000.
ENDIF.
IF gt_table-updwnp = '0.00' .
CLEAR gt_table-updwnp.
ENDIF.
MODIFY gt_table.
ENDLOOP.
ENDFORM. "modify_before_dis
*&---------------------------------------------------------------------*
*& Form send_http
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_NUM text
* -->RT_TAB text
*----------------------------------------------------------------------*
FORM send_http USING p_url TYPE string CHANGING p_res TYPE string.
DATA: loc_conv TYPE REF TO cl_abap_conv_in_ce,
http_client TYPE REF TO if_http_client,
abap_encoding TYPE abap_encoding,
l_xstr TYPE xstring,
l_str TYPE string,
l_result TYPE string,
r_str TYPE string.
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = p_url
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'text/html;charset=utf-8'."发送字符串时只能用utf-8编码
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2.
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
CLEAR l_result .
l_xstr = http_client->response->get_data( ).
IF sy-subrc = 0 .
http_client->close( ).
ENDIF.
CALL METHOD cl_abap_conv_in_ce=>create
EXPORTING
input = l_xstr
encoding = '8400'
replacement = '?'
ignore_cerr = abap_true
RECEIVING
conv = loc_conv.
"二进制转文本。
TRY.
CALL METHOD loc_conv->read
IMPORTING
data = l_str.
CATCH cx_sy_conversion_codepage.
CATCH cx_sy_codepage_converter_init.
CATCH cx_parameter_invalid_type.
CATCH cx_parameter_invalid_range.
ENDTRY.
IF l_str(6) = '<html>' or l_str = 'pv_none_match=1;'.
MESSAGE e001(00) WITH '股票代码不正确'.
ENDIF.
p_res = l_str.
ENDFORM. "send_http
*&---------------------------------------------------------------------*
*& Form DIS_PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PS_LAYOUT text
*----------------------------------------------------------------------*
FORM dis_prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
g_title = sy-title.
ps_layout-cwidth_opt = 'X'.
ps_layout-zebra = 'X'.
ps_layout-box_fname = '_BOX'.
ps_layout-sel_mode = 'A'.
ps_layout-excp_fname = '_EXCP'.
ps_layout-excp_led = 'X'.
ps_layout-info_fname = '_LINE_COLOR'.
ps_layout-grid_title = g_title.
ps_layout-stylefname = '_FIELD_STYLE'.
ps_layout-detailinit = 'X' . " 是否可以弹出细节屏幕
ps_layout-detailtitl = g_title. " 细节屏幕标题
ps_layout-ctab_fname = '_CELL_COLORS'.
ENDFORM. " prepare_layout
*&---------------------------------------------------------------------*
*& Form DIS_PREPARE_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_SORT text
*----------------------------------------------------------------------*
FORM dis_prepare_sort CHANGING pt_sort TYPE lvc_t_sort.
DATA: ls_sort TYPE lvc_s_sort.
CLEAR ls_sort.
ls_sort-fieldname = 'CODE'.
ls_sort-up = 'X'.
APPEND ls_sort TO pt_sort.
ENDFORM. "dis_preparc_sort
*&---------------------------------------------------------------------*
*& Form DIS_PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_FIELDCAT text
*----------------------------------------------------------------------*
FORM dis_prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .
CLEAR pt_fieldcat[].
DATA ls_fcat TYPE lvc_s_fcat .
CLEAR ls_fcat .
ls_fcat-coltext = '状态'.
ls_fcat-fieldname = '_EXCP'.
ls_fcat-outputlen = 1.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '代码'.
ls_fcat-fieldname = 'CODE'.
ls_fcat-hotspot = 'X'.
ls_fcat-fix_column = 'X'.
* ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '名称'.
ls_fcat-fieldname = 'NAME'.
ls_fcat-no_zero = 'X'.
ls_fcat-f4availabl = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '涨幅%'.
ls_fcat-fieldname = 'UPDWNP'.
ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '现价'.
ls_fcat-fieldname = 'CURR'.
ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '涨跌'.
ls_fcat-fieldname = 'UPDWN'.
ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '总手(万)'.
ls_fcat-fieldname = 'TOTAL'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '外盘(万)'.
ls_fcat-fieldname = 'SALEF'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '内盘(万)'.
ls_fcat-fieldname = 'BUYF'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买一价'.
* ls_fcat-fieldname = 'BUY12'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买一量'.
* ls_fcat-fieldname = 'BUY11'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买二价'.
* ls_fcat-fieldname = 'BUY22'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买二量'.
* ls_fcat-fieldname = 'BUY21'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买三价'.
* ls_fcat-fieldname = 'BUY32'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买三量'.
* ls_fcat-fieldname = 'BUY31'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买四价'.
* ls_fcat-fieldname = 'BUY42'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买四量'.
* ls_fcat-fieldname = 'BUY41'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买五价'.
* ls_fcat-fieldname = 'BUY52'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '买五量'.
* ls_fcat-fieldname = 'BUY51'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖一价'.
* ls_fcat-fieldname = 'SALE12'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖一量'.
* ls_fcat-fieldname = 'SALE11'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖二价'.
* ls_fcat-fieldname = 'SALE22'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖二量'.
* ls_fcat-fieldname = 'SALE21'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖三价'.
* ls_fcat-fieldname = 'SALE32'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖三量'.
* ls_fcat-fieldname = 'SALE31'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖四价'.
* ls_fcat-fieldname = 'SALE42'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖四量'.
* ls_fcat-fieldname = 'SALE41'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖五价'.
* ls_fcat-fieldname = 'SALE52'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '卖五量'.
* ls_fcat-fieldname = 'SALE51'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '最近逐笔成交'.
* ls_fcat-fieldname = 'DEAL'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '最高价'.
ls_fcat-fieldname = 'HIGH'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '最低价'.
ls_fcat-fieldname = 'LOW'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '开盘'.
ls_fcat-fieldname = 'OPEN'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '昨收'.
ls_fcat-fieldname = 'YCLOS'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '价格/成交量(手)/成交额'.
* ls_fcat-fieldname = 'PRCAMT'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '成交量(万手)'.
ls_fcat-fieldname = 'NUMBER'.
ls_fcat-no_zero = 'X'.
ls_fcat-col_opt = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '成交额(万)'.
ls_fcat-fieldname = 'AMOUNT'.
ls_fcat-no_zero = 'X'.
ls_fcat-col_opt = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '换手率'.
ls_fcat-fieldname = 'CHRN'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '市盈率'.
ls_fcat-fieldname = 'PERATIO'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '最高'.
* ls_fcat-fieldname = 'TOP'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
* ls_fcat-coltext = '最低'.
* ls_fcat-fieldname = 'LOWEST'.
* ls_fcat-no_zero = 'X'.
* APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '振幅'.
ls_fcat-fieldname = 'SWING'.
ls_fcat-no_zero = 'X'.
ls_fcat-f4availabl = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '流通市值'.
ls_fcat-fieldname = 'MARKETV'.
ls_fcat-no_zero = 'X'.
ls_fcat-f4availabl = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '总市值'.
ls_fcat-fieldname = 'TOTALV'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '市净率'.
ls_fcat-fieldname = 'PB'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '涨停价'.
ls_fcat-fieldname = 'HLIMIT'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '跌停价'.
ls_fcat-fieldname = 'STOPP'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '时间'.
ls_fcat-fieldname = 'TIME'.
* ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '日期'.
ls_fcat-fieldname = 'DATE'.
ls_fcat-no_zero = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ENDFORM . "DIS_PREPARE_LAYOUT
*显示ALV------------------------------------------------------------------------
FORM dis_show_data_alv.
DATA: i_grid_title TYPE lvc_title .
i_grid_title = g_title . "'ALV标题' .
" 定义隐藏标准按钮的变量
DATA: wa_excluding TYPE slis_extab ,
it_excluding TYPE slis_t_extab .
" 设置要隐藏的按钮的“FCODE”
wa_excluding-fcode = '&ABC' .
APPEND wa_excluding TO it_excluding .
CLEAR wa_excluding.
DATA:lt_events TYPE TABLE OF slis_alv_event WITH HEADER LINE.
lt_events-name = 'CALLER_EXIT'.
lt_events-form = 'ALV_EVENT_CALLER_EXIT'.
APPEND lt_events.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid " 当前程序
is_layout_lvc = gs_layout " 属性内表
it_fieldcat_lvc = gt_fieldcat[] " 列明内表
it_excluding = it_excluding[]
i_save = 'X' " 是否保存布局
i_callback_pf_status_set = 'ALV_PF_STATUS_SET'
i_callback_user_command = 'ALV_USER_COMMAND'
"i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE1'
"I_GRID_TITLE = I_GRID_TITLE
it_sort_lvc = gt_alv_sort[]
TABLES
t_outtab = gt_table[] " 数据内表
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "DIS_SHOW_DATA_ALV
*设置状态
FORM alv_pf_status_set USING rt_extab TYPE slis_t_extab.
*copy the status from SAPLKKBL,and renamed it as ZSTANDARD.
SET PF-STATUS 'ZSTANDARD'.
ENDFORM. "ALV_PF_STATUS_SET
*&---------------------------------------------------------------------*
*& Form REFRESH_ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM refresh_alv_display.
DATA: ls_refresh TYPE lvc_s_stbl.
ls_refresh-row = 'X'.
ls_refresh-col = 'X'.
CALL METHOD g_grid->refresh_table_display( EXPORTING is_stable = ls_refresh ).
CALL METHOD cl_gui_cfw=>flush.
ENDFORM. " REFRESH_ALV_DISPLAY
*&---------------------------------------------------------------------*
*& Form ALV_USER_COMMAND
*&---------------------------------------------------------------------*
* 捕捉用户的动作
*----------------------------------------------------------------------*
FORM alv_user_command USING p_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield .
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = g_grid.
CALL METHOD g_grid->check_changed_data.
gv_tabidx = rs_selfield-tabindex.
READ TABLE gt_table INDEX gv_tabidx.
IF sy-subrc = 0.
gv_code = gt_table-code.
ENDIF.
CASE p_ucomm.
WHEN '&IC1' . " 判断用户的动作
CLEAR: f_url,z_url,r_url,y_url.
f_url = 'http://image.sinajs.cn/newchart/min/n/'.
z_url = 'http://image.sinajs.cn/newchart/weekly/n/'.
r_url = 'http://image.sinajs.cn/newchart/daily/n/'.
y_url = 'http://image.sinajs.cn/newchart/monthly/n/'.
IF rs_selfield-fieldname = 'CODE'.
IF rs_selfield-value+0(1) = 0.
CONCATENATE 'sz' rs_selfield-value '.gif' INTO stock_url.
ELSE.
CONCATENATE 'sh' rs_selfield-value '.gif' INTO stock_url.
ENDIF.
CHECK stock_url IS NOT INITIAL.
CONCATENATE f_url stock_url INTO f_url.
CONCATENATE z_url stock_url INTO z_url.
CONCATENATE y_url stock_url INTO y_url.
CONCATENATE r_url stock_url INTO r_url.
CALL SCREEN 0100.
ELSE.
CALL SCREEN 201.
ENDIF.
WHEN '&NTE'.
PERFORM auto_refresh.
rs_selfield-refresh = 'X'.
WHEN 'DEL_CODE'.
READ TABLE gt_table INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
READ TABLE gt_snum WITH KEY num = gt_table-code.
IF sy-subrc = 0.
DELETE gt_snum INDEX sy-tabix.
ENDIF.
DELETE gt_table INDEX rs_selfield-tabindex.
rs_selfield-refresh = 'X' .
ENDIF.
WHEN 'ADD_CODE'.
CALL SELECTION-SCREEN 101 STARTING AT 5 10 .
IF op1_snum[] IS NOT INITIAL.
PERFORM set_number TABLES op1_snum[] USING 'A'.
PERFORM read_data.
rs_selfield-refresh = 'X' .
ENDIF.
*当用户在显式界面上对数据进行修改时,同时内表中的数据也随之刷新
* rs_selfield-refresh = 'X' .
ENDCASE.
ENDFORM. " ALV_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form set_number
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_number TABLES op_snum STRUCTURE gs_range_snum USING op_type type char1.
DATA tmp_num TYPE char6.
IF op_type = 'A'.
SELECT code AS num APPENDING TABLE gt_snum FROM zstock_list WHERE code IN op_snum.
ELSE.
SELECT code AS num INTO TABLE gt_snum FROM zstock_list WHERE code IN op_snum.
ENDIF.
RETURN.
LOOP AT op_snum.
CLEAR gt_snum.
IF op_snum-option = 'EQ' .
IF op_snum-low <> '' .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = op_snum-low
IMPORTING
output = op_snum-low.
gt_snum-num = op_snum-low.
APPEND gt_snum.
ENDIF.
IF op_snum-high <> '' .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = op_snum-high
IMPORTING
output = op_snum-high
gt_snum-num = op_snum-high.
APPEND gt_snum.
ENDIF.
ENDIF.
IF op_snum-option = 'BT'.
tmp_num = op_snum-low.
WHILE tmp_num <= op_snum-high.
CLEAR gt_snum.
gt_snum-num = tmp_num.
APPEND gt_snum.
tmp_num = tmp_num + 1.
ENDWHILE.
ENDIF.
ENDLOOP.
ENDFORM. " set_number
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
*分时图
IF f_picture IS INITIAL.
CREATE OBJECT f_container
EXPORTING
container_name = 'F_CONTROL'.
CREATE OBJECT f_picture
EXPORTING
parent = f_container.
CALL METHOD f_picture->set_3d_border
EXPORTING
border = 1.
CALL METHOD f_picture->load_picture_from_url_async
EXPORTING
url = f_url.
ELSE.
CALL METHOD f_picture->load_picture_from_url_async
EXPORTING
url = f_url.
ENDIF.
*日K线图
IF r_picture IS INITIAL.
CREATE OBJECT r_container
EXPORTING
container_name = 'R_CONTROL'.
CREATE OBJECT r_picture
EXPORTING
parent = r_container.
CALL METHOD r_picture->set_3d_border
EXPORTING
border = 1.
CALL METHOD r_picture->load_picture_from_url_async
EXPORTING
url = r_url.
ELSE.
CALL METHOD r_picture->load_picture_from_url_async
EXPORTING
url = r_url.
ENDIF.
*周K线图
IF z_picture IS INITIAL.
CREATE OBJECT z_container
EXPORTING
container_name = 'Z_CONTROL'.
CREATE OBJECT z_picture
EXPORTING
parent = z_container.
CALL METHOD z_picture->set_3d_border
EXPORTING
border = 1.
CALL METHOD z_picture->load_picture_from_url_async
EXPORTING
url = z_url.
ELSE.
CALL METHOD z_picture->load_picture_from_url_async
EXPORTING
url = z_url.
ENDIF.
*月K线图
IF y_picture IS INITIAL.
CREATE OBJECT y_container
EXPORTING
container_name = 'Y_CONTROL'.
CREATE OBJECT y_picture
EXPORTING
parent = y_container.
CALL METHOD y_picture->set_3d_border
EXPORTING
border = 1.
CALL METHOD y_picture->load_picture_from_url_async
EXPORTING
url = y_url.
ELSE.
CALL METHOD y_picture->load_picture_from_url_async
EXPORTING
url = y_url.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_exit INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_EXIT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN '&NTE'.
PERFORM auto_refresh.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form auto_refresh
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM auto_refresh.
IF sy-uzeit < '090000'.
CONCATENATE '未开市:' sy-uzeit INTO gv_status.
ELSEIF sy-uzeit > '113000' AND sy-uzeit < '130000'.
CONCATENATE '休市:' sy-uzeit INTO gv_status.
ELSEIF sy-uzeit > '150000'.
CONCATENATE '交易结束:' sy-uzeit INTO gv_status.
ELSE.
CONCATENATE '交易中:' sy-uzeit INTO gv_status.
ENDIF.
IF sy-uzeit >= '090000' AND sy-uzeit <= '113000'.
PERFORM read_data.
ENDIF.
IF sy-uzeit >= '130000' AND sy-uzeit <= '150000'.
PERFORM read_data.
ENDIF.
ENDFORM. "auto_refresh
*&---------------------------------------------------------------------*
*& Form INIT_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_variant .
DATA: h_variant LIKE rsvar-variant.
DATA: h_subrc LIKE sy-subrc.
CLEAR: h_variant,h_subrc .
CHECK sy-tcode <> 'SE38' AND sy-tcode <> 'SA38' .
h_variant = 'U_'.
WRITE sy-uname TO h_variant+2.
CALL FUNCTION 'RS_VARIANT_EXISTS'
EXPORTING
report = sy-repid
variant = h_variant
IMPORTING
r_c = h_subrc.
IF h_subrc = 0.
* g_feldlist-g_var_flag = 'X'.
CALL FUNCTION 'RS_SUPPORT_SELECTIONS'
EXPORTING
report = sy-repid
variant = h_variant
EXCEPTIONS
variant_not_existent = 01
variant_obsolete = 02.
ENDIF.
ENDFORM. " INIT_VARIANT
*&---------------------------------------------------------------------*
*& Module UPDATE_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE update_data OUTPUT.
PERFORM move_to_screen.
ENDMODULE. " UPDATE_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0105 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0105 OUTPUT.
SET PF-STATUS 'ZSTATUS01'.
* SET TITLEBAR 'xxx'.
PERFORM move_to_screen.
ENDMODULE. " STATUS_0105 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0105 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0105 INPUT.
CASE ok_code.
WHEN '&NTE'.
PERFORM auto_refresh.
WHEN 'EXIT' OR 'BACK' OR 'CANC' OR 'CONFIRM'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0105 INPUT
SAP 如何在SAP系统中查看股票信息
最新推荐文章于 2024-04-11 17:46:53 发布