ABAP grid的alv的如何增加checkbox列,可以选择和全选,请各位大虾批点。

ABAP grid的alv的如何增加checkbox列,可以选择和全选,请各位大虾批点。,第1张

小伙子 在需要设置CHECKBOX字段的FIELDCAT表里面把CHECKBOX设置成"X'就行了啊

话不多说 发个例子 请观察65行:

*&---------------------------------------------------------------------*

*& Report  ZR_MM_12

*&---------------------------------------------------------------------*

REPORT  zr_mm_12.

TABLES : ekko,ekpo,ekbe,t001l.

DATA:BEGIN OF itab OCCURS 0 ,

          mark TYPE c,

          ebeln LIKE ekpo-ebeln,

          ebelp LIKE ekpo-ebelp,

          bedat LIKE ekko-bedat,

          matnr LIKE ekpo-matnr,

          txz01 LIKE ekpo-txz01,

           werks LIKE ekpo-werks,

          lgort LIKE ekpo-lgort,

          lgobe LIKE t001l-lgobe,

          menge LIKE ekpo-menge,

          menge2 LIKE ekpo-menge,

                   menge3 LIKE ekpo-menge,

menge4 LIKE ekpo-menge,

                   menge5 LIKE ekpo-menge,

  menge6 LIKE ekpo-menge,

          END OF itab.

TYPE-POOLS: slis.

***alv 结构定义

DATA: fieldcatalog    TYPE slis_t_fieldcat_alv WITH HEADER LINE,

      gd_tab_group    TYPE slis_t_sp_group_alv,

      gd_layout       TYPE slis_layout_alv,

      gt_fieldcat     TYPE slis_t_fieldcat_alv,

      gt_events       TYPE slis_t_event,        " ALV Event table

      gd_repid        LIKE sy-repid,

      rpt_title(40)   TYPE c,

      space_11(15)    TYPE c  ,

      dat_11(10)      TYPE c.

DATA: wa_sort TYPE slis_sortinfo_alv,

it_sort  TYPE slis_t_sortinfo_alv   WITH HEADER LINE.

 

SELECT-OPTIONS: s_matnr FOR ekpo-matnr,

               s_bedat FOR ekko-bedat,

                s_lgort FOR ekpo-lgort.

START-OF-SELECTION.

  PERFORM getdata.

  PERFORM build_fieldcatalog.

  PERFORM build_layout.

  PERFORM display_alv_report.

PERFORM outdata.

 

*&---------------------------------------------------------------------*

*&      Form  getdata

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM getdata.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE itab FROM ekko INNER JOIN ekpo

  ON ( ekko~ebeln = ekpo~ebeln )

  WHERE ekpo~matnr IN s_matnr AND ekpo~loekz <> 'L' AND ekko~bedat IN s_bedat AND ekpo~lgort IN s_lgort.

ENDFORM.                    "getdata

*&---------------------------------------------------------------------*

*&      Form  build_fieldcatalog

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM build_fieldcatalog.

  fieldcatalog-fieldname   = 'MARK'.

  fieldcatalog-seltext_m   = 'FLAG'.

  fieldcatalog-checkbox = 'X'.          "设置 MARK字段为CHECK BOX

  fieldcatalog-edit        = 'X'.

  fieldcatalog-col_pos     = 1.

APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'EBELN'.

  fieldcatalog-seltext_m   = '采购订单号'.

  fieldcatalog-col_pos     = 2.

APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

 

fieldcatalog-seltext_m   = '物料号码'.

  fieldcatalog-fieldname   = 'MATNR'.

  fieldcatalog-col_pos     = 2.

APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

fieldcatalog-fieldname   = 'TXZ01'.

  fieldcatalog-seltext_m   = '物料描述'.

  fieldcatalog-col_pos     = 3.

APPEND fieldcatalog TO fieldcatalog.

fieldcatalog-fieldname   = 'BEDAT'.

  fieldcatalog-seltext_m   = '凭证日期'.

  fieldcatalog-col_pos     = 4.

APPEND fieldcatalog TO fieldcatalog.

  fieldcatalog-fieldname   = 'WERKS'.

  fieldcatalog-seltext_m   = '工厂'.

  fieldcatalog-col_pos     = 4.

APPEND fieldcatalog TO fieldcatalog.

  fieldcatalog-fieldname   = 'LGORT'.

  fieldcatalog-seltext_m   = '库存地点'.

  fieldcatalog-col_pos     = 5.

  APPEND fieldcatalog TO fieldcatalog.

fieldcatalog-fieldname   = 'LGOBE'.

  fieldcatalog-seltext_m   = '库存地点描述'.

  fieldcatalog-col_pos     = 6.

  APPEND fieldcatalog TO fieldcatalog.

  fieldcatalog-fieldname   = 'MENGE'.

  fieldcatalog-seltext_m   = '订单数量'.

  fieldcatalog-col_pos     = 6.

  APPEND fieldcatalog TO fieldcatalog.

