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--视图簇维护

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值