ABAP 中 Table Control例子

作者:湖北诺贝特科技有限公司  来源:www.nbt158.com未知  发布时间:2017-09-08 21:57:40
ABAP 中 Table Control例子 实现了Table Control的主要的一些功能,可以作为例子参考,实现的功能有是否可编辑切换,选择某一条记录点击按钮显示详细信息,站群系统,专题,新增记录,删除记录,选择所有记录,选择光标所有记录,取消选择所有,排序,行选择栏位,列不可编辑,固定列,Table Control标题,分页功能,根据输入A字段的值显示B字段的值,某字段的值如果等于XXX就不可编辑等功能。相信这些功能已经可以满足大部份的开发了。

主程序代码:

DATA: ok_code TYPE sy-ucomm,

save_ok TYPE sy-ucomm.

DATA: l_field TYPE char50,

l_line TYPE i.

TYPES: BEGIN OF ty_spfli,

carrid TYPE spfli-carrid,

connid TYPE spfli-connid,

countryfr TYPE spfli-countryfr,

cityfrom TYPE spfli-cityfrom,

airpfrom TYPE spfli-airpfrom,

mask(1),

END OF ty_spfli.

DATA g_lines TYPE i.

DATA sp2 TYPE TABLE OF ty_spfli WITH HEADER LINE.

DATA sp1 TYPE ty_spfli.

SELECT * INTO CORRESPONDING FIELDS OF TABLE sp2 FROM spfli.

CONTROLS content TYPE TABLEVIEW USING SCREEN 100.

content-top_line = 1.

content-lines = LINES( sp2 ).

CALL SCREEN 100.

LOOP AT sp2.

WRITE: / sp2-carrid,sp2-connid,sp2-countryfr,sp2-cityfrom.

ENDLOOP.

*----------------------------------------------------------------------*

* MODULE status_0100 OUTPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE status_0100 OUTPUT.

SET PF-STATUS 'STA'.

ENDMODULE. "status_0100 OUTPUT

*----------------------------------------------------------------------*

* MODULE user_command_0100 INPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE user_command_0100 INPUT.

save_ok = ok_code.

CLEAR ok_code.

CASE save_ok.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'SWITH'.

PERFORM f_switch.

WHEN 'SORT_UP'.

PERFORM f_sort USING 'UP'.

WHEN 'SORT_DOWN'.

PERFORM f_sort USING 'DOWN'.

WHEN 'DETAIL'.

PERFORM f_detail.

WHEN 'P--'.

PERFORM f_page USING save_ok.

WHEN 'P-'.

PERFORM f_page USING save_ok.

WHEN 'P+'.

PERFORM f_page USING save_ok.

WHEN 'P++'.

PERFORM f_page USING save_ok.

WHEN 'SELECT'.

PERFORM f_select USING 'SELECT'.

WHEN 'BLOCK'.

PERFORM f_select USING 'BLOCK'.

WHEN 'DESELECT'.

PERFORM f_select USING 'DESELECT'.

WHEN 'INSERT'.

PERFORM f_row USING 'INSERT'.

WHEN 'DELETE'.

PERFORM f_row USING 'DELETE'.

ENDCASE.

ENDMODULE. "user_command_0100 INPUT

*----------------------------------------------------------------------*

* MODULE filltab OUTPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE filltab OUTPUT.

READ TABLE sp2 INTO sp1 INDEX content-current_line.

ENDMODULE. "filltab OUTPUT

*----------------------------------------------------------------------*

* MODULE readtab INPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE readtab INPUT.

g_lines = sy-loopc.

MODIFY sp2 FROM sp1 INDEX content-current_line.

ENDMODULE. "readtab INPUT

*----------------------------------------------------------------------*

* MODULE chang_val INPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE chang_val INPUT.

DATA lwa_cols LIKE LINE OF content-cols.

LOOP AT content-cols INTO lwa_cols.

IF lwa_cols-screen-name = 'SP1-COUNTRYFR'

AND sp1-countryfr = 'AA'.

sp1-cityfrom = 'SDSDSD'.

MODIFY sp2 FROM sp1 INDEX content-current_line.

ENDIF.

ENDLOOP.

ENDMODULE. "chang_val INPUT

*----------------------------------------------------------------------*

* MODULE get_cursor INPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE get_cursor INPUT.

GET CURSOR FIELD l_field LINE l_line.

ENDMODULE. "get_cursor INPUT

*----------------------------------------------------------------------*

* MODULE set_cursor OUTPUT

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE set_cursor OUTPUT.

SET CURSOR FIELD l_field LINE l_line.

ENDMODULE. "set_cursor OUTPUT

*----------------------------------------------------------------------*

* MODULE SET_EDITABLE

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