*

  fieldcatalog-fieldname   = 'MENGE2'.

  fieldcatalog-seltext_m   = '收货数量'.

  fieldcatalog-col_pos     = 7.

  APPEND fieldcatalog TO fieldcatalog.

*

  fieldcatalog-fieldname   = 'MENGE3'.

  fieldcatalog-seltext_m   = '剩余收货'.

  fieldcatalog-col_pos     = 8.

  APPEND fieldcatalog TO fieldcatalog.

 

ENDFORM.                    "build_fieldcatalog

*&---------------------------------------------------------------------*

*&      Form  build_layout

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM build_layout.

  gd_layout-no_input          = ' '.

  GD_LAYOUT-box_fieldname = 'MARK'.

  gd_layout-colwidth_optimize = 'X'.

ENDFORM.                    " build_layout

*&---------------------------------------------------------------------*

*&      Form  display_alv_report

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM display_alv_report.

gd_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

      i_callback_program       = gd_repid

      i_callback_user_command  = 'USER_COMMAND'

      i_callback_pf_status_set = 'SET_PF_STATUS'

      is_layout                = gd_layout

      it_fieldcat              = fieldcatalog[]

      it_events                = gt_events[]

      i_save                   = 'X'     " i_grid_title = sy-title

    TABLES

      t_outtab                 = itab

    EXCEPTIONS

      program_error            = 1

      OTHERS                   = 2.

ENDFORM.                    " display_alv_report

*&---------------------------------------------------------------------*

*&      Form  SET_PF_STATUS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->EXTAB      text

*----------------------------------------------------------------------*

FORM set_pf_status USING extab TYPE slis_t_extab.

  SET PF-STATUS 'ZSTANDARD'. " EXCLUDING EXTAB.

ENDFORM.                    "SET_PF_STATUS

*&---------------------------------------------------------------------*

*&      Form  USER_COMMAND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->UCOMM      text

*      -->SELFIELD   text

*----------------------------------------------------------------------*

FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

READ TABLE itab INDEX selfield-tabindex.

  CHECK sy-subrc = 0.

  CASE ucomm.

    WHEN 'DET'.

      LOOP AT itab WHERE mark = 'X'.

        WRITE : / itab-ebeln,itab-matnr.

      ENDLOOP.

  ENDCASE.

ENDFORM.                    "USER_COMMAND

*&---------------------------------------------------------------------*

*&      Form  outdata

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM outdata.

  LOOP AT itab.

  ENDLOOP.

ENDFORM.                    "outdata

gv_1.Columns["md_day"].DisplayFormat.FormatString =  "yyyy年MM月dd日"

gv_1.Columns["md_day"].DisplayFormat.FormatType 

            = DevExpress.Utils.FormatType.Custom

这样设置,这个列将显示:2015年03月31日

或者

gv_1.Columns["md_day"].DisplayFormat.FormatString =  "yyyy年M月d日"

gv_1.Columns["md_day"].DisplayFormat.FormatType 

            = DevExpress.Utils.FormatType.Custom

这样设置,这个列将显示:2015年3月3日

GridLayout的使用:

GridLayout的类层次结构图:

java.lang.Object

--java.awt.GridLayout

GridLayout比FlowLayout多了行和列的设置,也就是说你要先设置GridLayout共有几行

几列,就如同二维平面一般,然后你加

进去的组件会先填第一行的格子,然后再从第二行开始填,依此类扒,就像是一个个的

格子一般。而且GridLayout会将所填进去组

件的大小设为一样。

构造函数:GridLayout()建立一个新的GridLayout,默认值是1行1列。

GridLayout(int rows,int

cols)建立一个几行几列的GridLayout.

GridLayout(int rows,int cols, int hgap,int

vgap)建立一个几行几列的GridLayout,并设置组件的间距

例子:GridLayoutDemo.java

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class CardLayoutDemo implements ActionListener{

JPanel p1,p2,p3,p4

int i=1

JFrame f

public CardLayoutDemo(){

f=new JFrame()//当做top-level组件

Container contentPane=f.getContentPane()

contentPane.setLayout(new GridLayout(2,1))

p1=new JPanel()

Button b=new Button("Change Card")

b.addActionListener(this)//当按下"Change

Card"时,进行事件监听,将会有系统 *** 作产生。

p1.add(b) file://处理 *** 作在52-64行.

contentPane.add(p1)

p2=new JPanel()

p2.setLayout(new FlowLayout())

p2.add(new JButton("first"))

p2.add(new JButton("second"))

p2.add(new JButton("third"))

p3=new JPanel()

p3.setLayout(new GridLayout(3,1))

p3.add(new JButton("fourth"))

p3.add(new JButton("fifth"))

p3.add(new JButton("This is the last button"))

p4=new JPanel()

p4.setLayout(new CardLayout())

p4.add("one",p2)

p4.add("two",p3)

/*要显示CardLayout的卡片,除了用show(Container parent,String

name)这个方法外

*,也可试试first(Container),next(Container),previous(Container),last

(Container)这

*四个方法,一样可以达到显示效果。

*/

((CardLayout)p4.getLayout()).show(p4,"one")

contentPane.add(p4)

f.setTitle("CardLayout")

f.pack()

f.setVisible(true)

f.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0)

}

}

)

}

