ABAP基础:数据字典表、表维护试图/维护视图、视图簇总结
表类型、检查表、索引、附加结构表维护视图维护视图视图簇
·
表类型


- 范围表


- 创建索引
![]()


- 创建检查表




- 参考表/字段


搜索帮助


- 附加结构



表维护视图--SM30





表维护视图自动获取附加字段值(如编码描述等)-表外字段


SM30进行维护数据记录创建及更改数据
-
打开表维护生成器->环境->修改->事件

-
增加两个子程序,分别添加01/05两个事件【01代表在数据库中保存数据前触发,05是新增条目的时候触发】


-
点击编辑器

-
控制记录字段只准输出不准输入

SM30表维护数据校验
-
添加按钮校验

-
再进入SM30

调用函数直接进入sm30
refresh act_sellist.
clear act_sellist.
"设置查询条件
act_sellist-viewfield = 'ID'.
act_sellist-operator = 'EQ'.
act_sellist-value = P_ID.
append act_sellist.
"设置功能类型
act_exclfun-function = 'NEWL'.
append act_exclfun.
act_exclfun-function = 'KOPE'.
append act_exclfun.
act_exclfun-function = 'DELE'.
append act_exclfun.
call function 'VIEW_MAINTENANCE_CALL'
exporting
action = 'U'
view_name = 'ZTEST_01'
tables
dba_sellist = act_sellist
excl_cua_funct = act_exclfun
exceptions
client_reference = 01
foreign_lock = 02
invalid_action = 03
no_clientindependent_auth
SM30添加导入excel的功能按钮
-
第一步,为已创建的维护试图添加导入按钮:找到对应的status,如图:


进入tcode:SE41 找到并进入上图对应的status,(注意:此处的维护status应该是120S),点击更改!新增导入按钮

-
第二步,添加对应事件处理:按钮事件一般在PAI处理就行了: 添加一个新MODULE。

UPLOAD内部代码
MODULE upload INPUT.
DATA: lt_itab TYPE STANDARD TABLE OF ****,
ls_wa LIKE LINE OF lt_itab.
DATA: lt_tab TYPE filetable,
ls_file_table TYPE file_table,
ls_file LIKE LINE OF lt_file_table,
lv_rc TYPE i,
lv_user_action TYPE i.
DATA: lt_data TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA lv_file TYPE rlgrap-filename.
CONSTANTS: lc_default_extension TYPE string VALUE 'xlsx',
lc_file_filter TYPE string VALUE '*.xlsx'.
CONSTANTS: lv_beign_row TYPE i VALUE 1,
lv_end_row TYPE i VALUE 3000,
lv_begin_col TYPE i VALUE 1,
lv_end_col TYPE i VALUE 2.
CASE function.
WHEN 'IMPORT'.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
* default_filename = '*.XLSX'
file_filter = 'Excel Files (*.xlsx)|*.xlsx|Excel Files (*.xls)|*.xls'
initial_directory = '/' "初始化的目录
* multiselection = 'X'
CHANGING
file_table = lt_tab
rc = lv_rc.
IF sy-subrc <> 0 AND sy-subrc <> 3.
MESSAGE e000(****) WITH '选择文件出错!'(007).
ENDIF.
READ TABLE lt_tab INTO ls_file_table INDEX 1.
lv_file = ls_file_table.
IF ls_file_table-filename = ''.
MESSAGE S000(****) WITH '未选择文件!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lv_file
i_begin_col = lv_begin_col
i_begin_row = lv_beign_row
i_end_col = lv_end_col
i_end_row = lv_end_row
"如果需要自定义sheet name,百度搜索自建方法,很简单,教程很多,这里不做赘述
TABLES
intern = lt_data "此处放上面定义的Excel专用内表
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF lt_data[] IS INITIAL .
MESSAGE s000(****) WITH '文件无数据或文件格式出错,请重新选择文件!' DISPLAY LIKE 'E'.
SORT lt_data BY row col ASCENDING.
ENDIF.
LOOP AT lt_data. "将上面定义的excel专用内表赋值给alv出力内表
CASE lt_data-col.
WHEN 1.
ls_wa-pcon_dec_code = lt_data-value.
WHEN 2.
ls_wa-pcon_ran_dec = lt_data-value.
APPEND ls_wa TO lt_itab."对于这个例子,excel表有3列,append要加在最后一列.
CLEAR ls_wa.
ENDCASE.
ENDLOOP.
MODIFY **** FROM TABLE lt_itab.
IF sy-subrc = 0.
MESSAGE s000(***) WITH '导入并更新****成功'.
COMMIT WORK.
ELSE.
MESSAGE s000(***) WITH '导入并更新****失败'.
ROLLBACK WORK.
ENDIF.
ENDCASE.
ENDMODULE. " UPLOAD INPUT
SE11--维护视图程序通过函数— VIEW_GET_DATA获取数据
-
维护视图创建

-
生成表维护视图


![]()
数据库视图

视图簇SE54
多个维护视图外键关联创建的视图簇
-
创建两个关联的自建表并创建外键为了创建两张表的维护视图

-
对两个表分别创建维护视图并生成表维护视图


-
SE54点击创建视图簇


-
选中首行点击字段相关,选中第二行点击字段附属通过外键将两个表连接起来

激活完成。
SM34--视图簇维护

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)