ABAP程序选择屏幕输入的权限检查

合集下载

sap权限检查方法

sap权限检查方法

sap权限检查方法SAP系统的权限检查可是个很重要的事儿呢,就像家里的钥匙管理一样,得确保每个人只能进自己该进的“房间”。

咱先说说最基本的,就是通过事务代码来检查权限。

在SAP里,每个操作都有对应的事务代码。

你要是想知道自己有没有某个操作的权限,就试着输入那个事务代码呗。

要是能顺利打开相关的操作界面,那大概率是有这个权限的。

要是系统弹出个警告或者干脆不让你进,那就是权限不够啦。

这就好比你拿钥匙开一扇门,钥匙插不进去或者拧不动,那就是没这个门的钥匙呗。

还有呢,查看用户角色分配也是个重要的方法。

每个用户在SAP里都被分配了特定的角色,这些角色就像是一个个权限的集合包。

你可以在系统里找到用户管理的部分,看看某个用户被分配了哪些角色。

如果一个角色包含了特定的权限,而用户拥有这个角色,那理论上就有相关权限。

这就像你在一个团队里,你的职位决定了你能做哪些工作一样。

比如说你是个小会计,那你就有会计相关的操作权限,要是你想做采购的事儿,没有被分配采购相关的角色,那肯定就不行啦。

另外呀,查看权限对象也是很关键的一步。

权限对象就像是一个个小的权限模块,每个权限对象规定了不同的权限规则。

在SAP系统里,可以深入到权限对象的设置里,看看对于某个操作,权限是怎么定义的。

比如说对于创建销售订单这个操作,权限对象可能会规定哪些字段你能修改,哪些你只能查看。

这就像是游戏里的规则一样,每个关卡都有自己的小规则,你得按照这个规则来玩。

不过呢,权限检查有时候也会有点小麻烦。

因为SAP系统很复杂,权限设置可能会相互关联。

就像一个复杂的拼图,一块拼错了,可能就影响整个画面。

有时候你觉得自己应该有某个权限,但是实际操作不行,那可能就是其他相关的权限设置出了问题。

这时候就需要耐心一点,一点点排查啦。

就像你找东西丢在哪里了,要把每个可能的地方都翻一翻一样。

总之呢,SAP权限检查虽然有点小复杂,但只要掌握了这些基本的方法,就像手里有了小法宝,遇到权限问题的时候就不会太慌啦。

SAP的Selection屏幕的事件处理顺序

SAP的Selection屏幕的事件处理顺序

SAP的Selection屏幕的事件处理顺序一、abap程序处理顺序图二、INITIALIZATION 和START-OF-SELECTION 事件之间的事件顺序图有一个错误,START-OF-SELECTION执行是回到INITIALIZATION事件,但是INTITIALIZATION事件的对选择屏幕的修改只有第一次影响选择屏幕字段,再次执行时不会影响选择屏幕字段,选择屏幕字段将保持用户输入的内容。

对于一些录入检查警告提示处理应该放到AT SELECTION-SCREEN.事件中,这样就不会再次执行INITIALIZATION事件三、处理说明1、程序首先执行INITIALIZATION 事件;2、接着执行AT SELECTION SCREEN OUTPUT事件(也就是PBO) ,在这个事件里你可以通过修改系统默认screen内表修改屏幕的某些属性;PARAMETERS: TEST1(10) MODIF ID SC1,TEST2(10) MODIF ID SC2,TEST3(10) MODIF ID SC1,TEST4(10) MODIF ID SC2.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.IF SCREEN-GROUP1 = 'SC1'.SCREEN-INTENSIFIED = '1'.MODIFY SCREEN.CONTINUE.ENDIF.IF SCREEN-GROUP1 = 'SC2'.SCREEN-INTENSIFIED = '0'.MODIFY SCREEN.ENDIF.ENDLOOP.3、系统将屏幕输出到用户端,用户就可进行交互操作了。

也就是PAI处理,其分为3.1字段AT SELECTION-SCREEN ON XXXX.REPORT EVENT_DEMO.NODES SPFLI.AT SELECTION-SCREEN ON CITY_FR.IF CARRID-LOW EQ 'AA' AND CITY_FR NE 'NEW YORK'.MESSAGE E010(HB).ENDIF.3.2区域AT SELECTION-SCREEN ON BLOCK XXXX.REPORT EVENT_DEMO.SELECTION-SCREEN BEGIN OF BLOCK PART1 WITH FRAME.PARAMETERS: NUMBER1 TYPE I,NUMBER2 TYPE I,NUMBER3 TYPE I.SELECTION-SCREEN END OF BLOCK PART1.SELECTION-SCREEN BEGIN OF BLOCK PART2 WITH FRAME. PARAMETERS: NUMBER4 TYPE I,NUMBER5 TYPE I,NUMBER6 TYPE I.SELECTION-SCREEN END OF BLOCK PART2.AT SELECTION-SCREEN ON BLOCK PART1.IF NUMBER3 LT NUMBER2 ORNUMBER3 LT NUMBER1 ORNUMBER2 LT NUMBER1.MESSAGE E020(HB).ENDIF.AT SELECTION-SCREEN ON BLOCK PART2.IF NUMBER6 LT NUMBER5 ORNUMBER6 LT NUMBER4 ORNUMBER5 LT NUMBER4.MESSAGE E030(HB).ENDIF.3.3屏幕AT SELECTION-SCREEN在此事件里可以进行对用户输入进行完整性进行检查。

abap 屏幕按钮的描述

abap 屏幕按钮的描述

