接到一个需求,新建 一个add on 表,并且生成sm30的维护视图 。但是要在视图中,针对某些字段显示描述。
大致需求如下,
字段 | 参考字段 | 类型 | 长度 | 主键 | 默认值 | 描述 |
MANDT | MANDT | CLNT | 3 | X |
| 客户端 |
ZKHLX | ZE_KHLX | CHAR | 4 | X |
| 类型 |
ZKHND | ZE_KHND | NUMC | 4 | X |
| 年度 |
ZKHYF | ZE_KHYF | NUMC | 2 | X |
| 月份 |
ZBNDLX | ZE_BNDLX | NUMC | 2 | X |
| 半年度 |
ZJDLX | ZE_JDLX | NUMC | 2 | X |
| 季度 |
PERNR | PERSNO | NUMC | 8 | X |
| 被代理人 |
ZAGT | PERSNO | NUMC | 8 |
|
| 代理人 |
UNAME | AENAM | CHAR | 12 |
|
| 更改人 |
AEDTM | AEDAT | DATS | 8 |
|
| 更改日期 |
1 维护视图中,针对代理人 和 被代理人,是系统账号, 所以需要带出姓名描述
2 更改人、更改日期为系统ID 和 系统时间
最后展示界面如下:
根据此需求,
1. SE11----新建表----创建 表维护生成器。 函数组名称与 表名称保持一致 ZTABLE
2. se80: 选择函数组,输入ZTABLE,选择屏幕9000(屏幕号是自定义的,只有一个),双击屏幕
3. 屏幕中,有很多属性可以设定,此时,标准的屏幕里,是没有代理人姓名的,所以打开屏幕编辑器,我们来手动添加
4. 代理人姓名是如何添加的呢,选择 一个输入、输出字段,拖到相应位置,再选择一个文本字段 ,拖到其上方,作为标题,如下图
分别给这两个字段定义,对于输入输出字段,需要定义,
定义如下:
data :uanme_txt TYPE char40.
定义完成之后,就要写事件啦,根据 被代理人,自动带出被代理人姓名。只要在output事件中,自动检查就行。实例代码:
屏幕中:
PROCESS BEFORE OUTPUT.
LOOP AT EXTRACT WITH CONTROL
module zz_fill_text.
ENDLOOP.
MODULE zz_fill_text OUTPUT.
在此语句中给 uanme_txt 赋值
ENDMODULE.
ENDMODULE.
注意:
对于checkbox 也是一样的,选择 checkbox按钮,
需要注意的是,如果 对于某一列 字段是 ztable-a。
原本应该是 输入输出字段,需要先删除此字段,添加checkbox 按钮后,把checkbox的字段名称设为 ztable-a
会弹出提示,是否需要应用。不管他,点击是 。这样就能重新 绑定在一起了
如下图:
2.第二个需求,针对某些字段,带出F4 事件 。
同样,在屏幕中:
process on value-request.
field zpmv022-zorg module f4_objid.
field zpmv022-zorg module f4_objid.
field 后面是要启用F4事件的字段,module后是f4事件的响应处理
module f4_objid input.
下列是 hr系统中标准F4事件,此外还可以用F4IF_INT_TABLE_VALUE_REQUEST'
clear g_objec.
call function 'RH_OBJID_REQUEST'
exporting
plvar = '01'
otype = 'O'
dynpro_repid = sy-repid
dynpro_dynnr = sy-dynnr
dynpro_searkfield = 'ZPMV022-ZORG'
importing
sel_object = g_objec
exceptions
cancelled = 1
wrong_condition = 2
nothing_found = 3
internal_error = 4
illegal_mode = 5
others = 6.
if sy-subrc = 0.
if not g_objec-realo is initial.
zpmv022-zorg = g_objec-realo.
clear g_objec.
endif.
endif.
* CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
* EXPORTING
* functioncode = '='
* EXCEPTIONS
* function_not_supported = 1
* OTHERS = 2.
ENDMODULE.
clear g_objec.
call function 'RH_OBJID_REQUEST'
exporting
plvar = '01'
otype = 'O'
dynpro_repid = sy-repid
dynpro_dynnr = sy-dynnr
dynpro_searkfield = 'ZPMV022-ZORG'
importing
sel_object = g_objec
exceptions
cancelled = 1
wrong_condition = 2
nothing_found = 3
internal_error = 4
illegal_mode = 5
others = 6.
if sy-subrc = 0.
if not g_objec-realo is initial.
zpmv022-zorg = g_objec-realo.
clear g_objec.
endif.
endif.
* CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
* EXPORTING
* functioncode = '='
* EXCEPTIONS
* function_not_supported = 1
* OTHERS = 2.
ENDMODULE.