在选择屏幕子屏幕中禁用字段

2020-08-14 01:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我当前正在创建一个模块池程序,该程序使用子屏幕作为选择屏幕。 目前,我有3个子屏幕:子屏幕1-单选按钮组
子屏幕2-手动输入数据
子屏幕3-上传excel文件路径

我要根据子屏幕1中的选择来禁用子屏幕2和3中的字段。有什么方法可以执行此操作? 我尝试将其输入到PBO和PAI中,但是似乎没有任何效果。

 IF p_manual ='X'。  "如果用户选择手动输入
   环视屏幕。
       如果屏幕名称='p_vers'。
         屏幕输入='1'。
         修改屏幕。
       万一。
       如果屏幕名称='p_file'。
         屏幕输入='0'。
         修改屏幕。
       万一。
       结局。

     ELSEIF p_excel ='X'。  "如果用户要上传文件
     环视屏幕。
       如果屏幕名称='p_vers'。
         屏幕输入='0'。
         修改屏幕。
       万一。
       如果屏幕名称='p_file'。
         屏幕输入='1'。
         修改屏幕。
       万一。
     结局。
     ENDIF。

我用于选择屏幕的代码是:

屏幕9210的" SELECTED-SCREEN"开始于用户。
 带有标题标题文本030的b3块的选择屏幕开始。  "上传选项
 参数:
   p_manual RADIOBUTTON GROUP grp3,"手动上传
   p_excel RADIOBUTTON GROUP grp3默认值'X'。  " excel/平面文件上传
 块b的选择屏幕结束。
 屏幕的选择屏幕结束9210。

 屏幕9230的选择屏幕作为订阅者开始。
 带标题标题文本050的b5块的选择屏幕开始。  "手动选择
 参数:
   p_vers TYPE zbi_fin_consol-version MODIF ID upm,"公司代码
   p_year TYPE zbi_fin_consol-zyear MODIF ID更新。  "顾客
 选择选项:
   s_month FOR zbi_fin_consol-zmonth强制性修改ID upm。
 选择屏幕结束b5。
 屏幕9230的选择屏幕结束。

 屏幕9240的"选择屏幕"开始为用户。
 带标题标题文本060的b6块的选择屏幕开始。  " excel上传
 参数:
   p_file TYPE rlgrap-filename MODIF ID upf," filepath
   p_test RADIOBUTTON GROUP grp5 MODIF ID upf,"测试文件
   p_upload RADIOBUTTON GROUP grp5修改ID upf。  "上传数据

 选择屏幕结束b6。
 屏幕9240的选择屏幕结束。

我在屏幕上显示的PBO和PAI代码是:

输出前的过程。
  模块状态_9100。
 调用包括sy-repid'9210'的子屏幕area_option。
 调用子屏幕area_manual,包括sy-repid'9230'。
 呼叫子画面area_excel,包括sy-repid'9240'。
 模块Modify_screen_9200_pbo。

 输入后的过程。
 在EXIT-COMMAND处取消模块。
  模组USER_COMMAND_9200。
 调用子屏幕area_option。
 调用子屏幕area_manual。
 调用子屏幕area_excel。
 模块Modify_screen_9200_pai。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我当前正在创建一个模块池程序,该程序使用子屏幕作为选择屏幕。 目前,我有3个子屏幕:子屏幕1-单选按钮组
子屏幕2-手动输入数据
子屏幕3-上传excel文件路径

我要根据子屏幕1中的选择来禁用子屏幕2和3中的字段。有什么方法可以执行此操作? 我尝试将其输入到PBO和PAI中,但是似乎没有任何效果。

 IF p_manual ='X'。  "如果用户选择手动输入
   环视屏幕。
       如果屏幕名称='p_vers'。
         屏幕输入='1'。
         修改屏幕。
       万一。
       如果屏幕名称='p_file'。
         屏幕输入='0'。
         修改屏幕。
       万一。
       结局。

     ELSEIF p_excel ='X'。  "如果用户要上传文件
     环视屏幕。
       如果屏幕名称='p_vers'。
         屏幕输入='0'。
         修改屏幕。
       万一。
       如果屏幕名称='p_file'。
         屏幕输入='1'。
         修改屏幕。
       万一。
     结局。
     ENDIF。

我用于选择屏幕的代码是:

屏幕9210的" SELECTED-SCREEN"开始于用户。
 带有标题标题文本030的b3块的选择屏幕开始。  "上传选项
 参数:
   p_manual RADIOBUTTON GROUP grp3,"手动上传
   p_excel RADIOBUTTON GROUP grp3默认值'X'。  " excel/平面文件上传
 块b的选择屏幕结束。
 屏幕的选择屏幕结束9210。

 屏幕9230的选择屏幕作为订阅者开始。
 带标题标题文本050的b5块的选择屏幕开始。  "手动选择
 参数:
   p_vers TYPE zbi_fin_consol-version MODIF ID upm,"公司代码
   p_year TYPE zbi_fin_consol-zyear MODIF ID更新。  "顾客
 选择选项:
   s_month FOR zbi_fin_consol-zmonth强制性修改ID upm。
 选择屏幕结束b5。
 屏幕9230的选择屏幕结束。

 屏幕9240的"选择屏幕"开始为用户。
 带标题标题文本060的b6块的选择屏幕开始。  " excel上传
 参数:
   p_file TYPE rlgrap-filename MODIF ID upf," filepath
   p_test RADIOBUTTON GROUP grp5 MODIF ID upf,"测试文件
   p_upload RADIOBUTTON GROUP grp5修改ID upf。  "上传数据

 选择屏幕结束b6。
 屏幕9240的选择屏幕结束。

