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
下一篇: Android设置屏幕亮度及Alpha值