SAP_ABAP_SCREEN_屏幕案例

news2025/1/24 8:53:22

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型,ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977

一 背景说明

实现效果:

二 实现步骤

2.1 创建屏幕

屏幕显示的字段准备 --> 屏幕绘制(字段元素类型的使用)--> 逻辑流程(PBO PAI)PBO:状态栏;PAI :字段栏位的控制,ON REQUEST / ON INPUT ,值改变的时候触发/不为空,触发,MODULE函数。屏幕按钮事件,user_command,处理点击屏幕按钮之后所触发的逻辑

2.2 调用屏幕

CALL  SCREEN 9100 STARTING AT 10 5 ENDING AT 200 30.

2.3 代码分布

2.3.1,主程序,2.3.2,逻辑流程,MODULE函数,user_command,status ;基本上有5处代码

2.4 创建屏幕步骤细节

2.4.1 创建屏幕

2.4.2 输出屏幕编号 

 

2.4.3 屏幕:属性、元素单元、逻辑流

 屏幕的三大部分细节

2.4.4 逻辑流

逻辑流程中有两个部分的信息,PBO、PAI

PROCESS BEFORE OUTPUT.
* MODULE STATUS_9100.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_9100. 

 2.4.5 屏幕绘制,进入屏幕布局

 2.4.6 从元素库中拖动元素到面板上

2.4.7 从元素库中拖动表格向导到面板上 (表格向导有6个步骤)

 

 2.4.8 创建状态栏、创建按钮事件

 创建成功之后分别对应到PBO PAI的模块中

 2.4.9  状态栏中的按钮在屏幕中的位置

 2.4.10 按钮事件编码区域

在这个区域,可以对屏幕的表,输入框里的值进行操作等等

2.4.11 PAI中添加MODEULE

屏幕逻辑流的关于 MODULE,

FIELD ls_head-vkorg MODULE check_vkorg ON REQUEST." 值改变,触发
FIELD ls_head-vkorg MODULE check_vkorg ON INPUT.       " 不为空,触发

 这个区域可以写搜索帮助等

 2.4.12 屏幕属性设置成对话框方式

屏幕需要选择对话框的方式

2.4.13 元素类型说明

 

 字段的输入、输出、必填控制,如果是按钮元素,请输入功能码

2.5 代码分布细节

直接copy可用

2.5.1 主程序

2.5.5逻辑流程

*&---------------------------------------------------------------------*
*& Report ZSMF
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zscreen.

DATA: gv_ok_code LIKE sy-ucomm.
"定义好销售订单的表头 ,表行数据
DATA: ls_head TYPE zssd_vbak,
      ls_item TYPE zssd_vbap,
      lt_item TYPE STANDARD TABLE OF zssd_vbap.

SELECTION-SCREEN:BEGIN OF BLOCK b0 WITH FRAME TITLE TEXT-001.
  PARAMETERS: pa_file TYPE rlgrap-filename ."文件夹上传
SELECTION-SCREEN:END OF BLOCK b0.

INITIALIZATION.
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
AT SELECTION-SCREEN.
* PERform INI_DATA. " 选择屏幕输入值的验证
START-OF-SELECTION.
* PERform PRECESS_DATA. " 主要数据处理逻辑


"定义好销售订单的表头 ,表行数据
  DATA:lv_i TYPE i.
  lv_i = 1.

  CLEAR:ls_head.
  ls_head-vkorg = '1010'.
  ls_head-kunnr = 'kunnr'.
  ls_head-name1 = 'kunnr_desc'.
  ls_head-vbeln = 'A000' && lv_i.
  REFRESH:lt_item.
  DO 50 TIMES.

    CLEAR:ls_item.
    ls_item-checked = 'X'.
    ls_item-posnr = 1.
    ls_item-vrkme = '个'.
    ls_item-zdw = '个'.
    ls_item-matnr = 'M001' && lv_i.
    ls_item-name1 = 'NAME1'.
    ls_item-zbak  = '销售订单打印测试demo'&& lv_i.
    ls_item-kwmeng = 12.
    APPEND ls_item TO lt_item.

    CLEAR:ls_item.
    ls_item-checked = 'X'.
    ls_item-posnr = 2.
    ls_item-vrkme = 'PC'.
    ls_item-zdw = '个'.
    ls_item-matnr = 'M002' && lv_i.
    ls_item-name1 = 'NAME2'.
    ls_item-zbak  = '销售订单打印测试demo'&& lv_i.
    ls_item-kwmeng = 13.
    APPEND ls_item TO lt_item.

    lv_i = lv_i + 1.

  ENDDO.

  "左边距离 + 上边距 + 长 + 高
  CALL  SCREEN 9100 STARTING AT 10 5 ENDING AT 200 30.


