如何设计折叠样式的屏幕(类似MIGO的屏幕)

本文介绍如何在SAP应用中设计折叠样式的屏幕,通过使用七个屏幕(包括主屏幕、信息屏幕及不同状态的子屏幕)实现上下部分的展开与收起功能。详细解释了各个屏幕的设计逻辑和实现步骤。
sap的应用中,我们有时会需要设计折叠样式的屏幕(类似MIGO的屏幕),以缓解屏幕区域的太小的矛盾。折叠样式屏幕实现的基本原理是用子屏幕根据用户的输入调用不同的子屏幕来实现的。现在以放置两个子屏幕的折叠式的屏幕来说明实现的步骤。为了实现两个子屏幕的折叠式的屏幕需要设计7个屏幕(一个主屏幕,两个信息屏幕,一个全展示子屏幕,一个下半部展示子屏幕,一个上半部展示子屏幕,一个下全关闭子屏幕)。具体步骤如下:

Step 1:设计一个主屏幕,放置一个子屏幕范围

屏幕的逻辑流为:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN sa_2200_1 INCLUDING sy-repid '2220'.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

CALL SUBSCREEN sa_2200_1.

 

MODULE USER_COMMAND_0100 INPUT.

  DATA lv_return_code TYPE i.

 

  CLEAR save_ok.

  save_ok = ok_code.

  CLEAR ok_code.

  CLEAR gv_processed.

  CALL METHOD cl_gui_cfw=>dispatch

    IMPORTING

      return_code = lv_return_code.

  CHECK lv_return_code = cl_gui_cfw=>rc_noevent.

  CASE save_ok.

    WHEN 'PB_2220_1' OR 'PB_2220_2' OR 'PB_2240_1' OR 'PB_2240_2' OR

         'PB_2260_1' OR 'PB_2260_2' OR 'PB_2280_1' OR 'PB_2280_2'.

      PERFORM set_the_col_area_screen.

    WHEN others.

*     action code from the menus will be processed here.

      PERFORM get_screen_number USING save_ok.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

 

*&---------------------------------------------------------------------*

*&      Form  set_the_col_area_screen

*&---------------------------------------------------------------------*

*       This subroutine is used to set the subscreen for the collapsible

*       areas

*----------------------------------------------------------------------*

FORM set_the_col_area_screen .

  CASE save_ok.

    WHEN 'PB_2220_1' OR 'PB_2260_2'. "打开下半部展开的子屏幕

      gv_subscreen_2200_1  =  2280.

    WHEN 'PB_2220_2' OR 'PB_2260_1'. "打开上半部展开的子屏幕

      gv_subscreen_2200_1  =  2240.

    WHEN 'PB_2240_1' OR 'PB_2280_2'. "打开全关闭的子屏幕

      gv_subscreen_2200_1  =  2260.

    WHEN 'PB_2280_1' OR  'PB_2240_2'. "打开全打开的子屏幕

      gv_subscreen_2200_1  =  2220.

  ENDCASE.

ENDFORM.                    " set_the_col_area_screen

 

 

Step 2: 最底层的两个信息子屏幕

屏幕(2290)

逻辑流

PROCESS BEFORE OUTPUT.

*

PROCESS AFTER INPUT.

 

屏幕(2230)

逻辑流

PROCESS BEFORE OUTPUT.

*

PROCESS AFTER INPUT.

 

Step 3: 定义全展示子屏幕 (2220)

第一个按钮的功能码:PB_2220_1

第一个按钮的功能码:PB_2220_2

屏幕逻辑流

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN SA_2220_1 including sy-repid '2290'.

CALL SUBSCREEN SA_2220_2 including sy-repid '2300'.

*

PROCESS AFTER INPUT.

CALL SUBSCREEN SA_2220_1.

CALL SUBSCREEN SA_2220_2.

 

Step 4:定义上半部展开的子屏幕(2240)

第一个按钮的功能码:PB_2240_1

第一个按钮的功能码:PB_2240_2

屏幕逻辑流

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN SA_2240_1 including sy-repid '2290'.

*

PROCESS AFTER INPUT.

CALL SUBSCREEN SA_2240_1.

 

