表类型
- 范围表
- 创建索引
- 创建检查表
- 参考表/字段
搜索帮助
- 附加结构
表维护视图--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点击创建视图簇
-
选中首行点击字段相关,选中第二行点击字段附属通过外键将两个表连接起来
激活完成。