二维码

用向导创建table control并实现动态控制单元格编辑状态

Twilight发表于 2015-01-06 19:55Twilight 最后回复于 2015-01-06 19:55 [复制链接] 4945 0

Table Control中我们可以根据每行记录的字段条件限制相关的单元格的编辑状态,如本例中根据'性别'来判断单元格编辑状态。

1、se38新建程序
  1. TYPES : BEGIN OF ty_emp_details,
  2.           pernr  TYPE pa0001-pernr ,
  3.           gender TYPE gesch,
  4.           input  TYPE char10,
  5.           sel TYPE char1,"table control左侧多选按钮
  6.         END OF ty_emp_details.
  7. DATA : it_emp_details TYPE TABLE OF ty_emp_details,
  8.        wa_emp_details TYPE ty_emp_details.
  9. START-OF-SELECTION.
  10.   CALL SCREEN 2000.
复制代码

2、创建2000标准屏幕,定义ok_code
3、绘制table control,点击“格式”
edit cell in TC 1.jpg
用向导创建table control
edit cell in TC 2.jpg
输入table control名称
edit cell in TC 3.jpg
因为是自定义结构,不是直接参考数据字段,所以选择下面那种情况
edit cell in TC 4.jpg
选择需要显示的字段,sel是table control左侧选择按钮对应的字段
edit cell in TC 5.jpg
输入结构中,用于在table control左侧选择按钮对应的字段
edit cell in TC 6.jpg
翻页、插入/删除行、全选/全不选
edit cell in TC 7.jpg
用向导生成的代码放置在哪个include下,我们这里就都放在主程序下,实战中一个程序都包含多个include,用来分类不同类型的代码,便于阅读
edit cell in TC 8.jpg
维护'性别'字段的属性
4、逻辑流
用向导生成代码,这里会自动生成相应的代码,我们需要PBO事件下,修改相应的module
edit cell in TC 9.jpg
  1. MODULE tc_2000_change_tc_attr OUTPUT.
  2.   IF it_emp_details IS INITIAL.
  3.     APPEND wa_emp_details TO it_emp_details.
  4.   ENDIF.
  5.   DESCRIBE TABLE it_emp_details LINES tc_2000-lines.
  6. ENDMODULE.                    "TC_2000_CHANGE_TC_ATTR OUTPUT
复制代码
  1. MODULE tc_2000_get_lines OUTPUT.
  2.   g_tc_2000_lines = sy-loopc.

  3.   LOOP AT SCREEN.
  4.     IF screen-name = 'WA_EMP_DETAILS-INPUT'.
  5.       IF wa_emp_details-gender  NE '1'.
  6.         screen-input = '1'.
  7.       ELSE.
  8.         screen-input = '0'.
  9.       ENDIF.
  10.       MODIFY SCREEN.
  11.     ENDIF.
  12.   ENDLOOP.
  13. ENDMODULE.                    "TC_2000_GET_LINES OUTPUT
复制代码

5、程序执行效果:
edit cell in TC 10.jpg
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表