房产网站排名,wordpress怎样发邮件,版式设计,公司网站升级改版方案在上一篇博客ABAP DIALOG屏幕编程1中阐述了DIALOG、PBO、PAI的概念并且对常用页面元素怎么用进行了演示。在这一篇博文中会讲述怎么添加下拉框、搜索帮助#xff0c;怎么创建表控件、屏幕跳转等。会用到上一篇里面的内容。
有关程序包含文件结构如下。 一、响应用户指令
如上…在上一篇博客ABAP DIALOG屏幕编程1中阐述了DIALOG、PBO、PAI的概念并且对常用页面元素怎么用进行了演示。在这一篇博文中会讲述怎么添加下拉框、搜索帮助怎么创建表控件、屏幕跳转等。会用到上一篇里面的内容。
有关程序包含文件结构如下。 一、响应用户指令
如上一篇博文中提到的因为有时候会涉及到清空指令的情况为了保证程序正常运行我们一般不直接使用SY-UCOMM这个系统变量处理用户指令而是用OK_CODE(自定义的变量名)来接收用户指令进行处理。
1、声明全局变量OK_CODE
在zvia_screen_d01中添加变量声明TYPE SY-UCOMM。 2、 在屏幕的元素清单处添加变量
不知道怎么展开的点击显示对象列表。有多个屏幕可以使用同一个变量名只需要声明一次。但记住需要在每个屏幕的元素清单添加变量。 3、演示点击按钮操作
上篇文章演示过给按钮添加功能码的操作。给按钮添加功能码的方法与 HTML 中的 id 或 name 属性相似主要是通过 屏幕Dynpro设计 和 ABAP 代码中的命令 来绑定按钮的功能。在 SAP GUI 中按钮的功能码用于定义按钮点击时的行为。
a、这里我们画了一个按钮并给它的功能码设置成BUTTON。 b、因为点击功能码是用户输入的一种所以对用户指令的响应应该放在PAI中。
点击到屏幕的逻辑流处可以看到注释的地方存在一个处理用户指令的模块解开注释双击创建。 因为是PAI模块根据之前的模块划分给它放在zvia_screen_i01中。 c、使用CASE来对OK_CODE进行分情况操作
WHEN 操作名这里是按钮的功能码. 需要进行的处理/PERFORM子例程/不处理.
MODULE user_command_0100 INPUT.CASE ok_code.WHEN BUTTON.与按钮对应的功能码保持一致MESSAGE s013(zvia_dialog_msg).之前创建的消息类WHEN 按钮名.PERFORM OR 其他操作。WHEN OTHERS.ENDCASE.
ENDMODULE.
点击按钮后左下角显示信息。这里可以进行更复杂的处理最好使用子例程使代码更加简洁、结构更清楚。 4、菜单栏的指令响应
菜单栏应该在屏幕显示之前就进行定义所以应该在PBO模块中进行声明。
a、点击到屏幕的逻辑流处可以看到注释的地方存在一个定义菜单栏的模块解开注释双击创建。 因为是PBO模块根据之前的模块划分给它放在zvia_screen_o01中。 b、在每次通过以上步骤创建的PBO模块时都会出现如下被注释的两句话。解开注释填写名称双击创建。 MODULE status_0100 OUTPUT.SET PF-STATUS PFSTATUS01.SET TITLEBAR TITLEBAR01.
ENDMODULE. c、双击PFSTATUS01创建菜单栏。这里的标准工具条的命名是在进行处理的时候会用到的可以直接使用标准的进行定义也可以自己定义。填写功能码需要用到什么就给什么按钮填功能码不能相同建议按照常识或者SAP的习惯定义按钮。记得激活。
使用标准的附加-调整模板 程序SAPLKKBL 状态STANDARD_FULLSCREEN。 d、双击 TITLEBAR01填写标题。
e、两者创建完成之后的页面如下。这里我是直接使用了标准的但实际上不需要这么多按钮可以自己添加。填写对应的功能键的功能码之后就能亮起来了但是现在点击是没有用的我们还没有实现功能。 f、实现功能。
使用标准的的按钮的功能码如下。 跟上面的按钮一样。我们在user_command_0100模块进行功能实现。这里我们只是演示绑定过程具体实现的功能自己进行书写。比如我们这里实现点击保存按钮。看到定义的功能码是DATA_SAVE如果自己定义的按照自定义的进行。
这里因为一般我们的保存操作涉及到很多语句所以创建子例程编写。双击创建。
MODULE user_command_0100 INPUT.CASE ok_code.WHEN BUTTON.与按钮对应的功能码保持一致MESSAGE s013(zvia_dialog_msg).之前创建的消息类 TCODESE91WHEN DATA_SAVE.PERFORM frm_data_save.WHEN OTHERS.ENDCASE.
ENDMODULE.
保存至 zvia_screen_f01中。 在子例程里面进行处理。这里其他部分都注释掉了只留一个MESSAGE显示尝试点击看能否响应。
*---------------------------------------------------------------------*
* Form frm_data_save
*---------------------------------------------------------------------*
* 保存数据子例程
*---------------------------------------------------------------------*
FORM frm_data_save .数据判断、处理数据库处理
* IF sy-subrc 0.如果成功则MESSAGE s014(zvia_dialog_msg).
* ELSE.失败的话
* MESSAGE e015(zvia_dialog_msg).
* ENDIF.
ENDFORM.
点击之后显示消息。 二、添加下拉框
ABAP下拉框可替代多个RADIO不需要画多个单选进行分组。有Listbox和Listbox with key两种。
1、下拉框分类
a、Listbox
1用途 Listbox 主要用于显示一组 简单的文本项用户可以从这些文本中选择一个。
2显示内容 在 Listbox 中列出的每一项通常只显示文本不包含与之关联的其他信息。
3返回值 当用户做出选择时Listbox 仅返回所选项的 索引值即该选项在列表中的位置从 0 开始。这意味着你只能通过索引来识别选中的项。
b、Listbox with key
1用途 Listbox with Key 用于显示带有 文本和值Key对 的列表。在这种情况下每一项都不仅包含 显示的文本还包含与之关联的 键值Key。用户选择一个文本项时系统返回的是这个项的 键值而不是索引。
2显示内容 显示内容与 Listbox 类似都是文本列表但每项文本背后都有一个与之关联的键Key
3返回值 当用户选择某一项时Listbox with Key 返回的是该选项对应的 键值而不仅仅是索引。这个键值通常是实际存储或用于处理的标识符。 举例我们在表ZVIA_STU中存有学生信息现在依据学生性别属性做下拉框。
2、使用表中的字段作为选项
a、先在变量处声明类型为表的结构体和内表。
先激活一定要先激活后面才可以读到数据。 b、在屏幕布局处点击如下图按钮——字典/程序字段窗口。 点击从程序中获取这里如果获取不到的话请检查变量定义包含程序有没有激活。 选中对应字段点击确认这里可以看到后面有文本/复选框/单选的选项我们选择文本。 在需要位置拖选出范围。双击点击下拉的下拉框可以看到有Listbox和Listbox with key两种 。我们这里需要的返回值是代表性别的F或者M所以选择Listbox with key。 完成之后可以看到出现下拉框按钮。因为取的值就是数据库里面的所以这里不需要再赋值。 3、通过内表给下拉框值
用函数VRM_SET_VALUES
a、设置下拉框应该在屏幕显示之前所以应该放在PBO中。双击创建模块具体的实现放在zvia_screen_o01中。 b、具体的代码如下先定义一个类型为vrm_values的内表和类型为它的结构体。往内表中插入选项一个值为key一个为对应的text。调用函数 VRM_SET_VALUES 传入参数 id 是屏幕上的输入框对应的名称如图所示一定要保持一致才可以关联起来。另一个传入参数是定义的选项内表。 *---------------------------------------------------------------------*
* Module SET_SEX_LIST OUTPUT
*---------------------------------------------------------------------*
* 设置性别下拉列表 用函数VRM_SET_VALUES
*---------------------------------------------------------------------*
MODULE set_sex_list OUTPUT.DATA : lt_sex TYPE vrm_values,函数参数类型ls_sex LIKE LINE OF lt_sex.其中行项目的类型CLEAR lt_sex.ls_sex-key F.放在数据库的key值ls_sex-text 女.描述值APPEND ls_sex TO lt_sex.插入内表ls_sex-key M.放在数据库的key值ls_sex-text 男.描述值APPEND ls_sex TO lt_sex.CALL FUNCTION VRM_SET_VALUESEXPORTINGid GS_STU-SEX 屏幕上的字段名values lt_sex.将存放list的内表作为数据传入
ENDMODULE.
显示的效果 c、后续需要获取其值直接用输入框的名称即可。 三、添加搜索帮助
添加搜索帮助一共有两种方式。
1若之间对使用的字段或者创建过专门的搜索帮助直接使用。
2调用函数F4IF_INT_TABLE_VALUE_REQUEST创建搜索帮助。
下面将分别演示怎么使用。
1、使用之前创建过的搜索帮助。
先建一个输入框双击在搜索帮助处填写创建过的搜索帮助名。 完成之后会有个小角标。 完成之后可以看到搜索帮助按钮。 2、使用函数创建搜索帮助。
使用PAI中的关键字PROCESS ON VALUE-REQUEST。
FILED后的字段需要和屏幕上对应的字段保持一致。双击创建。放在zvia_screen_i01里。
PROCESS AFTER INPUT.
PROCESS ON VALUE-REQUEST.用于响应搜索帮助的过程 FIELD gv_stu-stuid MODULE zstuid_f4.给学号添加搜索帮助 zvia_screen_i01中调用函数F4IF_INT_TABLE_VALUE_REQUEST。
这里好像有点问题但是相同的代码在其他屏幕能够实现在这个屏幕实现不了要是发现错误麻烦私信我一下。
MODULE zstuid_f4 INPUT.
* 1、得到学生ID的数据 ID 和 NAME *TYPES : BEGIN OF ty_stuid,stuid TYPE zde_via_stuid,stuname TYPE zde_via_stuname,END OF ty_stuid.
* 2、用类型定义一个内表 *DATA : lt_stuid TYPE TABLE OF ty_stuid.
* 3、将所有学生IDNAME信息查询出来放到内表里等会函数用 *SELECT stuid stunameFROM zvia_stuINTO TABLE lt_stuid.
* 4、调用函数 F4IF_INT_TABLE_VALUE_REQUEST *CALL FUNCTION F4IF_INT_TABLE_VALUE_REQUESTEXPORTINGretfield STUID 显示于屏幕的主字段内表中的字段value_org S 必要的 表示数据来源是内表dynpprog sy-cprog 调用的程序dynpnr sy-dynnr 调用的屏幕dynprofield GS_STU-STUID 给屏幕上的哪个字段添加搜索帮助 GV_TRAIN-ZCODEwindow_title 学生学号的搜索帮助TABLESvalue_tab lt_stuid.IF sy-subrc 0.MESSAGE e006(zvia_dialog_msg).ENDIF.
ENDMODULE. 四、屏幕跳转
屏幕跳转常和菜单栏里的返回、退出键或者屏幕中的其他查询页面关联。
一般一个屏幕默认的下个屏幕是自己。在屏幕属性处可以看到。可以更改。 1、LEAVE TO SCREEN 屏幕编号。
LEAVE TO SCREEN 屏幕编号 用于跳转到指定的屏幕编号。该命令在当前屏幕Dynpro上执行后系统会立即跳转到另一个指定的屏幕。
若是使用 LEAVE TO SCREEN 0.会跳转至当前屏幕序列的第一个屏幕。 2、SET SCREEN 屏幕编号. LEAVE SCREEN。
SET SCREEN 用于设置目标屏幕的编号但不会立即跳转。LEAVE SCREEN 用来离开当前屏幕并跳转到目标屏幕。通常这两个命令一起使用先使用 SET SCREEN 设置目标屏幕再用 LEAVE SCREEN 执行跳转。两者一起使用相当于LEAVE TO SCREEN 屏幕编号。
因为默认下一个屏幕是自己若不使用SET SCREEN只使用LEAVE SCREEN会跳转至当前屏幕无任何输入的初始状态也可以直接在屏幕属性处进行更改。 3、CALL SCREEN 屏幕编号。
CALL SCREEN 用于显示指定的屏幕编号且会在当前屏幕的上下文中启动目标屏幕。调用后立即跳转至目标屏幕控制会传递到目标屏幕且该屏幕被视为一个嵌套屏幕Subscreen。
使用CALL SCREEN时会开启一个新的屏幕序列而同时存在的屏幕序列是有限制的所以一般不建议使用。 4、LEAVE PROGRAM。
LEAVE PROGRAM 用于退出当前的程序或事务。它不仅会结束当前屏幕也会结束整个 ABAP 程序的执行通常会回到 SAP GUI 或返回到上一个程序或事务。 5、CALL TRANSACTION 事务码。
CALL TRANSACTION 允许你在当前程序中启动另一个事务跳转至该事务码的界面。这与屏幕跳转不同它是在后台启动另一个事务的处理并将控制权交给新事务。 6、CALL DIALOG 对话框。
CALL DIALOG 用于调用一个对话框如一个自定义的弹出窗口。它并不是标准的屏幕跳转而是显示一个对话框作为弹出窗口可以在当前屏幕的上下文中执行额外的操作。 7、在代码中的实现。
比如在菜单栏我们需要进行返回的时候。这里第三个按钮对应的功能码的实现。