abap 屏幕按钮的描述问题。

首先,我们来介绍一下什么是ABAP屏幕按钮。

ABAP屏幕按钮是在SAP ABAP程序中用于激活特定功能的一种控件。

它通常显示在SAP系统的用户界面上,以便用户可以通过点击按钮来执行特定的操作。

ABAP屏幕按钮可以呈现为不同的形式,比如文本按钮、图标按钮或图形按钮。

它们的外观和行为可以通过编程进行定制,以满足应用程序的需求。

在下面的文章中,我们将一步一步回答关于ABAP屏幕按钮的一些常见问题,希望能帮助读者更好地理解和应用这个功能。

第一步:如何创建一个ABAP屏幕按钮?在SAP ABAP程序中创建一个屏幕按钮需要以下步骤:1. 在屏幕上选择一个合适的位置,并设置按钮的坐标和尺寸。

2. 为按钮选择一个唯一的ID,并为按钮设置一个描述性的文本。

3. 在ABAP代码中声明一个包含屏幕按钮属性的结构体,并在结构体中为按钮设置相关属性,如ID、文本、颜色等。

4. 在屏幕布局中添加一个按钮对象,并将其与上一步中声明的结构体相关联。

第二步:如何定义一个ABAP屏幕按钮的行为?ABAP屏幕按钮的行为可以通过编程来定义,以决定何时触发按钮点击事件以及其后续的操作。

以下是定义ABAP屏幕按钮行为的一些常见方法:1. 使用事件处理程序对按钮点击事件进行响应。

在ABAP代码中编写按钮点击事件的处理逻辑,比如触发其他函数模块、执行特定操作或显示特定屏幕。

2. 根据按钮状态或条件来切换按钮的点击行为。

通过设定按钮属性或在事件处理程序中检查特定条件,可以确定按钮的不同状态或行为。

3. 使用用户交互动作来触发按钮行为。

除了点击按钮,还可以使用其他用户交互动作(如键盘事件或鼠标移动)来触发按钮行为。

第三步:如何修改ABAP屏幕按钮的外观?ABAP屏幕按钮的外观可以通过编程来修改以满足相应的需求。

以下是修改ABAP屏幕按钮外观的一些方法:1. 修改按钮的文本和样式。

通过修改按钮的文本属性、字体大小、字体颜色和背景颜色等,可以改变按钮的外观。

ABAP考试2-选择屏幕、ALV和函数

ABAP考试2-选择屏幕、ALV和函数

程序一:创建一个带选择屏幕的程序,并将查询结果在ALV中展示。

1.选择屏幕:
1.1物料凭证的编号(多选)MSEG-MBLNR
1.2工厂(单选必须输入)MSEG-WERKS
1.3物料编号(多选) MSEG-MATNR
1.4库存地点(多选)MSEG-LGORT
1.5 用户名(添加搜索帮助,用户名来源于表USR21)
2.ALV显示查询结果:
2.1要求按照屏幕事件的顺序编写代码,用户名默认自己。

2.2根据上述选择屏幕的输入条件,从数据库表中取值。

2.3判断借贷标志MSEG-SHKZG,如果是S,则数量显示为负数。

2.4将数量汇总。

2.5工厂,库存地点,物料号三个字段进行升序排列.
2.6物料描述列用黄色表示.
2.7输出字段:工厂,库存地点,库存地点描述T001L-LGOBE,物料编号,物料描述MAKT-MAKTX,凭证编号,移动类型MSEG-BWART,凭证数量MSEG-MENGE,单位MSEG-MEINS。

2.8大标题输出:‘物料凭证信息’。

程序二:创建一个程序,创建一个函数,在程序中调用函数。

1.程序要求:定义4个变量,分别表示航线承运人ID(SFLIGHT-CARRID)、航班连接
Id(SFLIGHT-CONNID)、航班日期(SFLIGHT-FLDATE),飞机类型(SFLIGHT-PLANETYPE).调用函数实现将这几个字段的数据更新在表SFLIGHT里。

如果更新成功,报出成功消息,反之,失败消息。

2.函数功能:输入参数:对应4个屏幕字段。

输出参数:是否修改数据库成功的标识。

3.调用函数,根据函数返回结果,WRITE输出消息。

BAP 中关于屏幕输入字段 F4 帮助的整理

BAP 中关于屏幕输入字段 F4 帮助的整理

BAP 中关于屏幕输入字段 F4 帮助的整理一、 ABAP 中从 PC 机选择文件使用的标准 Function Module :WS_FILENAME_GET Function Group :GRAP 在Function Group GRAP 中包含一些 ABAP 与 PC 机文件操作相关的功能模块WS_FILENAME_GET 的接口说明输入参数:字段名 DEF_FILENAME DEF_PATH MASK MODE TITLE 描述设置前文件名设置前路径选择屏蔽 S = 保存,O = 打开选择窗口的标题个人备注默认打开的文件名默认打开的路径筛选条件是打开文件还是保持文件弹出的选择框的标题程序调用截图:执行结果截图的方式实现二、通过创建 Search Help 的方式实现 F4 帮助功能日期类型的 range 系统会自动关联一个日历表创建一个简单的 Search Help 例子:保存&激活创建一个 database table,包含这字段 LGNUM,LNUMT为表的 LGNUM 字段增加 search help编写一个简单的 select screen 测试下:执行,我们来看下这 3 个字段的 F4 帮助情况 1、自己定义的 F4 帮助---他会按照我们创建的 search help 来检索表里面的值供参考2、一般的没有 search help 的 range,没有 F4 帮助 search 的功能3、日期类型的 range,弹出日期选择对话框选择程序名的字段名的字段实现三、选择程序名的字段实现 F4Function Group :SEF4 Function Module :F4_PROGRAM 在 SEF4 中,存在多个 F4 开头的 function module,可以自己查看需要的。

