TC(Table Control)自定义F4
2015-06-11 09:33
239 查看
原文出自:http://blog.chinaunix.net/uid-8527621-id-2029501.html
REPORT z_barry_tc_f4 .
CONTROLS: tc01 TYPE TABLEVIEW USING SCREEN 0100.
TYPES: BEGIN OF ty_itab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF ty_itab.
DATA: itab TYPE TABLE OF ty_itab ,
wa TYPE ty_itab .
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values .
DATA: ok_code LIKE sy-ucomm.
START-OF-SELECTION.
wa-carrid = 'A01'.
wa-connid = '0001'.
APPEND wa TO itab.
CALL SCREEN 100.
*---------------------------------------------------------------------*
* MODULE TC01_change_tc_attr OUTPUT *
*---------------------------------------------------------------------*
MODULE tc01_change_tc_attr OUTPUT.
DESCRIBE TABLE itab LINES tc01-lines.
ENDMODULE.
*---------------------------------------------------------------------*
* MODULE TC01_modify INPUT *
*---------------------------------------------------------------------*
MODULE tc01_modify INPUT.
READ TABLE itab INTO wa INDEX tc01-current_line
TRANSPORTING NO FIELDS .
IF sy-subrc = 0 .
MODIFY itab FROM wa INDEX tc01-current_line.
ELSE.
INSERT wa INTO itab INDEX tc01-current_line.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module status_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
progname = sy-repid.
dynnum = sy-dynnr.
ENDMODULE. " status_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LE***E PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module showf4 INPUT
*&---------------------------------------------------------------------*
MODULE showf4 INPUT.
DATA: l_selline LIKE sy-stepl,
d_values TYPE TABLE OF dynpread,
f_value LIKE LINE OF dynpro_values .
DATA: tmpitab LIKE itab.
CLEAR tmpitab.
GET CURSOR LINE l_selline.
CALL FUNCTION 'DYNP_VALUES_READ' "获取屏幕字段
EXPORTING
dyname = progname
dynumb = dynnum
request = 'A'
TABLES
dynpfields = d_values.
READ TABLE d_values INTO f_value
WITH KEY fieldname = 'WA-CARRID'
stepl = l_selline.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE tmpitab
WHERE carrid = f_value-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CONNID'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CONNECTION'
value_org = 'S'
TABLES
value_tab = tmpitab.
ENDMODULE. " showf4 INPUT
***************
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE tc01_change_tc_attr.
LOOP AT itab
INTO wa
WITH CONTROL tc01
CURSOR tc01-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE user_command_0100.
LOOP AT itab.
CHAIN.
FIELD wa-carrid.
FIELD wa-connid.
MODULE tc01_modify ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
PROCESS ON VALUE-REQUEST.
FIELD wa-connid MODULE showf4.
REPORT z_barry_tc_f4 .
CONTROLS: tc01 TYPE TABLEVIEW USING SCREEN 0100.
TYPES: BEGIN OF ty_itab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF ty_itab.
DATA: itab TYPE TABLE OF ty_itab ,
wa TYPE ty_itab .
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values .
DATA: ok_code LIKE sy-ucomm.
START-OF-SELECTION.
wa-carrid = 'A01'.
wa-connid = '0001'.
APPEND wa TO itab.
CALL SCREEN 100.
*---------------------------------------------------------------------*
* MODULE TC01_change_tc_attr OUTPUT *
*---------------------------------------------------------------------*
MODULE tc01_change_tc_attr OUTPUT.
DESCRIBE TABLE itab LINES tc01-lines.
ENDMODULE.
*---------------------------------------------------------------------*
* MODULE TC01_modify INPUT *
*---------------------------------------------------------------------*
MODULE tc01_modify INPUT.
READ TABLE itab INTO wa INDEX tc01-current_line
TRANSPORTING NO FIELDS .
IF sy-subrc = 0 .
MODIFY itab FROM wa INDEX tc01-current_line.
ELSE.
INSERT wa INTO itab INDEX tc01-current_line.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module status_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
progname = sy-repid.
dynnum = sy-dynnr.
ENDMODULE. " status_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LE***E PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module showf4 INPUT
*&---------------------------------------------------------------------*
MODULE showf4 INPUT.
DATA: l_selline LIKE sy-stepl,
d_values TYPE TABLE OF dynpread,
f_value LIKE LINE OF dynpro_values .
DATA: tmpitab LIKE itab.
CLEAR tmpitab.
GET CURSOR LINE l_selline.
CALL FUNCTION 'DYNP_VALUES_READ' "获取屏幕字段
EXPORTING
dyname = progname
dynumb = dynnum
request = 'A'
TABLES
dynpfields = d_values.
READ TABLE d_values INTO f_value
WITH KEY fieldname = 'WA-CARRID'
stepl = l_selline.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE tmpitab
WHERE carrid = f_value-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CONNID'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CONNECTION'
value_org = 'S'
TABLES
value_tab = tmpitab.
ENDMODULE. " showf4 INPUT
***************
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE tc01_change_tc_attr.
LOOP AT itab
INTO wa
WITH CONTROL tc01
CURSOR tc01-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE user_command_0100.
LOOP AT itab.
CHAIN.
FIELD wa-carrid.
FIELD wa-connid.
MODULE tc01_modify ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
PROCESS ON VALUE-REQUEST.
FIELD wa-connid MODULE showf4.
相关文章推荐
- ME21N增强提示警告消息
- 数据清洗小记:“时间段”数据获取小心错误的习惯
- Bigtable: A Distributed Storage Systemfor Structured Data
- Android中的选择器selector的写法解析及不起作用原因
- C字符数组赋值(转)
- 总结-概念
- 移动Web开发技巧汇总(转)
- 安装lnmp
- SQL临时表&表变量
- VM克隆CentOS后设置IP
- PL/SQL Developer 9.x 注册码
- 东莞大学生资讯网
- 数据库生成Json
- 黑马程序员——Java基础—继承
- Enigma脱壳、Enigma过注册各个版本总结
- C语言合并字符串函数用法(strcat)
- UrlPager免费分页控件2.0版发布!
- js循环添加标签并判断添加的次数
- JQuery创建DOM节点的方法
- 游戏想要卖得好,试试美女救英雄(人民邮电报专栏《乐游记》58)