欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ABAP 屏幕SCREEN设计

程序员文章站 2022-05-23 14:19:05
...

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

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

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

ABAP 屏幕SCREEN设计

1、设计Screen

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

ABAP 屏幕SCREEN设计

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

ABAP 屏幕SCREEN设计

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

ABAP 屏幕SCREEN设计

 

ABAP 屏幕SCREEN设计

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

ABAP 屏幕SCREEN设计窗口的属性

ABAP 屏幕SCREEN设计窗口上所有对象的列表、属性等

单击ABAP 屏幕SCREEN设计按钮,出现如下图

ABAP 屏幕SCREEN设计

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

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

2、工具条和菜单设计

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

2.1、菜单编辑器

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

ABAP 屏幕SCREEN设计

 

ABAP 屏幕SCREEN设计

 

2、从程序中调用Screen

call screen 0100 starting at 20 10  .

结果如下

ABAP 屏幕SCREEN设计

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