• ALV增加勾选框及修改数据和颜色




      *-------------------------------------ALV参数 ------------------------------------
    TYPE-POOLS: slis.

    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
              gs_layout TYPE   slis_layout_alv,
              g_repid LIKE     sy-repid VALUE sy-repid.
    DATA :git_events TYPE slis_t_event,
             it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
    DATA: git_listheader  TYPE slis_t_listheader,
              git_listend  TYPE slis_t_listheader.

    DATA:BEGIN OF t_tab OCCURS 0,
      sel TYPE c,
      mark TYPE c,
      matnr LIKE mseg-matnr,         "物料编码
      menge LIKE mseg-menge,       "数量
    END OF t_tab.

     PERFORM init_fieldcat TABLES gt_fieldcat USING '1' .
     
    FORM init_fieldcat  TABLES g_alv_fieldcat USING p_flag.
      REFRESH g_alv_fieldcat.

      IF p_flag = '1'.
        CLEAR gt_fieldcat .                         "勾选后MARK的值变为1
        gt_fieldcat-fieldname = 'MARK' .
        gt_fieldcat-outputlen = '5' .
        gt_fieldcat-key = 'X'.
        gt_fieldcat-edit = 'X'.
        gt_fieldcat-checkbox = 'X'.
        gt_fieldcat-seltext_s = '选择' .
        APPEND gt_fieldcat TO g_alv_fieldcat.
      ENDIF.

      CLEAR gt_fieldcat.
      gt_fieldcat-fieldname = 'MATNR'.
      gt_fieldcat-seltext_s = '物料编码'.
      gt_fieldcat-outputlen = 10.
      gt_fieldcat-seltext_m  = gt_fieldcat-seltext_s.
      gt_fieldcat-seltext_l  = gt_fieldcat-seltext_s.
      gt_fieldcat-no_zero = 'X'.
      APPEND gt_fieldcat.

      CLEAR gt_fieldcat.
      gt_fieldcat-fieldname = 'MAKTX'.
      gt_fieldcat-seltext_s = '物料描述'.
      gt_fieldcat-outputlen = 10.
      gt_fieldcat-seltext_m  = gt_fieldcat-seltext_s.
      gt_fieldcat-seltext_l  = gt_fieldcat-seltext_s.
      gt_fieldcat-emphasize = 'C603'.                  "颜色,设置颜色时不可以与  关键值gt_fieldcat-key = 'X'. 一起使用
      APPEND gt_fieldcat.

      CLEAR gt_fieldcat.
      gt_fieldcat-fieldname = 'MENGE'.
      gt_fieldcat-seltext_s  = '数量'.
      gt_fieldcat-outputlen = 10.
      gt_fieldcat-seltext_m  = gt_fieldcat-seltext_s.
      gt_fieldcat-seltext_l  = gt_fieldcat-seltext_s.
    *  gt_fieldcat-key = 'X'.
      gt_fieldcat-edit = 'X'.                                "可修改状态
      gt_fieldcat-inttype  = t_tab5-menge.          " 修改的值    

        gt_fieldcat-ref_tabname = 'T001L'.   "搜索帮助字段对应的表
      gt_fieldcat-ref_fieldname = 'LGORT'.          "搜索帮助的字段

      gt_fieldcat-no_zero = 'X'.
      APPEND gt_fieldcat.
    ENDFORM.                    " INIT_FIELDCAT

    FORM init_layout .
      gs_layout-box_fieldname = 'SEL'.
    *  gs_layout-zebra = 'X'.
      gs_layout-f2code = '&SEL'.
      gs_layout-detail_popup = 'X'.
    *  gs_layout-colwidth_optimize = 'X'.                 “自动设置列宽,关闭后按  gt_fieldcat-outputlen 值设定
    ENDFORM.                    " INIT_LAYOUT

    FORM listado .
      g_repid = sy-repid.

      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program     = g_repid
          is_layout                    = gs_layout
          it_fieldcat                   = gt_fieldcat[]
          i_save                        = 'A'
          it_events                    = git_events[]
          i_callback_pf_status_set     = 'FRM_STATUS'                       "显示自定义toolbar
          i_callback_user_command  = 'USER_COMMAND'                     "调用命令
          it_sort                       = it_sort[]
        TABLES
          t_outtab                    = t_tab5
        EXCEPTIONS
          program_error           = 1
          OTHERS                    = 2.
    ENDFORM.                    " LISTADO

    FORM user_command USING r_ucomm LIKE sy-ucomm
          rs_selfield TYPE slis_selfield. "响应ALV点击自定义按钮之后的事件
      CASE r_ucomm.
        WHEN 'TEST'.
         PERFORM save_alv.
      ENDCASE.
    ENDFORM.                    "EXECUTE_COMMAND

    FORM save_alv .                        "修改后的值保存到内表中
      DATA:  l_grid TYPE REF TO cl_gui_alv_grid.
    *------------将ALV上修改的内容保存到内表---------------------------------*
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = l_grid.
      CALL METHOD l_grid->check_changed_data.

    ENDFORM.                    " SAVE_ALV

  • 相关阅读:
    预防新型冠状病毒科普宣传网站
    四则运算
    结对审查
    最大子段和
    单元自动测试Junit
    浅谈过去,畅想未来
    第一次的结对编程
    代码审查
    单元测试
    junit4单元测试
  • 原文地址:https://www.cnblogs.com/elegantok/p/1570788.html
Copyright © 2020-2023  润新知