public void actionPerformed(ActionEvent event){

switch(i){

case 1:

((CardLayout)p4.getLayout()).show(p4,"two")

break

case 2:

((CardLayout)p4.getLayout()).show(p4,"one")

break

}

i++

if (i==3) i=1

f.validate()

}

public static void main(String[] args){

new CardLayoutDemo()

}

}

1-3-5:GridBagLayout的使用:是java中最有d性但也是最复杂的一种版面管理器。它

只有一种构造函数,但必须配合

GridBagConstraints才能达到设置的效果。

GridBagLayout的类层次结构图:

java.lang.Object

--java.awt.GridBagLayout

构造函数:

GirdBagLayout()建立一个新的GridBagLayout管理器。

GridBagConstraints()建立一个新的GridBagConstraints对象。

GridBagConstraints(int gridx,int gridy,int

gridwidth,int gridheight,double weightx,double weighty,

int anchor,int fill, Insets

insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象

,并指定其参数的值。

参数说明:

gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件

位于之前所加入组件的右边。

若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下

面。建议定义出

gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在

0行0列。

gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使

用GridBagConstraints.REMAINDER常

量,代表此组件为此行或此列的最后一个组件,而且会占据所

有剩余的空间。

weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组

件能得到更多的空间,默认值皆为0。

anchor:

当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、

NORTHEAST、EAST、SOUTHEAST、

WEST、NORTHWEST可供选择。

insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为

(0,0,0,0).

ipadx,ipady:设置组件内的间距,默认值为0。

我们以前提过,GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我

们将GridBagConstraints的参数都设置

好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。

例子:

GridBagLayoutDemo.java

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class GridBagLayoutDemo{

public GridBagLayoutDemo(){

JButton b

GridBagConstraints c

int

gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady

double weightx,weighty

Insets inset

JFrame f=new JFrame()

GridBagLayout gridbag=new GridBagLayout()

Container contentPane=f.getContentPane()

contentPane.setLayout(gridbag)

b=new JButton("first")

gridx=0

gridy=0

gridwidth=1

gridheight=1

weightx=10

weighty=1

anchor=GridBagConstraints.CENTER

fill=GridBagConstraints.HORIZONTAL

inset=new Insets(0,0,0,0)

ipadx=0

ipady=0

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady)

gridbag.setConstraints(b,c)

contentPane.add(b)

b=new JButton("second")

gridx=1

gridy=0

gridwidth=2

gridheight=1

weightx=1

weighty=1

anchor=GridBagConstraints.CENTER

fill=GridBagConstraints.HORIZONTAL

inset=new Insets(0,0,0,0)

ipadx=50

ipady=0

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady)

gridbag.setConstraints(b,c)

contentPane.add(b)

b=new JButton("third")

gridx=0

gridy=1

gridwidth=1

gridheight=1

weightx=1

weighty=1

anchor=GridBagConstraints.CENTER

fill=GridBagConstraints.HORIZONTAL

inset=new Insets(0,0,0,0)

ipadx=0

ipady=50

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady)

gridbag.setConstraints(b,c)

contentPane.add(b)

b=new JButton("fourth")

gridx=1

gridy=1

gridwidth=1

gridheight=1

weightx=1

weighty=1

anchor=GridBagConstraints.CENTER

fill=GridBagConstraints.HORIZONTAL

inset=new Insets(0,0,0,0)

ipadx=0

ipady=0

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady)

gridbag.setConstraints(b,c)

contentPane.add(b)

b=new JButton("This is the last button")

gridx=2

gridy=1

gridwidth=1

gridheight=2

weightx=1

weighty=1

anchor=GridBagConstraints.CENTER

fill=GridBagConstraints.HORIZONTAL

inset=new Insets(0,0,0,0)

ipadx=0

ipady=50

c=new

GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,

fill,inset,ipadx,ipady)

gridbag.setConstraints(b,c)

contentPane.add(b)

f.setTitle("GridBagLayout")

f.pack()

f.setVisible(true)

f.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0)

}

}

)

}

public static void main(String[] args){

new GridBagLayoutDemo()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11664628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存