AT LINE-SELECTION.
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
AT USER-COMMAND.
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
TOP-OF-PAGE.
* PERform PAGE_HEADER. " 页眉
END-OF-PAGE.
* PERform PAGE_FOOT. " 页脚

  INCLUDE zscreen_status_9100o01.
  INCLUDE zscreen_user_command_9100i01.


"---  表控件向导,生成的--
*&SPWIZARD: DECLARATION OF TABLECONTROL 'LT_1' ITSELF
  CONTROLS: lt_1 TYPE TABLEVIEW USING SCREEN 9100.
*&SPWIZARD: OUTPUT MODULE FOR TC 'LT_1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE lt_1_change_tc_attr OUTPUT.
  DESCRIBE TABLE lt_item LINES lt_1-lines.
ENDMODULE.
"---  表控件向导,生成的 end

INCLUDE zscreen_check_vkorgi01.
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'LT_1'
  MODULE lt_1_change_tc_attr.
*&SPWIZARD: MODULE LT_1_CHANGE_COL_ATTR.
  LOOP AT   lt_item
       INTO ls_item
       WITH CONTROL lt_1
       CURSOR lt_1-current_line.
*&SPWIZARD:   MODULE LT_1_CHANGE_FIELD_ATTR
  ENDLOOP.

  MODULE status_9100.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'LT_1'
  LOOP AT lt_item.
    CHAIN.
      FIELD ls_item-checked.
      FIELD ls_item-posnr.
      FIELD ls_item-matnr.
      FIELD ls_item-name1.
      FIELD ls_item-kwmeng.
      FIELD ls_item-vrkme.
      FIELD ls_item-zbak.
      FIELD ls_item-zdw.
    ENDCHAIN.
  ENDLOOP.


*&SPWIZARD: MODULE LT_1_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE LT_1_CHANGE_COL_ATTR.

  MODULE user_command_9100.

 "FIELD ls_head-vkorg MODULE check_vkorg ON REQUEST." 值改变的时候触发
  FIELD ls_head-vkorg MODULE check_vkorg ON INPUT.   " 不为空,触发

2.5.2 status

MODULE status_9100 OUTPUT.
  SET PF-STATUS 'ZSTATUS'.
  SET TITLEBAR 'ZTITLEBAR'.
ENDMODULE.

2.5.3 user_command

*----------------------------------------------------------------------*
***INCLUDE ZSCREEN_USER_COMMAND_9100I01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9100 INPUT.

  gv_ok_code = sy-ucomm.

  CASE gv_ok_code.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
    WHEN 'CANCEL'.
      LEAVE TO SCREEN 0.

    WHEN '&F12'.
      LEAVE TO SCREEN 0.
    WHEN 'TEST'.
      LEAVE TO SCREEN 0.

    WHEN 'ZSAVE'.

      IF ls_head-vkorg = '2000'.
        ls_head-vkorg = '1010'.
      ENDIF.

      LEAVE TO SCREEN 0.


    WHEN OTHERS.

  ENDCASE.

ENDMODULE.

2.5.4 MODULE函数

*----------------------------------------------------------------------*
***INCLUDE ZSCREEN_CHECK_VKORGI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  CHECK_VKORG  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE check_vkorg INPUT.

  IF 1 = 1.

  ENDIF.

ENDMODULE.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/965716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器视觉工程师,有哪几种类型

1.光学实验室(打光机器视觉工程师,一般此职位,要求有光学学历的背景最佳) 2.机器视觉算法开发工程师(此职位国内稀缺)3.机器视觉工程师/机器视觉开发工程师(MV工程师/MV工程师)&…

Unity动态设置天空盒

代码设置环境贴图 在LightingSetting面板中的设置方式 代码设置方式 RenderSettings.skybox material;

【Spring面试题】IOC控制反转和DI依赖注入(详解)

IOC Inversion of Control 控制反转,是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。 通俗点讲,因为项目…

利用python制作AI图片优化工具

将模糊图片4K高清化效果如下: 优化前的图片 优化后如下图: 优化后图片变大变清晰了效果很明显 软件界面如下: 所用工具和代码: 1、所需软件包 网盘链接:https://pan.baidu.com/s/1CMvn4Y7edDTR4COfu4FviA提取码&am…

Yolov5 中添加注意力机制 CBAM

