日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP股票查看代码

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP股票查看代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
*&---------------------------------------------------------------------*
*& Report Z_HTTP_STOCK
*&
*&---------------------------------------------------------------------*
*
*&本程序只作個人測試用途,
*參考http://blog.itpub.net/73630/viewspace-1028306/
*原作者:&Author: Alan Gu
*&五秒鐘更新一次
*&雙擊股票代碼可以查看相關的K線圖
*&---------------------------------------------------------------------*
*功能如下:
*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

總結

以上是生活随笔為你收集整理的ABAP股票查看代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。