SAP ABAP 选择屏幕、事件流、ALV报表

  1. 选择屏幕

(1)PARAMETERS对象及其属性

PARAMETERS: p_id like dbtab-id,

                     p_checkbox AS CHECKBOX DEFAULT ‘X’,

                          p_radio RADIOBUTTON GROUP g1 DEFAULT ‘X’,

                       p_radio RADIOBUTTON GROUP g1,

                       p_radio RADIOBUTTON GROUP g1.

语法

说明

DEFAULT ‘A’

初始值

LENGTH N

定义长度,只适用于C、N、X、P类型

DECIMALS des

指定小数点位数

MEMORY ID pid

指定SAP内存参数ID

MATCHCODE OBJECT mobj

设定使用的Search Help

MODIF ID

通过SCREEN-GROUP1为屏幕元素分组

NO-DISPLAY

不显示在画面上

LOWER CASE

区分大小写(默认大写)

(2)SELECT-OPTIONS对象及其属性

SELECT-OPTIONS: so_id FOR itab-id DEFAULT 1,

                       so_age FOR itab-age OBLIGATORY NO INTERVALS NO-EXTENSION.

语法

说明

DEFAULT ‘A’

初始值

DEFAULT g… OPTION op… SIGN s

初始的option和sign

DEFAULT g TO h

初始的low值和high值,SIGN为‘BT’

DEFAULT ID pid

指定SAP内存参数ID

MATCHCODE OBJECT mobj

设定使用的Search Help

OBLIGATORY

必输项

VISIBLE LENGTH vlen

显示长度

NO-EXTENSION

隐藏多指输入按钮

NO INTERVALS

隐藏high输入部分

(3)空行

SELECTION-SCREEN SKIP 2.

(4)分割线

SELECTION-SCREEN ULINE /1(30)

(5)屏幕框架

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t-001.

……

SELECTION-SCREEN END OF BLOCK b1.

  1. 事件流

事件流

说明

INITIALZATION

在屏幕未显示前初始化

AT SELECTION-SCREEN OUTPUT

用于对屏幕输入值的校验

AT SELECTION-SCREEN ON …

屏幕输入遇错处理,检查某个具体的输入值

AT SELECTION-SCREEN ON VALUE REQUEST FOR { para|selcrit-low|selcrit-high } (F4)

用于实现屏幕输入域的自定义F4搜索帮助

AT SELECTION-SCREEN ON HELP REQUEST FOR { para|selcrit-low|selcrit-high } (F1)

用于实现屏幕输入域的自定义F1帮助

AT SELECTION-SCREEN ON { para|selcrit }

指定输入域输入值时触发

AT SELECTION-SCREEN ON BLOCK (block)

用于管控框架中的屏幕输入值

AT SELECTION-SCREEN ON RADIOBUTTON GROUP (radi)

用于管控单选框按钮组输入值

AT SELECTION-SCREEN ON END OF (selcrit)

用于SELECT-OPTIONS对象,在输入域进行多行数据输入时触发

AT SELECTION-SCREEN

用于屏幕输入检查

START-OF-SELECTION

在执行程序时触发

END-OF-SELECTION

在START-OF-SELECTION执行后,输出屏幕还未显示前触发

GET…

从逻辑数据库中得到数据

TOP-OF-PAGE

设计输出单的页头

END-OF-PAGE

设计输出单的页脚

AT USER COMMAND

 

AT LINE SELECTION

 

(1)报表事件的终止命令

①    STOP.

结束当前事件,直接转向END-OF-SELECTION(只能用于AT SELECTION-SCREEN/START-OF-SELECTION/GET事件)

②    EXIT.

离开过程块,直接转向列表输出屏幕,不执行END-OF-SELECTION

③    RETURN.

离开过程块,直接转向列表输出屏幕,不执行END-OF-SELECTION

④    CHECK <condition>.

当条件为假时,离开当前事件,并转向下一个事件

 

2.ALV