Step 5:定义下半部展开的子屏幕(2280)

第一个按钮的功能码:PB_2280_1

第一个按钮的功能码:PB_2280_2

屏幕逻辑流

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN SA_2280_2 including sy-repid '2300'.

*

PROCESS AFTER INPUT.

CALL SUBSCREEN SA_2280_2.

 

Step 6:定义全关闭的子屏幕(2260)

第一个按钮的功能码:PB_2260_1

第一个按钮的功能码:PB_2260_2

屏幕逻辑流

PROCESS BEFORE OUTPUT.

*

PROCESS AFTER INPUT.

<think>好的,我现在需要帮助用户了解MIGO事务代码的屏幕增强功能使用说明。首先,用户提到了参考内容里的工厂特定材料状态字段,这可能与MIGO中的字段增强有关。不过,用户的问题更广泛,是关于MIGO屏幕增强的整体说明。 首先,我应该回忆SAP中如何进行屏幕增强。通常,SAP的增强方式有User Exit、BADI、Enhancement Framework等。MIGO作为复杂的事务代码,可能涉及到这些技术。需要确认MIGO可用的增强点,比如程序名、屏幕号,以及常见的增强方法。 接下来,用户可能需要步骤指导。例如,使用增强点追加自定义字段,或者通过BADI来添加业务逻辑。可能需要分步骤说明,比如查找增强点、创建增强项目、编写代码、激活等。同时,可能涉及屏幕字段的校验、默认值设置,或者自定义子屏幕的添加。 另外,要注意权限和传输请求的问题,因为修改需要传输到生产系统。还要提醒用户测试的重要性,避免影响现有流程。可能还需要举例说明,比如添加一个自定义字段到MIGO界面,并如何在保存时校验该字段。 最后,生成相关问题,帮助用户进一步了解。例如,如何找到MIGO的增强点,或者增强后如何调试。需要确保信息准确,参考SAP官方文档或常见实施方法,避免错误。</think>### MIGO屏幕增强功能使用说明 在SAP系统中,$MIGO$(物料移动过账)的屏幕增强功能主要通过**增强点(Enhancement Points)**或**隐式增强**实现,用于在标准事务中添加自定义字段或逻辑。以下是具体步骤: --- #### 1. **确定增强点** - **程序与屏幕定位**: $MIGO$ 的主程序为 `RM07MMBD`,屏幕号为 `9000`。用户可通过 `/H` 调试模式或事务代码 `SE80` 查找具体屏幕元素[^1]。 - **关键增强点**: - `EXIT_SAPMM07M_XXX` 系列用户出口(User Exits) - BAdI(Business Add-In) `MB_MIGO_BADI` --- #### 2. **通过隐式增强添加字段** - **步骤**: 1. 使用事务代码 `SE80` 打开程序 `RM07MMBD`。 2. 定位到屏幕 `9000`,右键选择 **Enhancement → Create Enhancement**。 3. 在屏幕布局中添加自定义字段(如工厂特定状态字段),并绑定数据字典(如 `ZSTRU_MIGO`)。 ```abap DATA: z_custom_field TYPE zstru_migo-zfield. ``` 4. 激活增强并生成包含文件(Include Program)。 --- #### 3. **使用BAdI添加逻辑** - **BAdI `MB_MIGO_BADI`** 支持在保存前校验或填充字段: ```abap METHOD if_ex_mb_migo_badi~check_before_save. IF cs_mseg-zfield IS INITIAL. MESSAGE '自定义字段不能为空' TYPE 'E'. ENDIF. ENDMETHOD. ``` --- #### 4. **屏幕字段校验与默认值** - 在增强项目中,通过 `PBO`(Process Before Output)和 `PAI`(Process After Input)事件控制字段行为: ```abap MODULE customize_pbo OUTPUT. LOOP AT SCREEN. IF screen-name = 'Z_FIELD'. screen-required = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE. ``` --- #### 5. **注意事项** - **权限与传输**:需申请 `S_DEVELOP` 权限,并通过传输请求(Transport Request)发布变更。 - **兼容性**:增强需兼容SAP版本升级,避免使用非标准表或直接修改SAP代码。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值