我在屏幕上显示的PBO和PAI代码是:

输出前的过程。
  模块状态_9100。
 调用包括sy-repid'9210'的子屏幕area_option。
 调用子屏幕area_manual,包括sy-repid'9230'。
 呼叫子画面area_excel,包括sy-repid'9240'。
 模块Modify_screen_9200_pbo。

 输入后的过程。
 在EXIT-COMMAND处取消模块。
  模组USER_COMMAND_9200。
 调用子屏幕area_option。
 调用子屏幕area_manual。
 调用子屏幕area_excel。
 模块Modify_screen_9200_pai。
付费偷看设置
发送
6条回答
黑丝骑士
1楼 · 2020-08-14 01:45.采纳回答

你好,伊林谭,

您正在定义MODIF ID,但未使用它。

您可以执行以下操作:

带有框架标题文本001的b1块的选择屏幕开始。
   参数:rb1 RADIOBUTTON GROUP rbg默认'X'用户命令uc,
               rb2 RADIOBUTTON GROUP rbg。
 块b的选择屏幕结束。

 带有标题标题文本002的b2块的选择屏幕开始。
   参数p1类型i修改ID 001。
   参数p2类型i修改ID 001。
 b2块的选择屏幕结束。

 带有标题标题文本003的b3块的选择屏幕开始。
   参数p3类型i修改ID 002。
 块b的选择屏幕结束。

 选择屏幕输出时。
   环视屏幕。
     案例" X"。
       当rb1。
         CASE屏幕组1。
           何时001。
             屏幕激活= 1。
           当002。
             屏幕有效= 0。
         结束。
       当rb2。
         CASE屏幕组1。
           何时001。
             屏幕有效= 0。
           当002。
             屏幕有效= 0。
         结束。
     结束。
     修改屏幕。
   结局。
 

在此示例中,我们将参数字段的控制权提供给用户。 当他选择单选按钮rb1时,我们仅显示p1,p2字段,而当他选择单选按钮rb2时,我们显示p3字段。 请注意,组件screen-group1带有每个字段的MODIF ID。

在该示例中,我们使用屏幕激活组件来隐藏字段。 如果您需要采取其他措施,而不是隐藏字段,则可以尝试使用屏幕结构。 您可以使用其他组件来满足您的需求。 在此处找到所有选项。

最后的笔记。 不要忘记,在声明单选按钮时的用户命令语句。 烦我一会儿...:-)

希望有帮助,

乔治

天桥码农
2楼-- · 2020-08-14 01:42

嘿,很高兴为您提供帮助!

悠然的二货
3楼-- · 2020-08-14 01:32

您好 Yi Lin Tan

SELECTION-SCREEN PBO事件在定义了选择屏幕的报表的AT SELECTION-SCREEN OUTPUT事件中处理。 您需要执行相同的操作。

在"选择屏幕输出"中。
   如果p_manual = abap_true。
     在这里进行一些屏幕修改
   ENDIF。

此外,您的LOOP AT屏幕逻辑中的字段名称应为大写。

 IF p_manual ='X'。  "如果用户选择手动输入
   环视屏幕。
       如果屏幕名称='P_VERS'。  " <-大写
         屏幕输入='1'。
         修改屏幕。
       万一。
       如果屏幕名称='P_FILE'。  " <-大写
         屏幕输入='0'。
         修改屏幕。
       万一。
       ENDLOOP。
亲切的问候,
Mateusz
Tong__Ming
4楼-- · 2020-08-14 01:47

嗨,Satish,

感谢您的回复。 这里的问题是子屏幕被定义为选择dynpro,因此无法编辑其PBO。.

Tong__Ming
5楼-- · 2020-08-14 01:36

Yi Lin Tan

在处理模块池编程时,非常重要的一点是您了解与 LINK

您期望的是, 屏幕元素,对屏幕元素的任何更改都必须在该屏幕的PBO中处理,因为更改必须在显示屏幕之前反映出来。

简单来说:

您 在屏幕1中进行更改。

更改的值应在全局变量中可用。

基于此值,您必须在子屏幕的PBO中进行编码 2。要在其中查看更改。

注意!

宇峰Kouji
6楼-- · 2020-08-14 01:55

1)在大写字母中指示屏幕字段名称。

2)LOOP AT 在PBO中应使用SCREEN 字段所在的屏幕的位置。 对于选择屏幕的字段,在事件"选择屏幕输出"中定义了PBO。

在"选择屏幕输出"中。
   案例sy-dynnr。
     当为" 9230"时。 手动输入
       环视屏幕。
         ...
       结局。
     当" 9240"时。  " excel上传
       环视屏幕。
         ...
       结局。
   结束。

一周热门 更多>