做个实例来测试下用法:REPORT zwm_testdemo3.TABLES trdir.*-- 屏幕定义SELECT-OPTIONS: s_name FOR trdir-name, s_unam FOR trdir-unam." 程序名 " 用户名AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_name-low.CALL FUNCTION 'F4_PROGRAM' EXPORTING object = s_name-lowsuppress_selection = 'X' IMPORTING RESULT EXCEPTIONS OTHERS = 1. = s_name-lowAT SELECTION-SCREEN ON VALUE-REQUEST FOR s_name-high.CALL FUNCTION 'F4_PROGRAM' EXPORTINGobject= s_name-highsuppress_selection = 'X' IMPORTING RESULT EXCEPTIONS OTHERS = 1. = s_name-highAT SELECTION-SCREEN ON VALUE-REQUEST FOR s_unam-low.CALL FUNCTION 'F4_USER' EXPORTING object = s_unam-low IMPORTING RESULT = s_unam-low.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_unam-high.。

abap check语句

abap check语句

abap check语句ABAP中的CHECK语句用于检查特定条件是否成立。

如果条件为真,则程序继续执行。

如果条件为假,则程序将中断执行并引发异常。

本文将介绍ABAP CHECK语句的语法和用法,并举例说明如何使用该语句。

1. 语法CHECK逻辑表达式.其中逻辑表达式是一个用于检查条件的布尔表达式(即,表达式的结果为TRUE或FALSE)。

2. 用法使用CHECK语句的主要目的是验证某个条件是否成功,如果条件失败,则引发一个异常。

在以下情况下使用CHECK语句:- 检查输入的数据是否满足指定的格式要求。

- 检查使用某个变量的操作是否越界。

- 检查当前用户是否具有执行某个操作所需的权限。

- 检查接收到的数据是否包含无效字符或包含未经授权的内容。

- 检查某个表或视图是否存在。

以下是一些常见的CHECK语句的示例:1) 检查输入的数据是否满足要求下面是一个例子,其中检查用户是否输入了有效的数字:DATA: num TYPE i.WRITE 'Enter a number:'.READ num.CHECK num BT 1 AND num LE 100.WRITE 'The number is valid.'.在上面的代码中,如果num的值不在1到100之间,则CHECK语句将引发异常,并导致程序终止。

2) 检查数组或字符串是否不越界以下是一个例子,其中检查my_table表中是否存在越界错误:DATA: my_table TYPE STANDARD TABLE OF i WITH DEFAULT KEY.my_table = VALUE #( ( 1 ), ( 2 ), ( 3 ) ).CHECK sy-tabix GT 0 AND sy-tabix LE LINES( my_table ). WRITE my_table[ sy-tabix ].在上面的代码中,如果尝试读取my_table中不存在的行,则CHECK语句将引发异常并导致程序终止。

ABAP选择屏幕程序示例

ABAP选择屏幕程序示例

选择屏幕程序运行截图:*&---------------------------------------------------------------------* *& Report Z_XZPM*&*&---------------------------------------------------------------------* *&*&*&---------------------------------------------------------------------*REPORT Z_XZPM.*定义选择屏幕selection-screen begin of block F with frame .*空格两行selection-screen skip 2.selection-screen comment 47(20) screen1.selection-screen skip 2.*定义姓名输入编辑行SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(10) NAME.PARAMETERS A1(10) TYPE C.SELECTION-SCREEN END OF LINE.selection-screen skip 1.*定义年龄输入编辑行SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(10) AGE.PARAMETERS A2 TYPE I.SELECTION-SCREEN END OF LINE.selection-screen skip 1.*定义家庭住址输入编辑行SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(10) ADDRESS.PARAMETERS A3(70) TYPE C.SELECTION-SCREEN END OF LINE.selection-screen skip 1.*定义对话框填充单选按钮selection-screen begin of block RADIO with frame title screen2 . parameters man radiobutton group rg1.parameters woman radiobutton group rg1.selection-screen end of block RADIO.selection-screen skip.*定义对话框填充复选按钮selection-screen begin of block chk with frame title screen3 . parameters:English AS CHECKBOX ,Japanese AS CHECKBOX ,French AS CHECKBOX ,German AS CHECKBOX , Other as CHECKBOX .selection-screen end of block chk.selection-screen skip.selection-screen skip.selection-screen end of block F.initialization .NAME = '输入姓名:'.AGE = '输入年龄:'.ADDRESS = '家庭住址:'.screen1 ='个人信息注册登记表'.screen2 = '选择性别'.screen3 = '选择您所学过的外语'.。

[SAPABAP开发技术总结]动态修改选择屏幕

[SAPABAP开发技术总结]动态修改选择屏幕

[SAPABAP开发技术总结]动态修改选择屏幕12.16. 动态修改屏幕选择屏幕、对话屏幕都有对应的SCREEN内表,下面是几个重要属性:NAME:Name of the screen field。

如果参数是select-options 类型参数,则参数名以LOW与HIGH后缀来区分。

GROUP1:选择屏幕元素通过MODIF ID选项设置GROUP1(对话屏幕通过属性设置),将屏幕元素分为一组,方便屏幕的元素的批量修改REQUIRED:控制文本框、下拉列表屏幕元素的必输性,使用此属性后会忽略OBLIGATORY选项。

