SAP屏幕开发小案例

本文介绍了如何在SAP中开发Dialog程序,包括屏幕绘制输入框、单选复选框、使用BOX控件分组,以及逻辑功能如设置按钮标题、日期时间、数据隐藏和保存操作。通过实例展示了从界面设计到功能实现的完整过程。
摘要由CSDN通过智能技术生成


前言

      SAP屏幕开发也就是Dialog程序是我们作为一名ABAP程序员必会的技能之一,今天这篇文章给大家讲解一个SAP屏幕开发的一个小案例,如果没有屏幕开发基础的可以查看作者的另外一篇文章SAP屏幕开发基础,这个小案例不会讲的那么细致只会讲大致的开发流程以及功能实现。


一、案例介绍

        我们要实现的效果就是创建一个Dialog程序,然后自己绘制界面,用户在界面中输入学生数据信息点击保存后将数据存入数据库表中。下图是我们的数据库设计创捷透明表的步骤本文省略。创建数据库表的时候呢记得要又MANDT字段和自己创建DATAELEMENT我这边就随意创建了。

在这里插入图片描述


二、屏幕绘制

        我们先看一下要绘制的控件以及大致的效果图

在这里插入图片描述

            a.参考变量绘制输入框

                       我们所有的控件都根据程序中声明的变量来参考绘制,这样不容易出错绘制的效率也高。
在这里插入图片描述
                    参考结构可以声明完所有的输入框,描述文本需要手动创建绘制。单选框和复选框我们需要再单独创建变量参考绘制。
在这里插入图片描述

                                                            运行效果
在这里插入图片描述
后期再慢慢调整

            b.绘制单选 复选框

在这里插入图片描述
                                                            运行效果
在这里插入图片描述

            c.使用BOX控件分组

                    先调整一下布局位置,并给培训时间两个输入框设置不可输入属性,并给单选框复选框设置FCTCODE。
在这里插入图片描述
在这里插入图片描述

                                                            使用BOX分组

在这里插入图片描述

                                                            运行效果

在这里插入图片描述

三、逻辑代码功能实现

            a.完善基础按钮 标题

请添加图片描述
                                                            运行效果

在这里插入图片描述

                                                            功能代码编写

*&  Include           ZTEST_SCREEN_GLYN001I01

MODULE user_command_0100 INPUT.
CASE sy-ucomm.
  WHEN 'BACK'.
    LEAVE to SCREEN 0."返回上个界面
  WHEN 'EXIT' or 'CANCEL'.
    LEAVE PROGRAM.
  when 'SAVE'.
    PERFORM save_data."保存数据
  WHEN OTHERS.
ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&  Include           ZTEST_SCREEN_GLYN001O01

MODULE status_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.

ENDMODULE.                 " STATUS_0100  OUTPUT

            b.自动设置日期时间

在这里插入图片描述

*&---------------------------------------------------------------------*
*&      Module  SET_DATE_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE set_date_data INPUT.
  gs_school-zcrdt = sy-datum."日期
  gs_school-zcrtm = sy-uzeit."时间
ENDMODULE.                 " SET_DATE_DATA  INPUT

            c.设置培训信息隐藏

                    首先将文本描述与输入框分为一组,这样在判断的时候可以简化代码。判断名称的时候一定要注意大小写。在这里插入图片描述

在这里插入图片描述

MODULE study_info_display OUTPUT.
  IF checkbox <> 'X'.
    LOOP AT SCREEN.
      IF screen-group1 = 'PXX'.
        screen-invisible = '1'.
        screen-input = '0'.
      ENDIF.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.
ENDMODULE.                 " STUDY_INFO_DISPLAY  OUTPUT

                                                            运行效果
在这里插入图片描述

            c.保存功能实现

*&---------------------------------------------------------------------*
*&  Include           ZTEST_SCREEN_GLYN001F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  SAVE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM save_data .
  IF radm = 'X'.
    gs_school-zsex = 'M'."男
  ELSE.
    gs_school-zsex = 'F'."女
  ENDIF.

  SELECT SINGLE zschool
    INTO gs_school-zschool
    FROM zdialogschool
    WHERE zschool = gs_school-zschool
    AND  zcode  = gs_school-zcode.
  IF sy-subrc = 0.
    MESSAGE '已存在相同信息' TYPE 'S' DISPLAY LIKE 'E'.
  ELSE.
    INSERT INTO zdialogschool VALUES gs_school.
    IF sy-subrc = 0.
      MESSAGE '保存成功' TYPE 'S'.
    ELSE.
      MESSAGE '保存失败' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.

ENDFORM.                    " SAVE_DATA

在这里插入图片描述
                    最终我将自动设置时间的MODULE放在了最上面,因为如果先执行了SAVE的MODULE的话我的时间并没有先一步设置,而是保存行为完成之后才触发这个MODULE设置了时间。

四、总结

        以上就是今天要讲的内容,本文仅仅简单介绍了sap中Dialog程序的一个小案例,如果有说错或者不好的地方还望大家提出来见谅。感觉笔者写的好的别忘了关注点赞加评论哦,也欢迎大家一起来讨论。谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao贱贱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值