DIALOG 屏幕示例(一)

1.需求

(1)自定义的数据库表

在这里插入图片描述
(2)屏幕

在这里插入图片描述
(3)屏幕上的按钮说明
在这里插入图片描述

2.实现效果

在这里插入图片描述

3.实现程序

(1)程序框架
在这里插入图片描述
gui状态:
在这里插入图片描述

(2)屏幕绘制
在这里插入图片描述
(3)程序代码

(3.1)逻辑流部分

PROCESS BEFORE OUTPUT."PBO;界面显示之前:取数、隐藏、必输等
 MODULE STATUS_0100."可用于创建GUI标题和状态
*  MODULE SET_VALUES."屏幕初始值设置
  MODULE SET_ELEMENTS."复选框显示和隐藏


PROCESS AFTER INPUT."PAI;界面显示之后:回车或按钮点击之后的操作

 "屏幕创建日期和时间的填充
  MODULE SET_TIME_VALUE.
 "性别的值
  MODULE SET_SEX_VALUE.

  "数据检查
*  "1.单一字段的检查
*  FIELD GV_XXX MODULE CHECK_XXX ON
*REQUEST.":检查GV_XXX字段,当值或属性发生改变时,执行MODULE

  "2.多个字段的检查
  CHAIN."在CHAIN中的每个字段的值或属性发生变化时,均要执行module
    FIELD GS_STU-ZSCHOOL.
    FIELD GS_STU-ZCODE.
    FIELD GS_STU-ZNAME.
    MODULE CHECK_CODE ON CHAIN-REQUEST.
  ENDCHAIN.

  MODULE USER_COMMAND_0100."执行按钮的操作

(3.2)主程序部分:ZL_20211011_DIALOG_TEST

*&---------------------------------------------------------------------*
*& Report ZL_20211011_DIALOG_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZL_20211011_DIALOG_TEST.
INCLUDE ZL_20211011_DIALOG_TEST_TOP."变量声明
INCLUDE ZL_20211011_DIALOG_TEST_O01."PBO MODULES
INCLUDE ZL_20211011_DIALOG_TEST_I01."PAI MODULES
INCLUDE ZL_20211011_DIALOG_TEST_F01."FORM

(3.3)TOP部分:ZL_20211011_DIALOG_TEST_TOP

*&---------------------------------------------------------------------*
*&  包含                ZL_20211011_DIALOG_TEST_TOP
*&---------------------------------------------------------------------*
TYPES :BEGIN OF GY_STU,
         MANDT   TYPE ZSTU_TRAIN-ZSCHOOL,
         ZSCHOOL TYPE ZSTU_TRAIN-ZSCHOOL,  "学校代码
         ZCODE   TYPE ZSTU_TRAIN-ZCODE,  "学生代码
         ZNAME   TYPE ZSTU_TRAIN-ZNAME,  "姓名
         ZSEX    TYPE ZSTU_TRAIN-ZSEX,  "班级
         ZCLASS  TYPE ZSTU_TRAIN-ZCLASS,  "性别
         ZAGE    TYPE ZSTU_TRAIN-ZAGE,  "年龄
         ZTARIN  TYPE ZSTU_TRAIN-ZTARIN,  "培训时间
         ZCRDT   TYPE ZSTU_TRAIN-ZCRDT,  "创建日期
         ZCRTM   TYPE ZSTU_TRAIN-ZCRTM,  "创建时间
       END OF GY_STU.
TYPES:TT_STU TYPE STANDARD TABLE OF GY_STU.
DATA:GT_STU TYPE TT_STU.
DATA:GS_STU TYPE GY_STU.

* 复选按钮 选中赋值为X 不选为空
DATA GV_JOIN TYPE C LENGTH 1.

* 单选按钮 选中赋值为X 不选为空
DATA GV_RB01 TYPE C LENGTH 1.
DATA GV_RB02 TYPE C LENGTH 1.

