ABAP-屏幕与status

ABAP-屏幕与status,第1张

ABAP实战屏幕SCREEN设计(一)

ABAP实战屏幕SCREEN设计(二)

ABAP - 设置 GUI Status的正确方式

注意:不要把CALL SCREEN XXX写在LOOP里,否则从XXX屏幕返回前一个屏幕后还在循环里

"LEAVE SCREEN

离开当前屏幕跳转到当前屏幕的下一屏幕,注:如果全要使用此语句代替SUPPRESS DIALOG,则要放Module的最后面

"LEAVE TO LIST-PROCESSING将控制权从对话屏幕转向输出列表处理器LISTPROCESSING,让当前屏幕的PBO与PAI中的Write输出语句将结果都输出到该输出列表List屏幕之上 "离开这里(200屏幕)并到达(TO)列表处理,并且(AND)设置其nextscreen 为0,即关闭List时,会结束输出列表屏幕并返回到该屏幕序列最开始调用处主屏幕100(如果未使用RETUN选项,则点击List标准工具栏上的Back按钮时,会返回到当前屏200所设置的下一屏幕——静态属性设定与动态指定都可)

"该语句不会挂起当前屏幕的PBO处理,执行后会立即继续执行后续语句,这与LEAVE TO SCREEN XXX是不同的 [ LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0

通过AT SELECTION-SCREEN实现,举例如下:

REPORT zsunfeiquan

PARAMETERS: rb1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND f1,

rb2 RADIOBUTTON GROUP g1

PARAMETERS: pc_file LIKE rlgrap-filename OBLIGATORY

AT SELECTION-SCREEN OUTPUT

IF rb2 = 'X'

pc_file = 'D:\Parts_Bonus_Templatexls'

ELSEIF rb1 = 'X'

pc_file = 'D:\Parts_Bonustxt'

ENDIF

在LOOP里面加数据库查询语句的话效率是相当低的,建议你做如下修改:

REPORT Y_JUNE_04

TABLES :EKPO , MAKT

定义内表

DATA: BEGIN OF ITABLE OCCURS 0,

EBELN LIKE EKPO-EBELN,"采购订单

MATNR LIKE EKPO-MATNR,"物料号

BUKRS LIKE EKPO-BUKRS,"公司代码

LGORT LIKE EKPO-LGORT,"库存地点

MAKTX LIKE MAKT-MAKTX,"第二张表的字段

END OF ITABLE

"--------------------------添加部分-开始-----------------------------

data: begin of t_maktx occurs 0,

matnr like ekpo-matnr,

maktx like makt-maktx,

end of t_maktx

"--------------------------添加部分-结束-----------------------------

定义屏幕字段

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001"

SELECT-OPTIONS:S_EBELN FOR EKPO-EBELN"

SELECTION-SCREEN END OF BLOCK B1

开始取数

SELECT EBELN MATNR BUKRS LGORT "取第一个表中的数据到内表中区

INTO CORRESPONDING FIELDS OF TABLE ITABLE "这里就有TABLE

FROM EKPO

WHERE EBELN IN S_EBELN

"--------------------------添加部分-开始-----------------------------

select matnr maktx

into table t_maktx

from makt

for all entries in itable

where matnr = itable-matnr

"--------------------------添加部分-结束-----------------------------

LOOP AT ITABLE"在读取内表的时候把字段描述添加进去

"--------------------------删除部分-开始-----------------------------

" SELECT SINGLE MAKTX "取物料描述到内表对应字段

" INTO ITABLE-MAKTX

" FROM MAKT

" WHERE MATNR = ITABLE-MATNR

" MODIFY ITABLE"修改数据,应为前面用了TABLE

" CLEAR ITABLE

"--------------------------删除部分-结束-----------------------------

"--------------------------添加部分-开始-----------------------------

read table t_maktx with key matnr = itable-matnr

if sy-subrc = 0

itable-maktx = t_maktx-maktx

modify itable

endif

"--------------------------添加部分-结束-----------------------------

Endloop

ABAP/4 允许在屏幕 和纸张上, 生成比这里 看到的更复 杂和更有效 的输出列表 。这些介绍 是后面章节 (例如,创建列表) 的基础。WRITE 语句在屏幕上输 出数据的基 本 ABAP/4 语句是 WRITE。语法WRITE <f>该语句以其 标准格式, 将字段 <f> 输出到当前 列表中。默 认情况下, 该列表显示 在屏幕上。字段 <f> 可以是□ 任何数据 对象(参见 数据对象 (页 错误!链接无效。) )□ 字段符号 或公式参数 (参见使用字符符号 (页使用字段符号))□ 文本符号 (参见 Working with Text Elements (页 错误!链接无效。) )选择“打印 ”,可以直 接从输出屏 幕打印当前 输出列表。 如果为程序 定义选项屏 幕(参见 使用选择屏幕),就可以 在选择屏幕 上选择“执 行和打印” ,然后,该 列表不输出 到屏幕上, 而是直接发 送到打印机 。PROGRAM SAPMZTSTWRITE 'Hello, here I am!'当启动该程 序时,系统 离开当前屏 幕(这可能 是“ABAP/4 编辑器:初 始屏幕”) ,并如下所 示转到输出 屏幕:输出屏幕与 在程序属性 中指定的程 序标题有相 同的名称( 参见指定程序属性 (页 错误!链接无效。) )。屏幕上的第 一行包含列 表表头。默 认情况下, 该列表表头 与程序标题 相同。但是 ,可以由实 际程序外的 程序标题单 独维护列表 表头。详细 信息,参见 (使用文本摘要 (页 错误!链接无效。) )。当前 页号(1) 出现在右边 。列表表头后 紧跟着一条 水平线,然 后显示输出 。可以选择“ 搜索”,以 搜索特定模 式。在屏幕上, 输出通常是 左对齐的。 如果使用几 个 WRITE 语句,输出 字段就一个 接一个显示 ,输出之间 由列分开( 如一个空格 )。如果当 前行没有足 够空间,则 开始新行。PROGRAM SAPMTEST 剩下的楼主自己百度SAP上海培训中心 上面有的

DATA name(5) TYPE c

DATA it_p0000 LIKE TABLE OF p0000

DATA wa_p0000 TYPE p0000

name = 'PERNR'

以上是你的代码

FIELD-SYMBOLS <fs_field> TYPE p0000-pernr

取数我就不写了

LOOP AT it_p0000 INTO wa_p0000

ASSIGN COMPONENT name OF STRUCTURE wa_p0000 TO <fs_field>

WRITE: / <fs_field>

ENDLOOP

<fs_field> 就是你要的

PS: name = 'PERNR' 注意要大写

以上就是关于ABAP-屏幕与status全部的内容,包括:ABAP-屏幕与status、ABAP 选择屏幕上,如何根据选择的单选按钮不同,来改变屏幕上某字段的初始值、abap工作区字段比所选字段多等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9733767.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存