取值如下:0:不必输,框中前面也没有钩1:必输,框中前面有钩,系统会自动检验是否已输入,相当于OBLIGATORY选项2:不必输,但框中前面有钩,系统不会检查是否已输入,此时需要手动检验INPUT:控制屏幕元素(包括复选框、单选框、文本框)的可输性ACTIVE:控制屏幕元素的可见性REQUIRED选项的应用:该选项可以解决这个问题:在点击某个单选框(p_rd1)后显示某个必输字段(p_lclfil),但当这个必输框显示出来后,如果点击p_rd2想隐藏它时,此时输入框中必须有值,否则系统会自动检验要求重新输入。

现要求输入框没有输入值的情况下,也可在点击p_rd2时隐藏它,则解决的办法是:将输入框的这个属性设置为2(显示必须的钩,但系统不会自动进行必输验证),去掉OBLIGATORY选项(不去掉也会被忽略),并在AT SELECTION-SCREEN ON field事件里时手动进行为空验证'一定要设置USER-COMMAND ,否则点击之后,不会触发屏幕PAI事件,PAI事件不触发则会导致'屏幕的AT SELECTION-SCREEN OUTPUT也就不会被触发(非执行按钮的FunCode触发时都会刷新'屏幕,所以再次显示屏幕时再次执行PBO)PARAMETERS p_rd1 RADIOBUTTON GROUP gp1 USER-COMMAND mxx.'用来隐藏 p_lclfilPARAMETERS p_rd2 RADIOBUTTON GROUP gp1 DEFAULT 'X'.'用来显示 p_lclfil'当通过程序动态修改屏幕元素属性 required 后,会忽略掉这里的OBLIGATORY 选项*PARAMETERS p_lclfil(128) AS LISTBOX VISIBLE LENGTH 20 MODIF ID mxy OBLIGATORY .PARAMETERS p_lclfil(128) MODIF ID mxy OBLIGATORY .PARAMETERS: c AS CHECKBOX.'没什么作用,用来测试CHECKBOX 的可输入性'当 C2 被钩选时,屏幕上的其他输入元素均不可输入PARAMETERS: c2 AS CHECKBOX USER-COMMAND ddd DEFAULT 'X'.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN .'当 C2 没有钩选时,其他元素都设置为可输入IF screen-name <> 'C2' AND c2 IS INITIAL .screen-input = 1.MODIFY SCREEN.ELSEIF screen-name <> 'C2' AND c2 IS NOT INITIAL .screen-input = 0.'C2钩选时,所以屏幕输入元素禁止输入MODIFY SCREEN.ENDIF.'控制下拉列表(文本框也是一样)的必输性:外观上打钩,但不自动校验IF p_rd2 = 'X' AND screen-group1 = 'MXY'.'显示screen-active = '1'.* screen-input = '1'.'显示前设为可输入screen-required = '2'.'外观上打钩,但不自动校验MODIFY SCREEN.ELSEIF screen-group1 = 'MXY'. ''隐藏screen-active = '0'.screen-required = '2'.MODIFY SCREEN.ENDIF.ENDLOOP.AT SELECTION-SCREEN ON p_lclfil.IF p_rd2 IS NOT INITIAL'手动检验:但当点击单选按钮与复选框C2 时,不校验AND sy-ucomm <> 'MXX' AND sy-ucomm <> 'DDD' AND p_lclfil IS INITIAL.MESSAGE e055(00).ENDIF.。

sap abap 使用选择屏幕

sap abap 使用选择屏幕

第二章使用选择屏幕概览内容选择屏幕是什么? ......................................................................................................................................... 1选择屏幕与逻辑数据库................................................................................................................................. 2为变量定义输入字段..................................................................................................................................... 3PARAMETERS 语句基本格式 ............................................................................................................. 3给参数分配缺省值................................................................................................................................... 4禁止参数显示........................................................................................................................................... 4允许参数接受大小写............................................................................................................................... 4制作需要的输入字段的参数................................................................................................................. 5在选择屏幕上创建复选框..................................................................................................................... 5从SAP 内存中使用缺省值................................................................................................................... 6给参数分配匹配代码对象..................................................................................................................... 7给修改组分配参数................................................................................................................................... 7使用选择标准 ................................................................................................................................................. 8选择标准是什么?................................................................................................................................... 8定义选择标准....................................................................................................................................... 10使用报表的选择标准........................................................................................................................... 15格式化选择屏幕 ......................................................................................................................................... 17指定空行、下划线和注释................................................................................................................. 18将几个元素放在一行上....................................................................................................................... 19定位元素................................................................................................................................................. 20创建元素块............................................................................................................................................. 20在应用工具条中创建按钮................................................................................................................. 21在选择屏幕上创建按钮....................................................................................................................... 21选择屏幕是报表程序的一部分,您可以设计选择屏幕以便交互输入字段值和选择标准。

ABAP选择屏幕:根据用户选择动态显示屏幕

ABAP选择屏幕:根据用户选择动态显示屏幕

在有些程序中我们发现,如果用户选择了多个选项中的其一(单选框),则屏幕的外观将会有所调整。

这是怎么实现呢?我们来看下面的例子。

PARAMETERS: p1 TYPE c RADIOBUTTON GROUP g1 USER-COMMAND uc,p2 TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X'.PARAMETERS: p_werks TYPE werks MODIF ID ty1,p_matnr TYPE matnr MODIF ID ty2.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.CASE screen-group1.WHEN 'TY1'.IF p1 IS INITIAL.screen-active = '0'.ELSE.screen-active = '1'.ENDIF.WHEN 'TY2'.IF p2 IS INITIAL.screen-active = '0'.ELSE.screen-active = '1'.ENDIF.ENDCASE.MODIFY SCREEN.ENDLOOP.AT SELECTION-SCREEN.CLEAR sy-ucomm.关于程序的说明:(1)该程序可以根据用户选择了P1或P2,决定显示工厂还是物料号在屏幕上;(2)这里USER-COMMAND uc是关键,它代表用户点击RADIOBUTTON GROUP g1上的任一选项时,都将触发PAI,并且Function code为'UC'。

在CLEAR sy-ucomm.这里打个断点即可观察sy-ucomm的值。

(3)MODIF ID 用于对屏幕元素进行分组,这在屏幕元素较多时更有用处,逻辑清晰。

这里的PBO(AT SELECTION-SCREEN OUTPUT)就是根据用户的选择,决定不同组的屏幕元素是隐藏或显示。

ABAP程序选择屏幕输入的权限检查

ABAP程序选择屏幕输入的权限检查

AT SELECTION-SCREEN.
*检查权限
PERFORM FRM_AUTHORITY_CHECK.
FORM FRM_AUTHORITY_CHECK .
DATA: LT_WERKS LIKE TABLE OF T001W WITH HEADER LINE.
ABAP程序选择屏幕输入的权限检查
很多报表要求对选择屏幕输入的公司或者工厂进行权限检查,下面两个是简单的权限检查的例子,一个是单值的检查,一个是对区间的检查,单值的比较简单,区间检查根据不同公司的需求,可能做法稍微有点不同,但是思路是一致的。
1.单值的权限检查
*AT SELECTION-SCREEN.
ID ‘BUKRS’ FIELD LT_WERKS-WERKS.
IF SY-SUBRC <> 0.
CONCATENATE ‘您没有工厂’ LT_WERKS-WERKS ‘的权限,请输入一个您权限范围内的工厂’ INTO L_STR.
EXIT.
提示用户重新输入的:
FORM FRM_AUTHORITY_CHECK .
DATA: BEGIN OF LT_WERKS OCCURS 0 ,
WERKS LIKE T001W-WERKS,
END OF LT_WERKS.
DATA: L_STR.
* ID ’ACTVT’ FIELD ’*’
ID ‘WERKS’ FIELD LT_WERKS-WERKS.
IF SY-SUBRC <> 0.
S_WERKS-SIGN = ‘E’.
S_WERKS-OPTION = ‘EQ’.
ENDIF.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_WERKS FROM T001W WHERE WERKS IN S_WERKS.

ABAP--如何在选择屏幕上输出ALV GRID报表

ABAP--如何在选择屏幕上输出ALV GRID报表
TABLES:t006a.
*@=====================================================================@
*@ 定义结构类型
*@=====================================================================@
*@ 定义宏
*@=====================================================================@
*@=====================================================================@
将其更改我们常用的编程模式。代码见附件,具体说明如下:
选择屏幕也是一个屏幕,与一般创建的屏幕不同的是:它没有PBO、PAI事件,报表程序中的
INITIALIZATION就是选择屏幕的PBO事件,其它事件是选择屏幕的PAI事件。具体事件与程序功能
代码如下:
INITIALIZATION.
EXPORTING
i_buffer_active = space
i_bypassing_buffer = space
CHANGING
it_outtab = gt_result[]
it_fieldcatalog = gt_fcat.
*@=====================================================================@
*@ 执行程序事件
*@=====================================================================@

SAPABAP程序设计基础教程选择屏幕与列表屏幕

SAPABAP程序设计基础教程选择屏幕与列表屏幕
GET事件,即转向数据库中旳下一行数据,格式如下: REJECT. 如:
if spfli-connid = '0017' . REJECT.
endif.
REJECT node_name.语句:中断目前和全部旳同一级别节点旳全 部后续GET事件,执行目前层高层次(即node_name所在那一层) 旳下一种逻辑数据库GET事件,语法如下: REKECT node_name.。逻辑数据库表旳层次构造中,节点名称 node_name是目前GET事件层旳高层节点。
逻辑数据库旳流程终止
STOP语句:结束整个报表旳输出,而且触发END-OF-SELECTION事件 EXIT语句:退出全部旳GET代码块,而且不触发任何旳后续事件,直接
转向基础列表屏幕输出屏幕显示(Basic List Screen)。因 此EXIT旳功能用于退出GET事件块,其功能与STOP基本一 致,只是它不会触发后续事件。 REJECT.语句:中断目前GET事件并转向逻辑数据库同一层旳下一种
[WITH FRAME [TITLE title] ]. …… SELECTION-SCREEN END OF BLOCK < block_name>. 来创建一种选择屏幕。可选项 WITH FRAME [TITLE title] 确 定选择屏幕是否带有边框,而TITLE title选项决定是否在边框上带 有文字阐明。
定制WRITE旳符号输出-4
定制WRITE旳符号输出-5
设置列表旳格式
在ABAP中,缺省旳列表旳行宽是83个字符,缺省旳每页旳行数是6万行,能够通 过在报表申明语句旳背面添加如下子句来变化缺省旳报表旳行数和列数旳设置: REPORT <report_name> LINE-SIZE <columns>

ABAP程序屏幕输出文档问题总汇

ABAP程序屏幕输出文档问题总汇

ABAP创建选择屏幕的详细介绍选择屏幕读者从ABAP开发帮助文档能了解选择屏幕的使用,有本英文教材是<<21天学会ABAP>>,同样本书的目的是让有一定程序基础的读者在三个月内成为ABAP顾问,故本书重点将放在实际业务分析上,因此在此只是汇总下选择屏幕的使用.下面是一个典型的选择屏幕的典型例子.1.设置选择屏幕参数.***begin(end) of block使用屏幕元素逻辑块.SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TITLE1.***定义选择标准,比如那些屏幕子段使用范围,设置为必选或使用内存ID等.SELECT-OPTIONS <seltab> FOR <f> DEFAULT│NO INTERVALS│OBLIGATORY│NO-DISPLAY│MEMORYID...***要在选择屏幕上书写文本使用屏幕注释并在屏幕初始化时赋值.SELECTION-SCREEN COMMENT ...***在屏幕上画线.SELECTION-SCREEN ULINE ...***Begind(end)of line包含的屏幕参数将在同一条直线上.SELECTION-SCREEN BEGIN OF LINE...SELECTION-SCREEN END OF LINE...***设置屏幕位置.SELECTION-SCREEN POSITION...***在应用工具条上创建按钮响应事件SELECTION-SCREEN FUNCTION KEY...***在屏幕上创建按钮.SELECTION SCREEN PUSHBUTTON ...SELECTION-SCREEN END OF BLOCK BK1.INITIALIZATION.***初始化屏幕参数,类似VB的Form_load事件***AT SELECTION-SCREEN <on help(value)-request for field│>.***系统选择屏幕时的过程处理,比如需要判断一些屏幕字段的条件限制如为某些值则***显示error message,程序没有必要浪费时间继续执行下去.***on help-request 可为屏幕字段显示自定义帮助***on value-request可显示建议列表值***可这样理解AT selection-screen相当于PBO.***PERFORM sub_validate_FieldXXX .***选屏后按Enter或F8运行时都会执行.START-OF-SELECTION .***设置内表值,处理没有附加关键字的所有语句.***通常包含在此的Form是在按F8后才开始执行.END-OF_SELECTION .AT USER-COMMAND.***处理用户请求事件,如报表使用ALV格式,通常在call function exporting*** I_CALLBACK_USER_COMMAND = 'USER_COMMAND'***再建立一个子程序form USER_COMMAND USING UCOMM LIKE SY-UCOMMAT LINE-SELECTION.***通常此事件在报表显示后用户在列表中在选择行时触发.如报表使用的是write***就可使用此事件.*** SET PARAMETER ID 'XXX' FIELD XXX.*** call transACtion 'XXX' AND SKIP FIRST SCREEN.TOP-OF-PAGE.*** 显示数据,使用TOP-OF-PAGE是在分页时可将定义的页头页尾在每页显示.*** PERFORM write_page_header(page header在每页都显示).*** PERFORM DISPLAY_ALV_DATA.END-OF-PAGE.下面一个简单的会计凭证显示的实例说明选择屏幕的使用.***这程序只是做演示用,但是包含了常用的选择屏幕技术.将下面的程序copy就可跑.REPORT ZSELECTION NO STANDARD PAGE HEADINGMESSAGE-ID zFIMSG "MEssage ClassLINE-SIZE 255LINE-COUNT 32(3).tables :BKPF,BSEG,S070.DATA:ZBKPF like bkpf occurs 0 ,zwa_bkpf like bkpf.CONSTANTS:P_variant(2) TYPE c VALUE 'WL'.***下面这些屏幕参数和事件没有关系,只是参数集而已.SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE Cond1.SELECT-OPTIONS S_bukrs FOR bkpf-bukrs MEMORY ID BUK.SELECT-OPTIONS S_blart FOR bkpf-blart NO INTERVALS .SELECT-OPTIONS S_belnr FOR bkpf-belnr .SELECT-OPTIONS S_budat FOR bkpf-budat DEFAULT sy-datum.SELECT-OPTIONS S_bldat FOR bkpf-bldat NO INTERVALS NO-EXTENSION. SELECT-OPTIONS S_gjahr FOR bkpf-gjahr MEMORY ID GJR DEFAULT sy-datum(4). SELECT-OPTIONS weekran for s070-SPBUP NO-EXTENSION .SELECTION-SCREEN END OF BLOCK bk1.SELECTION-SCREEN BEGIN OF BLOCK bk2 WITH FRAME TITLE Cond2. SELECTION-SCREEN COMMENT /1(30) COMM1 . "使用屏幕注释SELECTION-SCREEN BEGIN OF LINE ."两单选框将在同一条线上.PARAMETERS pnor RADIOBUTTON GROUP grp1 DEFAULT 'X'."Print normal docPARAMETERS ppark RADIOBUTTON GROUP grp1. "Print parked doc SELECTION-SCREEN END OF LINE .SELECTION-SCREEN END OF BLOCK bk2.***1 初始化参数.INITIALIZATION.Cond1 = '【Condition】'.Cond2 = '【Normal Doc│Parked Doc】'.COMM1 = 'Choose Doc. Type:'. "注释赋初值.***初始公司值,这在有些需要后台跑的程序非常有用,除了使用variant外,在此也可赋初***下面的例子在初始化后公司代码选择了1000和3000排除了2000S_bukrs-low = '1000'.S_bukrs-sign = 'I'. "I->包含,E->排除S_bukrs-option = 'EQ'. "NEAPPEND S_bukrs.S_bukrs-low = '2000'.S_bukrs-sign = 'E'.S_bukrs-option = 'EQ'.APPEND S_bukrs.S_bukrs-low = '3000'.S_bukrs-sign = 'E'.S_bukrs-option = 'EQ'.APPEND S_bukrs.***初始化doc range 从010*******到1000000000s_belnr-low = '010*******'.s_belnr-high = '1000000000'.s_belnr-sign = 'I' .s_belnr-option = 'BT'.append s_belnr.***2 使用sug_get_week后得到所选日期的当前周数,在选择weekrag字段时才触发. ***当你选择weekran字段时.AT SELECTION-SCREEN ON VALUE-REQUEST FOR weekran-low.PERFORM sub_get_week CHANGING weekran-low.AT SELECTION-SCREEN.***判断所选择的公司代码是否有效,通常并不是必须的.***当然你也可将此步省略,直接在START-OF-SELECTION判断.***根据需要可做很多vaid字段的判断.PERFORM SUB_VALIDATE_COMP.***3开始选屏START-OF-SELECTION.Perform SUB_GET_DOC.PERFORM SUB_WRT_DOC.END-OF-SELECTION.***4.分页时显示page header或page footer.TOP-OF-PAGE.perform sub_WRT_HEADER.end-of-page.***5.当点击行并且是点到Document NO.CAll FB03.AT line-selection.Perform sub_line_response.form sub_line_response.Data: ZFLDNAME like DD01L-DOMNAME,ZFLDVALUE like TTREET-TEXT,zwa_bkpf like bkpf.GET CURSOR FIELD ZFLDNAME VALUE ZFLDVALUE .if ZFLDNAME = 'ZWA_BKPF-BELNR' .* READ TABLE Zbkpf into zwa_bkpf WITH KEY BELNR = ZFLDVALUE. * SET PARAMETER ID 'BUK' FIELD zwa_bkpf-BUKRS.* SET PARAMETER ID 'GJR' FIELD zwa_bkpf-GJAHR.* SET PARAMETER ID 'BLN' FIELD zwa_bkpf-BELNR.SET PARAMETER ID 'BLN' FIELD ZFLDVALUE .CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.endif.endform .FORM SUB_GET_DOC.refresh zbkpf .SELECT * FROM bkpf into table ZbkpfWHERE bukrs IN s_bukrsAND belnr IN s_belnrAND gjahr IN s_gjahrAND budat IN s_budat.endform.form sub_wrt_header.FORMAT INTENSIFIED COLOR = 6.WRITE AT: /01 'Finaincial Document List:'(h07).FORMAT COLOR COL_NORMAL ON.FORMAT COLOR COL_HEADING ON.WRITE AT:/01(48) sy-uline.FORMAT COLOR COL_HEADING OFF.FORMAT COLOR OFF.endform.form sub_wrt_doc.uline /1(41).loop at zbkpf into zwa_bkpf.write:/ '│',zwa_bkpf-bukrs,'│',zwa_bkpf-belnr,'│',zwa_bkpf-gjahr,'│',zwa_bkpf-budat,'│'.uline /1(41).endloop.endform.FORM SUB_VALIDATE_COMP.data itab_bukrs like bkpf-bukrs occurs 0 .select bukrs into table itab_bukrsfrom T001where BUKRS in S_bukrs .if itab_bukrs IS INITIAL.Message e002(00) .endif.endform.FORM sub_get_week CHANGING wkran LIKE s070-SPBUP.DATA: l_date LIKE workflds-gkday,l_period LIKE t009b-poper,l_year LIKE t009b-bdatj.***根据选择日期得到当前周数CALL FUNCTION 'F4_DATE'EXPORTINGdate_for_first_month = sy-datumdisplay = ''IMPORTINGselect_date = l_dateEXCEPTIONScalendar_buffer_not_loadable = 1date_after_range = 2date_before_range = 3date_invalid = 4factory_calendar_not_found = 5holiday_calendar_not_found = 6parameter_conflict = 7OTHERS = 8.CALL FUNCTION 'G_PERIOD_GET'EXPORTINGdate = l_date***使用WL variant得到的period是周/年,空则是期间/年.***在CO-PA或做计划时,通常是以周做period的.variant = P_variant "'WL'IMPORTINGperiod = l_periodyear = l_yearEXCEPTIONSledger_not_assigned_to_company = 1period_not_defined = 2variant_not_defined = 3OTHERS = 4.weekran-sign = 'I'.weekran-option = 'EQ'.CONCATENATE l_year l_period+1(2) INTO wkran. endform.。

SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 答辩

SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 答辩

第十章逻辑数据库的特征和维护概览内容逻辑数据库的特征........................................................................................................................... 1逻辑数据库的任务 ..................................................................................................................... 1逻辑数据库的基本特征 .............................................................................................................. 2逻辑数据库的授权检查 .............................................................................................................. 8逻辑数据库的性能 ..................................................................................................................... 8逻辑数据库示例......................................................................................................................... 9创建和维护逻辑数据库................................................................................................................ 11创建逻辑数据库..................................................................................................................... 11处理结构 ................................................................................................................................. 12编辑选择 ................................................................................................................................. 13编辑数据库程序..................................................................................................................... 14编辑选择文本 ........................................................................................................................ 18编辑匹配码选择..................................................................................................................... 19编辑文档 ................................................................................................................................. 21其它编辑选项 ........................................................................................................................ 21编辑数据模型 ........................................................................................................................ 21检查逻辑数据库..................................................................................................................... 22复制逻辑数据库..................................................................................................................... 22删除逻辑数据库..................................................................................................................... 22逻辑数据库是ABAP/4 报表读取和处理数据的方法。

ABAP面试大全

ABAP面试大全

目录之阿布丰王创作1. 报表知识1.1基础知识1.1.1报表事件,有哪些?1.1.1.1过程化事件INITIALIZATIONSTART-OF-SELECTIONEND-OF-SELECTION1.1.1.2选择屏幕事件AT SELECTION-SCREEN OUTPUT选择屏幕PBO事件,每次选择屏幕调用之前触发,在其中进行选择屏幕输出之前的准备工作,如确定屏幕各元素的输出状态。

AT SELECTION-SCREEN选择屏幕最后被触发的事件,用户在选择屏幕上回车、选择某个GUI按钮、功能键或者菜单项时触发AT SELECTION-SCREENON fieldAT SELECTION-SCREEN ON BLOCK blockAT SELECTION-SCREEN ON RADIOBUTTON GROUP group1AT SELECTION-SCREENON seltabAT SELECTION-SCREEN ON END OF seltab,AT SELECTION-SCREEN ON HELP-REQUEST FOR field选择屏幕的POH事件,F1事件,定义字段帮忙AT SELECTION-SCREEN ON VALUE-REQUEST FOR field选择屏幕的POV事件,F4事件,定义字段输入帮忙1.1.1.3在使用到逻辑数据库时,比方HR报表,涉及到的逻辑数据库事件:GET nodeGET node LATE1.1.1.4列表事件TOP-OF-PAGEEND-OF-PAGEAT-LINE-SELECTIONAT-USER-COMMAND用户交互控制,选择某个GUI功能出发,用于交互式报表1.1.1.5AT 事件AT FIRST功能循环时第一条记录时调用AT LAST功能循环中最后一条记录时调用AT NEW 功能循环中当指定字段之前(包含指定字段)的组合和上一条记录纷歧样的时候调用AT END OF功能循环中当指定字段之前(包含指定字段)的组合和下一条记录纷歧样的时候调用AT事件的注意点AT事件中的工作区分歧于LOOP循环的工作区该工作区中位于指定字段后面的值将不会被读取如果需要用到则需重新抽取一次1.1.1.6交互式报表事件AT USER-COMMAND.AT LINE-SELECTIONAT PF-FUNCTION KEY(设置功能键)1.1.2报表选择画面1.1.2.1报表的选择画面上能否添加自定义工具栏?能够添加,通过语句SELECTION-SCREEN FUNCTION KEY n(n 为1至5,最多定义5个)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

很多报表要求对选择屏幕输入的公司或者工厂进行权限检查,下面两个是简单的权限检查的例子,一个是单值的检查,一个是对区间的检查,单值的比较简单,区间检查根据不同公司的需求,可能做法稍微有点不同,但是思路是一致的。

1.单值的权限检查
*AT SELECTION-SCREEN.
*检查权限
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT ‘F_SKA1_BUK’
ID ‘ACTIVITY’ FIELD ‘01′
ID ‘BUKRS’ FIELD P_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE ID ‘00′ TYPE ‘E’ NUMBER ‘001′ WITH ‘你没有公司代码’
P_BUKRS ‘的权限’.
ENDIF.
2.区间多值的检查,这种检查有些客户要求是删除没有权限的那些数据,而有些客户是要求直接提示用户让其重输入
直接删除的:
AT SELECTION-SCREEN.
*检查权限
PERFORM FRM_AUTHORITY_CHECK.
FORM FRM_AUTHORITY_CHECK .
DATA: LT_WERKS LIKE TABLE OF T001W WITH HEADER LINE.
IF S_EBELN IS INITIAL.
IF S_WERKS IS INITIAL OR S_EKORG IS INITIAL OR S_AEDAT IS INITIAL.
MESSAGE ‘工厂、创建时间和采购组织是必输字段’ TYPE ‘E’.
ENDIF.
ENDIF.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_WERKS FROM
T001W WHERE WERKS IN S_WERKS.
LOOP AT LT_WERKS.
AUTHORITY-CHECK OBJECT ‘M_BEST_WRK’
* ID ’ACTVT’ FIELD ’*’
ID ‘WERKS’ FIELD LT_WERKS-WERKS.
IF SY-SUBRC <> 0.
S_WERKS-SIGN = ‘E’.
S_WERKS-OPTION = ‘EQ’.
S_WERKS-LOW = LT_WERKS-WERKS.
S_WERKS-HIGH = ”.
APPEND S_WERKS.
ENDIF.
ENDLOOP.
ENDFORM. “ FRM_AUTHORITY_CHECK
提示用户重新输入的:
FORM FRM_AUTHORITY_CHECK .
DATA: BEGIN OF LT_WERKS OCCURS 0 ,
WERKS LIKE T001W-WERKS,
END OF LT_WERKS.
DATA: L_STR.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_WERKS FROM
T001W WHERE WERKS IN S_WERKS.
LOOP AT LT_WERKS.
AUTHORITY-CHECK OBJECT ‘M_BANF_BWK’
ID ‘BUKRS’ FIELD LT_WERKS-WERKS.
IF SY-SUBRC <> 0.
CONCATENATE ‘您没有工厂’ LT_WERKS-WERKS ‘的权限,请输入一个您权限范围内的工厂’ INTO L_STR.
EXIT.
ENDIF.
ENDLOOP.
IF L_STR IS NOT INITIAL.
MESSAGE L_STR TYPE ‘E’.
ENDIF.
ENDFORM. “ FRM_AUTHORITY_CHECK。

相关文档
最新文档