(3.4)PBO 模块:ZL_20211011_DIALOG_TEST_O01

*&---------------------------------------------------------------------*
*&  包含                ZL_20211011_DIALOG_TEST_O01
*&---------------------------------------------------------------------*
.
*&---------------------------------------------------------------------*
*&      Module  SET_ELEMENTS  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE SET_ELEMENTS OUTPUT.
  IF GV_JOIN = 'X'."显示
  ELSE."隐藏
    LOOP AT SCREEN.
* 使用SCREEN中元素分组设置
      IF SCREEN-GROUP3 = 'TIM'.
* 使用SCREEN元素名称判断
*      IF SCREEN-NAME = 'GV_RB01'.
*        SCREEN-INVISIBLE = '1'."0 :否定(不可见) 1:肯定
*        MODIFY SCREEN.
*      ENDIF.
        SCREEN-INVISIBLE = '1'."0 :否定(不可见) 1:肯定
        SCREEN-INPUT = '0'."隐藏区域中的输入框设置成不可输入
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text  创建GUI标题和状态
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'."按钮:0100为自行创建的一组按钮
  SET TITLEBAR '0100'."0100为自行创建的gui标题的code
ENDMODULE.

(3.5)PAI 模块:ZL_20211011_DIALOG_TEST_I01

*&---------------------------------------------------------------------*
*&  包含                ZL_20211011_DIALOG_TEST_I01
*&---------------------------------------------------------------------*
.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text 自定义的按钮 :适用于屏幕上或者工具栏的
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  CASE SY-UCOMM.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0 .
    WHEN 'EXIT' OR 'CANL'.
      LEAVE PROGRAM.
    WHEN 'SAVE'.
      PERFORM SAVE_INFO.
  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  SET_TIME_VALUE  INPUT
*&---------------------------------------------------------------------*
*       text 屏幕上创建日期和时间填充
*----------------------------------------------------------------------*
MODULE SET_TIME_VALUE INPUT.
  GS_STU-ZCRDT = SY-DATUM."创建日期
  GS_STU-ZCRTM = SY-UZEIT."创建时间
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  CHECK_CODE  INPUT
*&---------------------------------------------------------------------*
*       text 字段检查
*----------------------------------------------------------------------*
MODULE CHECK_CODE INPUT.
  DATA LS_STU TYPE ZSTU_TRAIN.
  "判断学校/学生代码/姓名是否为空
  IF GS_STU-ZSCHOOL IS INITIAL
    or GS_STU-ZCODE IS INITIAL
    or GS_STU-ZNAME IS INITIAL.
    MESSAGE '学校/学生代码/姓名均不能为空!' TYPE 'I' DISPLAY LIKE 'E'.

  ENDIF.
  "判断是否已经在表中存在
  SELECT SINGLE ZSCHOOL ZCODE
    FROM ZSTU_TRAIN
    INTO CORRESPONDING FIELDS OF LS_STU
    WHERE ZSCHOOL = GS_STU-ZSCHOOL
    AND ZCODE = GS_STU-ZCODE.
  IF SY-SUBRC = 0.
    MESSAGE '信息表中存在相同的数据!' TYPE 'I' DISPLAY LIKE 'E'.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  SET_SEX_VALUE  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE SET_SEX_VALUE INPUT.
  IF GV_RB01 = 'X'.
    GS_STU-ZSEX = '女'.
  ELSEIF GV_RB02 = 'X'.
    GS_STU-ZSEX = '男'.
  ENDIF.
ENDMODULE.

(3.6)FORM 部分:ZL_20211011_DIALOG_TEST_F01

*&---------------------------------------------------------------------*
*&  包含                ZL_20211011_DIALOG_TEST_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  SAVE_INFO
*&---------------------------------------------------------------------*
*       text 数据存入表中
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SAVE_INFO .

  INSERT ZSTU_TRAIN FROM GS_STU.
  IF SY-SUBRC = 0.
    MESSAGE '保存成功!' TYPE 'I' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值