(1)ALV通过函数方式实现

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = gv_repid
      it_fieldcat_lvc          = gt_fieldcat[]
      is_layout_lvc            = gs_layout
      i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_so
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

(2)设置显示列

常用属性字段(LVC_S_FCAT)

gs_fieldcat-fieldname         = &1.

gs_fieldcat-coltext           =

gs_fieldcat-coltext_l            =

gs_fieldcat-coltext_m          =

gs_fieldcat-coltext_s           =

gs_fieldcat-reptext              = &2.

gs_fieldcat-key                   = &3.

gs_fieldcat-checkbox          = &4.

gs_fieldcat-edit                  = &5.

gs_fieldcat-hotspot            = &6.

gs_fieldcat-ref_table           = &7.

gs_fieldcat-ref_field            = &8.

gs_fieldcat-qfieldname       =’REDDI’.

gs_fieldcat-no_zero            = ‘X’.

APPEND gs_fieldcat TO gt_fieldcat.

在REUSE_ALV_GRID_DISPLAY_LVC函数中添加it_fieldcat_lvc = gt_fieldcat[]

字段

说明

FIELDNAME

字段名称

SXRTEXT_L/M/S

列标题描述

KEY

是否关键字,设置’X’,位置固定

CHECKBOX

是否显示复选框

EDIT

是否可编辑

HOSTSPOT

鼠标是否出现手型光标标识

REF_TABLE/REF_FIELD

字段参考数据库表和字段

DO_SUM

是否显示总计值

ICON

是否显示为图标

(3)设置布局

常用属性字段(LVC_S_LAYO)

gs_layout-cwidth_opt = abap_true.

gs_layout-zebra     = abap_true.

gs_layout-box_fname = ‘LILI’

在REUSE_ALV_GRID_DISPLAY_LVC函数中添加is_layout_lvc = gs_layout

字段

说明

ZEBRA

ALV是否深浅颜色间隔显示

SMALLTITLE

ALV小标题

CWIDTH_OPT

列宽是否按照该列最长显示字段自动调整宽度

NO_ROWMARK

左侧选择按钮是否显示

BOX_FNAME

左侧选择按钮选中后对应的字段

EDIT

ALV单元格是否可编辑

STYLEFNAME

指定颜色

NO_TOOLBAR

工具栏不显示

NO_TOTLINE

设置不输出总计行

(4)设置排序参数

常用属性字段(LVC_S_SORT)

gs_sort-spos = 1.

gs_sort-fieldname = ‘ID’.

gs_sort-down = ‘X’.

gs_sort-subtot = ‘X’.

APPEND gs_sort TO gt_sort.

在REUSE_ALV_GRID_DISPLAY_LVC函数中添加it_sort_lvc = gt_sort

字段

说明

SPOS

指定排序字段的先后顺序

FIELDNAME

排序字段名称

UP

按升序排列输出

DOWN

按降序排序输出

SUBTOT

是否执行并输出小计,此设置必须与列属性的DO_SUM一同使用

(5)设置自定义工具栏

FORM frm_pf_status_prt USING u_extab TYPE slis_t_extab ##CALLED.
  SET PF-STATUS 'PF_STATUS_PRT' EXCLUDING u_extab.
ENDFORM.

在REUSE_ALV_GRID_DISPLAY_LVC函数中添加i_callback_pf_status_set = ‘FRM_SET_PF_STATUS’

(6)用户命令和响应

 

FORM frm_user_command USING uv_ucomm LIKE sy-ucomm
                            us_selfield TYPE slis_selfield.
  CASE uv_ucomm.
    WHEN 'ALL'. 
      PERFORM frm_sel_all.
    WHEN 'SAVE'. 
      PERFORM frm_save_all.

  ENDCASE.

ENDFORM.

在REUSE_ALV_GRID_DISPLAY_LVC函数中添加i_callback_user_command = ‘FRM_USER_COMMAND’

posted @ 2022-02-27 20:20  LikZ-WM  阅读(2215)  评论(0编辑  收藏  举报