Yolov5 中添加注意力机制 CBAM 1. CBAM1.1 Channel Attention Module1.2 Spatial Attention Module1.3 Channel attention 和 Spatial attention 如何去使用 2. 在Yolov5中添加CBAM模块2.1 修改common.py 文件2.2 修改yolo.py 文件2.3 修改网络配置yolov5x-seg.yaml文件 3. 训练…

TCP Header都有啥?

分析&回答 源端口号(Source Port) :16位,标识主机上发起传送的应用程序; 目的端口(Destonation Port) :16位,标识主机上传送要到达的应用程序。 源端,目…

WSL中为Ubuntu和Debian设置固定IP的终极指南

文章目录 **WSL中为Ubuntu和Debian设置固定IP的终极指南****引言/背景****1. 传统方法****2. 新方法:添加指定IP而不是更改IP****结论**WSL中为Ubuntu和Debian设置固定IP的终极指南 引言/背景 随着WSL(Windows Subsystem for Linux)的普及,越来越多的开发者开始在Windows…

网络防火墙与入侵检测系统(IDS/IPS):深入研究现代防火墙和IDS/IPS技术,提供配置和管理建议

第一章:引言 随着信息技术的飞速发展,网络安全的重要性日益凸显。在这个充满威胁的数字时代,网络防火墙和入侵检测系统(IDS/IPS)成为保护企业和个人免受网络攻击的关键工具。本文将深入研究现代防火墙和IDS/IPS技术&a…

第9章 函数

本章介绍以下内容: 关键字:return 运算符:*(一元)、&(一元) 函数及其定义方式 如何使用参数和返回值 如何把指针变量用作函数参数 函数类型 ANSI C原型 递归 如何组织程序?C的设…

MongoDB 的简介

MongoDB 趋势 对于 MongoDB 的认识 Q&A QA什么是 MongoDB? 一个以 JSON 为数据模型的文档数据库一个以 JSON 为数据模型的文档数据库文档来自于“JSON Document”,并非我们一般理解的 PDF,WORD谁开发 MongDB? 上市公司 MongoD…

POI-TL制作word

本文相当于笔记,主要根据官方文档Poi-tl Documentation和poi-tl的使用(最全详解)_JavaSupeMan的博客-CSDN博客文章进行学习(上班够用) Data AllArgsConstructor NoArgsConstructor ToString EqualsAndHashCode public …

抽象轻松c语言

目 c语言 c程序 c语言的核心在于语言,语言的作用是进行沟通,人与人之间的信息交换 人与人之间的信息交换是会有信息空白(A表达信息,B接受信息,B对信息的处理会与A所以表达的信息具有差距,这段差距称为信…

【4-5章】Spark编程基础(Python版)

课程资源:(林子雨)Spark编程基础(Python版)_哔哩哔哩_bilibili 第4章 RDD编程(21节) Spark生态系统: Spark Core:底层核心(RDD编程是针对这个)Spark SQL:…

说说HTTP 和 HTTPS 有什么区别?

分析&回答 http协议 超文本传输协议,是互联网上应用最多的协议,基于TCP/IP通讯协议来传递信息,用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在http协议的基础上增加了S…

不同写法的性能差异

“ 达到相同目的,可以有多种写法,每种写法有性能、可读性方面的区别,本文旨在探讨不同写法之间的性能差异 len(str) vs str "" 本部分参考自: [问个 Go 问题,字符串 len 0 和 字符串 "" ,有啥区别?](https://segmentf…

React笔记(八)Redux

一、安装和配置 React 官方并没有提供对应的状态机插件,因此,我们需要下载第三方的状态机插件 —— Redux。 1、下载Redux 在终端中定位到项目根目录,然后执行以下命令下载 Redux npm i redux 2、创建配置文件 在 React 中,…

[管理与领导-64]:IT基层管理者 - 8项核心技能 - 8 - 打造高效团队

目录 前言: 一、团队建设对于不同管理层的不同 第1节:认识自己的团队 1.1 团队的生命周期 1.2 常见的团队问题 1.3 团队角色的配置 1.4 团队水平测试 第2节:什么是高绩效团队 2.1 什么是团队 2.2 团队五个基本要素: 2.…

超图嵌入论文阅读2:超图神经网络

超图嵌入论文阅读2:超图神经网络 原文:Hypergraph Neural Networks ——AAAI2019(CCF-A) 源码:https://github.com/iMoonLab/HGNN 500star 概述 贡献:用于数据表示学习的超图神经网络 (HGNN) 框架&#xf…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工 ​​​

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工 ​​​

什么是盒子模型

什么是盒子模型 盒子模型,也可以称为框模型。 所有 HTML 元素可以看作盒子。在 CSS 中,“box model” 这一术语是用来设计和布局时使用。 CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距&#xff0c…