MODULE set_editable OUTPUT.

LOOP AT SCREEN.

IF screen-name = 'SP1-CITYFROM'.

IF sp1-cityfrom = 'SDSDSD'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDIF.

ENDLOOP.

ENDMODULE. "SET_EDITABLE

*&---------------------------------------------------------------------*

*& Form f_page

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->CODE text

*----------------------------------------------------------------------*

FORM f_page USING code TYPE sy-ucomm.

DATA: i TYPE i,

j TYPE i.

CASE code.

WHEN 'P--'.

content-top_line = 1.

WHEN 'P-'.

content-top_line = content-top_line - g_lines.

IF content-top_line <= 0.

content-top_line = 1.

ENDIF.

WHEN 'P+'.

i = content-top_line + g_lines.

j = content-lines - g_lines + 1.

IF j <= 0.

j = 1.

ENDIF.

IF i <= j.

content-top_line = i.

ELSE.

content-top_line = j.

ENDIF.

WHEN 'P++'.

content-top_line = content-lines - g_lines + 1.

IF content-top_line <= 0.

content-top_line = 1.

ENDIF.

ENDCASE.

ENDFORM. "f_page

*&---------------------------------------------------------------------*

*& Form f_switch

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM f_switch.

DATA lwa_cols LIKE LINE OF content-cols.

LOOP AT content-cols INTO lwa_cols WHERE index > 2.

IF lwa_cols-screen-input = 0.

lwa_cols-screen-input = 1.

ELSE.

lwa_cols-screen-input = 0.

ENDIF.

MODIFY content-cols FROM lwa_cols INDEX sy-tabix.

ENDLOOP.

ENDFORM. "f_switch

*&---------------------------------------------------------------------*

*& Form F_SORT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->CODE text

*----------------------------------------------------------------------*

FORM f_sort USING code.

DATA: str1 TYPE string,

str2 TYPE string,

lwa_cols LIKE LINE OF content-cols.

READ TABLE content-cols INTO lwa_cols WITH KEY selected = 'X'.

IF sy-subrc = 0.

SPLIT lwa_cols-screen-name AT '-' INTO str1 str2.

IF code = 'UP'.

SORT sp2 STABLE BY (str2) ASCENDING.

ELSEIF code = 'DOWN'.

SORT sp2 STABLE BY (str2) DESCENDING.

ENDIF.

lwa_cols-selected = ''.

MODIFY content-cols FROM lwa_cols TRANSPORTING selected WHERE selected = 'X'.

ENDIF.

ENDFORM. "F_SORT

*&---------------------------------------------------------------------*

*& Form f_detail

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM f_detail.

READ TABLE sp2 INTO sp1 WITH KEY mask = 'X'.

IF sy-subrc = 0 AND sp1-mask = 'X'.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

EXPORTING

textline1 = sp1-carrid

textline2 = sp1-connid.

ENDIF.

ENDFORM. "f_detail

*&---------------------------------------------------------------------*

*& Form f_select

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->CODE text

*----------------------------------------------------------------------*

FORM f_select USING code.

CASE code.

WHEN 'SELECT'.

sp1-mask = 'X'.

MODIFY sp2 FROM sp1 TRANSPORTING mask WHERE mask IS INITIAL.

WHEN 'BLOCK'.

sp1-mask = 'X'.

MODIFY sp2 FROM sp1 INDEX l_line TRANSPORTING mask.

WHEN 'DESELECT'.

sp1-mask = ''.

MODIFY sp2 FROM sp1 TRANSPORTING mask WHERE mask = 'X'.

ENDCASE.

ENDFORM. "f_select

*&---------------------------------------------------------------------*

*& Form F_ROW

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->CODE text

*----------------------------------------------------------------------*

FORM f_row USING code.

DATA lwa_cols LIKE LINE OF content-cols.

DATA: l_int TYPE i,

lt_cols LIKE TABLE OF l_int.

CASE code.

WHEN 'INSERT'.

INSERT INITIAL LINE INTO sp2 INDEX l_line.

WHEN 'DELETE'.

DELETE sp2 WHERE mask = 'X'.

ENDCASE.

ENDFORM. "F_ROW

屏幕100的代码:

PROCESS BEFORE OUTPUT.

MODULE status_0100.

LOOP WITH CONTROL content.

MODULE filltab.

MODULE set_editable.

ENDLOOP.

MODULE set_cursor.

PROCESS AFTER INPUT.

LOOP WITH CONTROL content.

MODULE readtab.

MODULE chang_val.

ENDLOOP.

MODULE get_cursor.

MODULE user_command_0100.

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:天门网站制作 http://tianmen.666rj.com


上一篇:Discuz安装百度结构化数据插件图文教程
下一篇:最后一页