锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

FMALV的框架和部分功能

时间:2023-07-14 23:37:00 zra250三极管

下面为 主程序代码

TABLES: zfztorg01. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_bukrs FOR zfztorg01-bukrs OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1 .  INCLUDE zfxorg0007_top. INCLUDE zfxorg0007_frm.  AT SELECTION-SCREEN.   " 权限检查   PERFORM frm_authority_check.    START-OF-SELECTION.   "获取数据   PERFORM frm_get_data.   "显示列名内表设置   PERFORM frm_set_fieldcat.   "数据展示   PERFORM frm_display. 

下面为 TOP内的定义

TYPES: BEGIN OF ty_data,        zindex  TYPE c.    "选中标识         INCLUDE TYPE zfztorg01. TYPES: zzt     TYPE zfztorg01-status,        butxt   TYPE t001-butxt,        f_style TYPE lvc_t_styl.  TYPES: END OF ty_data.  DATA:       gt_author      TYPE TABLE OF ty_data,       gw_author      TYPE ty_data,       gt_events      TYPE slis_t_event WITH HEADER LINE,       gi_layout_lvc  TYPE lvc_s_layo,       gt_fieldcat    TYPE lvc_t_fcat,       gs_fieldcat    LIKE LINE OF gt_fieldcat. 

下面为 FRM内的定义

FORM frm_authority_check.  "权限检查 ENDFORM.    FORM frm_get_data.  "获取数据 ENDFORM.     FORM frm_display.  "数据展示 * 事件   DATA l_events TYPE LINE OF slis_t_event.   l_events-name = slis_ev_data_changed.   l_events-form = 'FRM_REFRESH_DATA'.   APPEND l_events TO gt_events. *  全局格式布局   DATA: l_grid_settings TYPE lvc_s_glay.   gi_layout_lvc-zebra         = 'X' .       " 使ALV界面呈现颜色交替   gi_layout_lvc-sel_mode      = 'B' .       " 选择模式   gi_layout_lvc-box_fname     = 'ZINDEX'.   "标记选项   gi_layout_lvc-cwidth_opt    = 'X' .       " 列宽自动优化   gi_layout_lvc-detailinit    = 'X' .       " 屏幕是否有细节   gi_layout_lvc-detailtitl    = 详细内容. " 细节屏幕标题   gi_layout_lvc-totals_bef    = 'X'.        " 个别记录前的总输出   gi_layout_lvc-edit          = 'X'.        "可编辑   gi_layout_lvc-stylefname    = 'F_STYLE'.  "可编辑字段设置   l_grid_settings-edt_cll_cb  = 'X'.        "可编辑重置    PERFORM frm_no_change."不可编辑的字段设置    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     EXPORTING       i_callback_program       = sy-repid       i_callback_pf_status_set = 'FRM_SET_STATUS'       i_callback_user_command  = 'FRM_COMMAND'       i_grid_settings          = l_grid_settings       is_layout_lvc            = gi_layout_lvc       it_fieldcat_lvc          = gt_fieldcat       it_events                = gt_events[]       i_save                   = 'A'     TABLES       t_outtab                 = gt_author     EXCEPTIONS       program_error            = 1       OTHERS                   = 2. ENDFORM.  FORM frm_set_status USING p_extab  TYPE slis_t_extab ."工具栏   SET  PF-STATUS 'ZRA601'. ENDFORM.  FORM frm_command  USING p_ucomm TYPE sy-ucomm                     p_selfield TYPE slis_selfield."按钮功能   DATA: g_alv TYPE REF TO cl_gui_alv_grid.   DATA: ls_tab TYPE lvc_s_stbl.    ls_tab-row = 'X'.   ls_tab-col = 'X'.   CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'  "获取当前的ALV,     IMPORTING       e_grid = g_alv.   CALL METHOD g_alv->check_changed_data.    CASE p_ucomm.     WHEN 'ADD'."新增       PERFORM frm_add_data.       p_selfield-refresh = 'X'.   ENDCASE. ENDFORM.  FORM frm_add_data. "在第一行插入一条空白线,若在末尾使用APPEND INSERT INITIAL LINE INTO gt_author INDEX 1. "复制初始值,更新内表,调整可编辑单元格   LOOP AT gt_author INTO gw_author.        MODIFY gt_author FROM gw_author.     PERFORM frm_can_change.     EXIT.   ENDLOOP. ENDFORM.  FORM frm_set_fieldcat .  "显示列名内表设置    CLEAR gt_fieldcat[].     PERFORM frm_add_fieldcat   USING  'ZZT'         '状态'             ''    8    ''    ''    ''.     PERFORM frm_add_fieldcat   USING  'BUTXT'         '名称'             ''    8    ''    ''    ''. ENDFORM.  FORM frm_add_fieldcat  USING    p_name       TYPE c                                 p_text       TYPE c                                 p_key        TYPE c                                 p_lenth      TYPE i                                 p_edit       TYPE c                                 p_rftab      TYPE lvc_s_fcat-ref_table                                 p_rfname     TYPE lvc_s_fcat-ref_field.   CLEAR gs_fieldcat.   gs_fieldcat-fieldname      = p_name.   gs_fieldcat-scrtext_l      = p_text.   gs_fieldcat-key            = p_key.   gs_fieldcat-outputlen      = p_lenth.   gs_fieldcat-edit           = p_edit.   gs_fieldcat-ref_table      = p_rftab.   gs_fieldcat-ref_field      = p_rfname.   IF gs_fieldcat-fieldname = 'ZEDIT'.     gs_fieldcat-f4availabl     = 'X'.         "搜索帮助   ENDIF.   IF gs_fieldcat-fieldname = 'ORGST'.     gs_fieldcat-checkbox     = 'X'.           "复选框   ENDIF.   APPEND gs_fieldcat TO gt_fieldcat. ENDFORM.  FORM frm_refresh_data USING uo_data_changed TYPE REF TO cl_alv_changed_data_protocol.  "单元格编辑监控事件   FIEL-SYMBOLS:    TYPE STANDARD TABLE,
                    TYPE STANDARD TABLE,
                  TYPE lvc_s_modi,
                    TYPE ty_data.
  IF  uo_data_changed->mp_mod_rows IS NOT INITIAL.
    ASSIGN uo_data_changed->mp_mod_rows->* TO .
    ASSIGN uo_data_changed->mt_mod_cells TO .

    LOOP AT   ASSIGNING .
