• 关于ABAP选择屏幕部分,定义框架与不定义框架两种写法


    https://dxldev.blog.csdn.net/article/details/121419141?spm=1001.2014.3001.5502

    我们要实现的功能有:

    1.单值选择
    2.区间选择
    3.复选框
    4.单选框

    第一种方法: 定义框架

    SELECTION-SCREEN  BEGIN OF  BLOCK blc_001 WITH  FRAME  TITLE TEXT-001.
    
    	parameters:		p_bukrs  LIKE  ekko-bukrs.				"单值输入,参照数据表字段
    	SELECT-OPTIONS s_ebeln  for  ekko-ebeln.		"区间输入  需要提前声明表TABLES:ekko.
    
    SELECTION-SCREEN END  OF  BLOCK  blc_001.
    
    *	定义不用框架
    SELECTION-SCREEN BEGIN OF BLOCK  blc_002  WITH  FRAME  TITLE TEXT-002.
    
    	PARAMETERS:  p_flag  as CHECKBOX  DEFAULT 'X' .		"复选框 DEFAULT  'X'  默认勾选
    	SELECTION-SCREEN  SKIP.
    	PARAMETERS:	p_flag1  RA
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    选择屏幕开发

    SAP的屏幕开发一般分为两种
    一种是通过SAP ABAP语法创建屏幕元素,称之为选择屏幕(我们现在学习这种)
    第二种是通过SAP的屏幕编辑器开发,同构屏幕编辑器可以实现多种展现模式。(暂时不学)

    屏幕基本输入域对象的创建以及相关属性

    SAP中可以通过ABAP来创建屏幕元素,共分为两种模式,一种是通过SELECT-OPTIONS语法来建议数据输入域,另一种则是通过PARAMETERS语法来创建数据输入域。
    即一种是定义框架,另一种是不定义框架

    屏幕元素创建的基本语法

    SELECT-OPTIONS 与PARAMETERS 的属性有很多相似之处,但是SELECT-OPTIONS创建的是一个输入的区间,其定义时必须指定参考表及参考字段,SELECT-OPTIONS <对象名> FOR <参考对象>
    
    • 1

    PARAMETERS 通常用于简历一个单一的屏幕输入对象,其参考对象比较灵活,可以参考数据表的字段,也可以参考具体的数据元素。 PARAMETERS<对象名> LIKE/TYPE<参考对象>

    例如下面例子:

    tables: mara. "参考表
    SELECT-OPTIONS : s_matnr FOR mara-matnr. "参考字段
    PARAMETERS : s_matnr1 LIKE mara-matnr.
    PARAMETERS: s_matnr2 TYPE matnr.

    可以看到结果如下
    SELECT-OPTIONS : 代表选择范围

    而parameters 则代表单选框 ,且分别有LIKE 和 TYPE

    在这里插入图片描述

    屏幕输入域显示参数控制

    SELECT-OPTIONS 和  PARAMETERS 的显示参数控制机制基本类似。
    
    • 1

    1.OBLIGATORY 必输项控制
    控制该屏幕元素是否为必输项,SELECTIONS-OPTIONS一般只对下限值字段(LOW字段)有效。
    2.NO-DISPLAY 显示控制
    程序运行后不显示该对象,SELECT-OPTIONS 与PARAMETERS属性一致。
    3. VISIBLE LENGTH vlen显示长度控制
    控制对象的显示长度,其取值范围为1-18
    4. NO-EXTENSION多行输入控制
    SELECT-OPTIONS 和 PARAMETERS 所定义的对象都可以输入多行数值,加上该参数后,限制只能输入单一行,在屏幕对象后面的多行输入控制按钮将隐藏
    5.NO-INTERVALS 输入范围值控制
    该属性针对于SELECTION-OPTIONS 所定义的对象是输入范围值,上限值到下限值,在内表中分别为 “LOW” 和 “HIGH” 两个字段,加上该参数后,在屏幕上只会显示上限值输入字段。
    6. MODIFY ID modid 编辑组控制
    该参数可以将定义的屏幕对象进行分组,以方便在程序运行中对分组的对象属性进行统一修改以及控制,例如控制某组对象为不可输入,如下代码中将G2中的对象在屏幕输入中设置为不可输入(即将input属性设置为0),该属性在SELECT-OPTIONS 和PARAMETERS中的操作基本一致。

    REPORT ZALVTEST051.
    
    
    TABLES : mara.
    SELECT-OPTIONS:  p1  FOR mara-matnr MODIF ID g1,
                     p2  FOR mara-matnr MODIF ID g1,
                     p3  FOR mara-matnr MODIF ID g2,
                     p4  FOR mara-matnr MODIF ID g2.
    
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF NOT screen IS INITIAL.
          IF SCREEN-GROUP1 = 'G2'.
            SCREEN-INPUT = 0.
            SCREEN-INVISIBLE = 0.
            MODIFY SCREEN.
          ENDIF.
        ENDIF.
     ENDLOOP.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    SAP输入值的控制

    	SAP提供数据输入控制参数来控制屏幕对象的输入值,包括如下。
    
    1.	控制输入默认值
    		DEFAULT  vall [TO val2] [OPTION opt][SIGN  sgn]控制输入默认值范围
    		该参数针对 SELECTI-OPTIONS 所定义对象屏幕加载后所显示的默认值,其中vall [TO val2]为输入值的上下限,OPTION  代表数据关系,SIGN 代表输入类型,具体如下表:
    
    • 1
    • 2
    • 3
    • 4
    • 5

    栏目名 参考值 描述
    SIGN I 或者 E 输入类型, I表示包括,E表示排除
    OPTION NB或者 BT 表示前后输入栏关系,NB(不包括),BT(包括)

    default vall 即默认值,
    控制PARAMETERS所对应输入对象的默认值范围:该参数定义对象在屏幕加载后所显示的默认值,输入默认值范围也可以在程序加载时进行更改

    2.LOWER CASD 允许输入小写字母
    SAP所有屏幕字段输入后都会将字母默认转换为大写,加上该参数允许输入小写字母。

    3.MATCHCODE OBJECT search help 屏幕对象F4帮助
    为屏幕对象加上指定的F4帮助,F4帮助功能会在数据字典章节做具体介绍,系统也提供了很多已经定义好的F4帮助对象,如下图所示。

    4.MEMORY ID pid 定义 SELECT-OPTIONS 内存参数
    可以将屏幕对象输入的值保存到指定的内存参数 ,通过 GET PARAMETERS的方法可以直接从内读取该对象的值,如以下代码,将内存值取到指定字段并输出。

    输入默认值范围也可以在程序加载时进行更改,代码如下:

    TABLES:  syst.
    DATA:  s_date  TYPE d.
    SELECT-OPTIONS : dl  for syst-datum  default s_date  to sy_datum option bt sign I .
    *以上代码的意思即默认选择框中的日期为dl 到 sy-datum   
    
    INITIALIZATION.
    	s_date = sy-datum - 1.
    	dl-low  = s_date.
    	MODIFY  dl  INDEX 1. 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    SAP屏幕框架的创建

    SAP页面设计中的框架不但可以保证SAP程序外观设计的美观大方,并且可以提供诸如按钮,页签等功能组件。
    基本框架的创建语法如下:
    SELECTION-SCREEN BEGIN OF BLOCK block [WITH FRAME[TITLE title][NO INTERVALS]]
    
    • 1
    • 2
    • 3
    • 限制所创建的框架只有一个输入项
      SELEDTION-SCREEN END OF BLOCK block.

    案例:

    SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE mytitle.	"定义为字符串变量
    
    PARAMETERS : name  TYPE syuname.
    
    SELECTION-SCREEN END OF BLOCK 100.
    
    INITIALIZATION.
    	mytitle = '输入用户编号:'.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    实现屏幕元素质检的换行

    通过在框架结构中嵌入代码: SELECTION-SCREEN SKIP[n],能实现屏幕元素间的换行,n表示换行数目
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    在屏幕上输出直线

    	通过语句SELECTION-SCREEN ULINE  1(79)[/] [pos] (len) 可以实现在屏幕上画出一条直长度直线,其中[/]表示换行,[pos] 表示直线起始的位置,(len) 表示长度。
    
    • 1
    SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE mytitle.
    
    SELECTION-SCREEN ULINE1(79).
    SELECTION-SCREEN ULINE /1(50).
    
    SELECTION-SCREEN END OF BLOCK 100.
    
    PARAMETERS : name LIKE sv-uname.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    在屏幕中实现按钮功能

     很多桌面程序的设计习惯通过按钮来实现与用户动作的交互。在SAP选择开发中也可以实现按钮功能。
     SELECTION-SCREEN PUSHBUTTON [ \ ] [ pos ] ( len ) button_text  "按钮的位置
                                                                                USER-COMMAND fcode      "为按钮分配事件功能代码
                                                                                [ VISIBLE LENGTH vlen ]      "输出长度
                                                                                [ MODIFY ID modid ]               "编辑组ID号码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在屏幕上创建页签,实现分页功能

    SAP允许直接通过ABAP代码在屏幕上创建一个页签。
    语法: SELECTION-SCREEN BEGIN OF TABBED BLOCK FOR n lines
    每个页签都是由一个单独的子屏幕控制,n代表分页控件的高度,屏幕载入时必须先通过INITIALIZATION事件对其初始化。

    TABLES : mara.
     
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.  "定义子屏幕100
     
    SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.
     
    SELECT-OPTIONS : mat1 FOR mara-matnr NO INTERVALS.
     
    SELECTION-SCREEN SKIP 1.
     
    PARAMETERS chk1 AS CHECKBOX DEFAULT 'X'.
     
    SELECTION-SCREEN END OF BLOCK a1.
     
    SELECTION-SCREEN END OF SCREEN 100.
    *定义子屏幕200
    SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
     
    PARAMETERS : mat2 LIKE mara-matnr.
     
    SELECTION-SCREEN END OF SCREEN 200.
     
    *定义一个TAB空间,取名为MYTAB,空间高度为5,共分为两个页签,BUTTON1,BUTTON2.
    *两个也签的功能代码分别为PUSH1,PUSH2
     
    SELECTION-SCREEN : BEGIN OF TABBED BLOCK mytab FOR 5 LINES,
     
        TAB (20) button1 USER-COMMAND push1,
        TAB (20) button2 USER-COMMAND push2,
                       END OF BLOCK mytab.
     
    *为TAB控件分配初始化值,引用TEXT element定义为本
    INITIALIZATION.
     
      button1 = TEXT-010.
      button2 = TEXT-020.
      mytab-prog = sy-repid.
      mytab-dynnr = 100.
     
    *为TAB控件页签单击事件,选择不同的页签显示不同的子屏幕
     
    AT SELECTION-SCREEN.
     
      CASE sy-ucomm.
        WHEN 'PUSH1'.
          mytab-dynnr = 100.
          mytab-activetab = 'BUTTON1'.
        WHEN 'PUSH2'.
          mytab-dynnr = 200.
          mytab-activetab = 'BUTTON2'.
      ENDCASE.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    基于Spring Boot应用Apache CXF发布Web Services服务
    spring boot 过滤器&拦截器与aop
    正则系列之手机号码正则
    J2EE项目部署与发布(Windows版本)
    Day60|leetcode 84.柱状图中最大的矩形
    AI人脸检测/安全帽检测智能分析网关告警消息配置——微信告警消息配置
    MySQL 数据表操作
    Kamailio Debian安装
    Java学习第十九节之static关键字详解
    团建游戏------电网
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/126697953