ABAP 屏幕SCREEN设计

屏幕(SCREEN)是ABAP设计最重要的工作之一,SAP的单据、主数据维护等业务功能都使用屏幕,一个程序可以包含多个屏幕。

本文结合实例介绍如何自定义屏幕并跳转:

需求场景介绍:一个简单的快捷填报功能,需要在屏幕之间来回跳转

1、设计Screen

输入TCODE:SE51,进入Screen设计界面,输入程序名,输入屏幕编号100后单击”创建“按钮

在属性页输入描述后,直接保存

单击工具条上的”格式“按钮,进入设计界面,添加一个文本字段控件,输入名称和文本,如果控件显示红色的表示未正确设计属性

控制用屏幕输入输出事件,如在启动屏幕时使用的菜单、工具条,在输入后对输入框的检查,对按钮事件的控制等。

窗口的属性

窗口上所有对象的列表、属性等

单击按钮,出现如下图

PROCESS BEFORE OUTPUT(PBO):屏幕显示前的调用模块。
PROCESS ALTER INPUT(PAI):响应用户输入后的调用模块,如单击按钮、输入字段后回车等事件。

代码”MODULE CANCEL AT EXIT-COMMAND.“。表示在退出事件时执行CANCEL模块,这和退出按钮的函数类型属性对应。

2、工具条和菜单设计

在程序基础上,在屏幕上建立菜单,工具条按钮、系统按钮、添加编辑框:在程序启动时,将程序中的变量传递到窗口的编辑框中;在单击菜单、工具条按钮、系统按钮时,将选中对象的功能码传递到文本框;离开屏幕时,将两个编辑框内容输出,表示窗口变量正确传递回主程序。

2.1、菜单编辑器

工具条和菜单设计,需要用菜单编辑器功能(TCODE:SE41),也可以在屏幕设计界面通过单击工具条按钮进入。单击工具条的”其他对象“按钮

 

2、从程序中调用Screen

call screen 0100 starting at 20 10  .

结果如下

3、逻辑流设计

输入TCODE:SE51,设计逻辑流,将默认的PAI和PBO两个MODULE设为有效(去掉*注释)

在MODULE STATUS_0100调用设计的状态条,在MODULE USER_COMMAND_0100中处理各类按钮事件

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module status_0100 output.
  set pf-status 'KJTB'.         "链接状态栏的名称
*  SET TITLEBAR 'xxx'.
*这些变量定义的是自定义屏幕上文本输入框的变量名,和你画的名称相同
  data:ebeln   type ekpo-ebeln, 
       ebelp   type ekpo-ebelp, 
       xmmc    type ekpo-xm_name, 
       lifnr   type lfa1-name1, 
       bz      type string,       
       lewed   type ekpo-lewed,   
       wbs(24) type c.     "WBS

*写逻辑,给文本赋值
  loop at it_alv3 into wa_alv3 where box = 'X'.
    ebeln = wa_alv3-ebeln.
    xmmc = wa_alv3-xm_name.     "项目名称
    wbs = wa_alv3-xm_wbs1.     "WBS
    lifnr = wa_alv3-name1.      "供应商名称
    bz = wa_alv3-bz.            "备注
    lewed = wa_alv3-lewed.            "预计到货日期
  endloop.

endmodule.                 " STATUS_0100  OUTPUT
*----------------------------------------------------------------------*
***INCLUDE ZPPR044_USER_COMMAND_0100I01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module user_command_0100 input.

  case sy-ucomm.

    when 'BUTTON'.  "双击      这是屏幕上按钮的名字及其实现的功能

   loop at it_alv3 into wa_alv3 where ebeln = ebeln and xm_name = xmmc and name1 = lifnr.
        wa_alv3-bz = bz.
        wa_alv3-lewed = lewed.
        modify it_alv3 from wa_alv3.
      endloop.

    when 'BACK'.  "双击       这是屏幕上按钮的名字及其实现的功能
      leave to screen 0.     "LEAVE TO SCREEN 0来结束当前SCREEN SEQUENCE

  endcase.

参考资料:https://blog.csdn.net/jay_1989/article/details/51611315

https://blog.csdn.net/Jay_1989/article/details/51668873?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

猜你喜欢

转载自blog.csdn.net/fengxin_/article/details/108526679