*--> 数据合法校验
      IF sy-subrc <> 0.
        MESSAGE '请输入有效的公司代码!' TYPE 'E'.
      ENDIF.
      
*--> 不可编辑单元格关联更新
        "更新到ALV界面
        CALL METHOD uo_data_changed->modify_cell
          EXPORTING
            i_row_id    = -row_id
            i_fieldname = 'BNAME'
            i_value     = -bname.
    ENDLOOP.
  ENDIF.
ENDFORM.

FORM frm_can_change.    "新增修改时调用,部分字段可编辑
  DATA stylelin TYPE lvc_s_styl.
  LOOP AT gt_author INTO gw_author WHERE zindex = 'X'.
    CLEAR :gw_author-f_style[].
    
    CLEAR stylelin.
    stylelin-fieldname = 'BNAME'.
    stylelin-style = cl_gui_alv_grid=>mc_style_disabled.
    APPEND stylelin TO gw_author-f_style.

    CLEAR stylelin.
    stylelin-fieldname = 'BUKRS'. " 需要编辑的列名
    stylelin-style = cl_gui_alv_grid=>mc_style_enabled. " 设置为不可编辑状态  "mc_style_enabled. 设置可编辑状态
    APPEND stylelin TO gw_author-f_style.
    
    CLEAR gw_author-zindex.
    MODIFY gt_author FROM gw_author.
  ENDLOOP.
ENDFORM.

FORM frm_no_change.    "初始化和保存后全单元格不可编辑
  DATA stylelin TYPE lvc_s_styl.
  LOOP AT gt_author INTO gw_author.
    CLEAR :gw_author-f_style[].

    CLEAR stylelin.
    stylelin-fieldname = 'BNAME'.
    stylelin-style = cl_gui_alv_grid=>mc_style_disabled.
    APPEND stylelin TO gw_author-f_style.

    CLEAR stylelin.
    stylelin-fieldname = 'BUKRS'. 
    stylelin-style = cl_gui_alv_grid=>mc_style_disabled.
    APPEND stylelin TO gw_author-f_style.
    MODIFY gt_author FROM gw_author.
  ENDLOOP.
ENDFORM.
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章