前言
目录:
• 维护视图创建
• 维护视图增加描述字段
• 维护视图事件:增加默认字段(创建人、日期、时间)
• 维护视图创建事务码
• 维护视图选择屏幕
• 维护视图变式
• 维护视图ABAP调用
创建维护视图
1\. SE11 建表
2\. 创建维护视图
从SE11->表->"实用程序"->"表维护生成器"路径创建
权限组: 通常输"&NC&"无权限组;
函数组: 通常建议一个模块建一个维护视图函数组;
维护类型:选"一步";
维护屏幕编号:概述屏幕中输入屏幕编号,函数组内递增不重复即可
添加描述字段
1\. 进入维护视图函数组 ,在包含文件top中增加全局描述字段gv_bezei
2\. 编辑屏幕100,在表格控件中增加一个输入输出框(名称 为 上一步定义的字段名 gv_bezei)和一个文本字段,将gv_bezei
设置为仅输出
3\. 在屏幕PBO中增加取值代码,如下图所示
4\. 双 击get_bezei后 创建新的包含文件,完善代码如下:
*&---------------------------------------------------------------------**& Module GET_BEZEI OUTPUT*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*MODULE get_bezei OUTPUT. SELECT SINGLE bezei INTO gv_bezei FROM tvakt WHERE auart = ztsd01_test-auart AND spras = sy-langu.ENDMODULE.
5\. SM30查看维护视图
添加默认字段
这个有两种方法:一. 在屏幕PAI中增加代码 二. 使用维护视图事件。
**方法一: 在屏幕PAI中增加代码 **
2\. 在屏幕PAI中增加 取值代码,如下图所示
3\. 双 击add_audit后 创建新的包含文件,完善代码如下:
*&---------------------------------------------------------------------**& Module ADD_AUDIT INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE add_audit INPUT. zcl_common=>add_audit( CHANGING cs_data = ztsd01_test ).ENDMODULE.
METHOD add_audit. FIELD-SYMBOLS:<fs> TYPE any. ASSIGN COMPONENT 'ERNAM' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0 AND <fs> IS INITIAL. <fs> = sy-uname. ASSIGN COMPONENT 'ERDAT' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0. <fs> = sy-datum. ENDIF. ASSIGN COMPONENT 'ERZET' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0. <fs> = sy-uzeit. ENDIF. ELSE. ASSIGN COMPONENT 'AENAM' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0. <fs> = sy-uname. ASSIGN COMPONENT 'AEDAT' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0. <fs> = sy-datum. ENDIF. ASSIGN COMPONENT 'AEZET' OF STRUCTURE cs_data TO <fs>. IF sy-subrc = 0. <fs> = sy-uzeit. ENDIF. ENDIF. ENDIF. ENDMETHOD.4\. SM30编辑行项目后,创建人、更改人会自动填充值
**方法二: 使用维护视图事件。 **
1\. 从SE11->表->"实用程序"->"表维护生成器"->"环境"->"修改"->"事件"路径进入事件编辑界面
2\. 添加行项目:事件"21",子例程"FRM_ADD_AUDIT"
3\. 点击"编辑器",创建包含文件,完善代码如下:
*----------------------------------------------------------------------**&---------------------------------------------------------------------**& Form FRM_ADD_AUDIT*&---------------------------------------------------------------------**& text*&---------------------------------------------------------------------**& --> p1 text*& <-- p2 text*&---------------------------------------------------------------------*FORM frm_add_audit . zcl_common=>add_audit( CHANGING cs_data = ztsd01_test ).ENDFORM.
4\. SM30编辑行项目后,创建人、更改人会自动填充值
创建事务码
1\. SE93创建事务码,选择"使用参数的事务"
2\. 事务输入"SM30",勾选"跳过初始屏幕",屏幕字段名称内输入VIEWNAME,值为维护视图名称"ZTSD01_TEST",
SHOW字段值为"X",如果想直接进入编辑模式的话,需设置UPDATE字段为"X".
维护视图选择屏幕
SM30进入维护视图的时候,如果行项目太多,想在进入视图前使用筛选条件,具体方法如下。
1\. 以维护视图"V_TCURR"汇率维护为例,默认进去的时候是这样的
如果我只是想维护今年范围内,CNY兑美元的汇率,怎么办呢?
2 . 在SM30界面,选择"输入条件"
3\. 勾选"从货币"、"最终货币"、"有效自"
4\. 输入过滤条件,如下
5\. 结果如下
维护视图变式
如果维护视图的某种过滤条件使用频率非常频繁,我们可以考虑建立维护视图的变式,不用每次都使用"输入条件"过滤。
1. 进入SE54,输入视图名,点击"编辑视图变式"
2\. 输入变式名,点击"创建"
3\. 表内输入"V_TCURR",然后回车
5\. 勾选"从货币"、"最终货币"、"汇率有效起始日期"
6\. 输入过滤条件,GDATU字段需多选一次,如下
7\. 维护状态,按下图修改,然后激活
8.SM30,输入视图变式名称,查询,效果同 06 节一致。
ABAP调用
1\. 如果不带过滤条件调用的话,直接使用" VIEW_MAINTE NANCE_CALL "函数,action值'S'为查看,'U'为编辑。
CALL FUNCTION 'VIEW_MAINTENANCE_CALL' EXPORTING action = 'S' view_name = 'V_TCURR'* TABLES* dba_sellist = dba_sellist EXCEPTIONS client_reference = 1 foreign_lock = 2 invalid_action = 3 no_clientindependent_auth = 4 no_database_function = 5 no_editor_function = 6 no_show_auth = 7 no_tvdir_entry = 8 no_upd_auth = 9 only_show_allowed = 10 system_failure = 11 unknown_field_in_dba_sellist = 12 view_not_found = 13 maintenance_prohibited = 14 OTHERS = 15.2.如果需要传入选择条件,先调用" VIEW_RANGETAB_TO_SEL LIST "函数,将选择屏幕参数转换为 vimsellist
内表,最后将内表传入函数" VIEW_MAINTE NANCE_CALL "的 dba_sellist 参数即可
DATA:lt_dba_sellist TYPE STANDARD TABLE OF vimsellist, ls_dba_sellist TYPE vimsellist.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST' EXPORTING fieldname = 'GDATU' append_conjunction = 'AND' TABLES sellist = lt_dba_sellist rangetab = s_GDATU. E...