LIST-PROCESSING用法 ABAP任意时刻进行List输出_SAP
如何在SAP的Screen中编写List报表
1、相关命令
LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN <nnnn>].
LEAVE LIST-PROCESSING.
2、使用说明
3、推荐设计思路
设计一个空屏幕,在需要调用list的屏幕的逻辑流中使用CALL SCREEN调用空屏幕。空屏幕的next screen设置为0,不需要PAI,只需要在PBO中设计一个Module,这个module的具体步骤如下:
- 首先调用LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
- 为list设置GUI status ;如:设置SPACE 或者为自己定义的.
- 使用下列语句使空屏幕不输出:
SUPPRESS DIALOG.
or
LEAVE SCREEN. - 进行List输出和处理.
4、示例
REPORT demo_leave_to_list_processing .
TABLES sdyn_conn.
DATA: wa_spfli TYPE spfli,
flightdate TYPE sflight-fldate.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN_100'.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE user_command_0100.
CALL SCREEN 500.
SET SCREEN 100.
ENDMODULE.
MODULE call_list_500 OUTPUT.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
SET PF-STATUS space.
SUPPRESS DIALOG.
SELECT carrid connid cityfrom cityto
FROM spfli
INTO CORRESPONDING FIELDS OF wa_spfli
WHERE carrid = sdyn_conn-carrid.
WRITE: / wa_spfli-carrid, wa_spfli-connid,
wa_spfli-cityfrom, wa_spfli-cityto.
HIDE: wa_spfli-carrid, wa_spfli-connid.
ENDSELECT.
CLEAR: wa_spfli-carrid.
ENDMODULE.
TOP-OF-PAGE.
WRITE text-001 COLOR COL_HEADING.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE sy-lisel COLOR COL_HEADING.
ULINE.
AT LINE-SELECTION.
CHECK not wa_spfli-carrid is initial.
SELECT fldate
FROM sflight
INTO flightdate
WHERE carrid = wa_spfli-carrid AND
connid = wa_spfli-connid.
WRITE / flightdate.
ENDSELECT.
CLEAR: wa_spfli-carrid.
该示例屏幕100只包含一个输入字段(SDYN_CONN-CARRID ),在屏幕100的逻辑流中会调用list处理.屏幕100的逻辑流如下:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
在屏幕100的PAI的module USER_COMMAND_100 将使用CALL SCREEN调用屏幕500。屏幕500的逻辑流中封装了所有List处理,屏幕500的逻辑流如下:
PROCESS BEFORE OUTPUT.
MODULE CALL_LIST_500.
PROCESS AFTER INPUT.
屏幕500的PBO的module CALL_LIST_500定义了list处理代码。另外由于屏幕500的屏幕流设置为0,该程序从List处理返回时到屏幕100的USER_COMMAND_100的调用CALL SCREEN 500的语句之后.
该程序会在list处理时显示一个明细List,具体代码参见AT LINE-SELECTION、TOP-OF-PAGE 和 TOP-OF-PAGE DURING LINE-SELECTION事件代码.
LIST-PROCESSING命令的使用
List-Processing用于在程序中任意地方开始List输出,可以放在代码的任何地方。LEAVE TO LIST-PROCESSING 这段命令做两件事:
- 切换到List输出模式
在这种模式下,标准的List输出所用到的命令:WRITE, ULINE, SKIP等全部可以使用,还包括AT LINE-SELECTION事件、功能码(Function keys)、20 个list level等。
- 将显示List 输出的屏幕设置为当前调用处的下个屏幕(Following Screen)
程序将离开当前屏幕进入List输出的屏幕,进行接下来的操作,但是Leave screen之后,仍将返回前一个调用Leave to list-processing这条命令屏幕的代码的下一行继续执行。示例代码写在最后了,下面说明一下重要的地方:
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
PERFORM EDIT_LIST.
LEAVE SCREEN.
注意这一段代码,第一行的作用前面已经说过了,逻辑将转入下一屏幕(不是普通屏幕,是特殊屏幕)。第二行是一个子程序,在这里面要特别注意的是
- 设置STATUS, "SET PF-STATUS 'XXXX'",如果不设置的话,会把调用该语句的屏幕的STATUS继承过去。
- 在设置STATUS之后,用WRITE等命令输出。
- LIST屏幕上的按钮响应目前还没研究明白,明白人请留言,谢谢!
LIST-PROCESSING的工作过程
运行时,MODULE-POOL放弃屏幕的控制权,可以执行LIST 输出代码,如WRITE等。我们可以选择让LIST输出屏幕替代当前屏幕,或者是作为下一个屏幕,但是不管是哪一种方式,LIST输出的屏幕将在当前屏幕逻辑执行完(LEAVE SCREEN或PAI执行完之时)之后显示,也就是说,WRITE等命令仍然是将输出的东西暂存在缓存中。
- LIST输出作为下一个屏幕
将LEAVE TO LIST-PROCESSING放在PAI中,当LIST屏幕执行完之后,系统将重新进入当前屏幕PBO逻辑,显示屏幕。
- LIST输出替换当前屏幕
将LEAVE TO LIST-PROCESSING放在PBO中,并以LEAVE SCREEN命令结束当前屏幕逻辑。这种情况下,当前屏幕将被替换,不再显示。
R/3系统中有一个DEMO:可以通过TCODE: TZ70运行。参考:SAP Online Help
**** ABAP module and form: ****
MODULE PREPARE_LIST OUTPUT.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
PERFORM EDIT_LIST.
LEAVE SCREEN.
ENDMODULE.
FORM EDIT_LIST.
SET PF-STATUS 'LIST'.
SET TITLEBAR 'LST' WITH SFLIGHT-CONNID SFLIGHT-CARRID.
NEW-PAGE LINE-SIZE 72.
SELECT * FROM SFLIGHT WHERE CARRID = SFLIGHT-CARRID
AND CONNID = SFLIGHT-CONNID.
WRITE: / SY-VLINE NO-GAP,
SFLIGHT-FLDATE COLOR 4 INTENSIFIED OFF NO-GAP,
SY-VLINE NO-GAP,
SFLIGHT-PRICE COLOR 2 INTENSIFIED OFF NO-GAP,
.......
ENDFORM.
LEAVE TO LIST-PROCESSING 是退出其他屏幕后,到List输入的屏幕,例如:WRITE 语句输入的屏幕。
LEAVE LIST-PROCESSING是在其他屏幕退出,到List输入屏幕间的动作。
LIST-PROCESSING用法 ABAP任意时刻进行List输出_SAP的更多相关文章
- FineReport:任意时刻只允许在一个客户端登陆账号的插件
在使用FineReport报表系统中,处于账户安全考虑,有些企业希望同一账号在任意时刻智能在统一客户端登录.那么当A用户在C1客户端登陆后,该账号又在另外一个C2客户端登陆,服务器如何取判断呢? 开发 ...
- A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?
// ConsoleApplication5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<vector> ...
- 【python 2.7】输入任意字母数字,输出其对应的莫尔斯码并播放声音
#python 2.7 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import winsound,sys,time __author ...
- logcplus(2)
(一)log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的,:),本文介绍了log4cplus基本概念,以及如何安装,配置. ### 简介 ### log4 ...
- CH Round #53 -密室
描述 有N个密室,3种钥匙(红色,绿色,白色)和2种锁(红色,绿色),红色钥匙只能开红色的锁,绿色钥匙只能开绿色的锁,白色钥匙可以开红色的锁和绿 色的锁,一把钥匙使用一次之后会被扔掉.每个密室由一扇门 ...
- CentOS 6.2下log4cplus的使用
一.简介 log4cplus是一款优秀的基于C/C++的开源日志库.log4cplus具有线程安全,不用但心在多线程状态下写日志问题:使用灵活,可通过配置文件设置日志级别下输出位置,还可以在程序运行时 ...
- 数字逻辑与EDA设计
目录 第一章 数字逻辑基础 1.1数制与码制★★★ 数制 码制 1.2基本及常用的逻辑运算★★ 1.2逻辑函数表示方法★★ 1.3逻辑函数的化简★★★ 1.4常用74HC系列门电路芯片★ 第二章 组合 ...
- ABAP技术总结
SAP ——ABAP/4 技术总结 V3.0 2014-10-14 --江正军 1. 1.1. 1.1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.7.1. 1.7.2. ...
- iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...
随机推荐
- Qt label加边框
myLabel->setStyleSheet("border:1px solid black"); 简要说明:border就是边缘.px是像素,1px就是边框的宽度.soli ...
- [LeetCode] Longest Valid Parentheses 动态规划
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- 字符集与Mysql字符集处理(二)
接着上篇文章继续讲字符集的故事.这一篇文章主要讲MYSQL的各个字符集设置,关于基础理论部分,参考于这里. 1. MYSQL的系统变量 – character_set_server:默认的内部操作 ...
- window.location 对象所包含的属性
window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostname 当前 URL 的主机名 hre ...
- RESTful API 设计指南【转】
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...
- 玩转PowerShell第二节——【利用PsExec进行远程调用】-技术&分享
概述 PowerShell用的最多的地方就是远程调用,在远程机器上执行脚本,监控远程机器的状态,如NLB状态,EventLog,SqlServer DataBase状态等. 本篇将讲到用PsExec. ...
- 使用TFS+GIT实现分布式项目管理
前言 GIT是近来很流行的一种版本控制系统,是Linux内核之父Linus Torvalds为了管理Linux内核的开发而开发的一种开源的版本控制工具. GIT相比传统的版本控制工具最大的优点是实现了 ...
- [Node.js] 使用File API 异步上传文件
原文地址:http://www.moye.me/2014/11/05/html5-filereader/ 最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进 ...
- LeetCode—— Median of Two Sorted Arrays
Description: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the medi ...
- NodeJS+Mongodb+Express做CMS博客系统
楼主正在用业余时间开发中-- ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejs+express+mongodb 的 cms 系统 怎么启动 默认你已经安装了 mongodb ...