abap选择屏幕上的button

本文介绍了一个实用的ABAP示例,在SAP系统的选择屏幕上通过弹出包含多个按钮的小窗体来处理不同的事务。文章提供了完整的代码实现,并解释了如何根据不同按钮的选择执行相应的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、背景:近期在看sap的一些abapDemo,看了一个比較好用的功能。分享一下。希望对用到的兄弟有帮助,主要功能是:在选择屏幕上弹出一个小窗体。放一些button在上面,触发不同button,会处理不同事务。例如以下图所看到的:



2、代码例如以下:

REPORT ZTEST_SEL_SCREEN_PUSHBUTTON.

TABLES SSCRFIELDS.

DATA FLAG(1TYPE C.

SELECTION-SCREEN:
  BEGIN OF SCREEN 500 AS WINDOW TITLE TIT,
    BEGIN OF LINE,
      PUSHBUTTON 2(10) BUT1 USER-COMMAND CLI1,
      PUSHBUTTON 12(10TEXT-020 USER-COMMAND CLI2,
    END OF LINE,
    BEGIN OF LINE,
      PUSHBUTTON 2(10) BUT3 USER-COMMAND CLI3,
      PUSHBUTTON 12(10TEXT-040 USER-COMMAND CLI4,
    END OF LINE,
  END OF SCREEN 500.

AT SELECTION-SCREEN.

  MESSAGE I888(SABAPDEMOS) WITH TEXT-001 SSCRFIELDS-UCOMM.
  CASE SSCRFIELDS-UCOMM.
    WHEN 'CLI1'.
      FLAG = '1'.
    WHEN 'CLI2'.
      FLAG = '2'.
    WHEN 'CLI3'.
      FLAG = '3'.
    WHEN 'CLI4'.
      FLAG = '4'.
  ENDCASE.

START-OF-SELECTION.

  TIT  = 'FOUR BUTTONS'.
  BUT1 = 'BUTTON 1'.
  BUT3 = 'BUTTON 3'.

  CALL SELECTION-SCREEN 500 STARTING AT 10 10.

  CASE FLAG.
    WHEN '1'.
      WRITE / 'BUTTON 1 WAS CLICKED'.
    WHEN '2'.
      WRITE / 'BUTTON 2 WAS CLICKED'.
    WHEN '3'.
      WRITE / 'BUTTON 3 WAS CLICKED'.
    WHEN '4'.
      WRITE / 'BUTTON 4 WAS CLICKED'.
    WHEN OTHERS.
      WRITE / 'NO BUTTON WAS CLICKED'.
  ENDCASE.

ABAP(Advanced Business Application Programming,SAP的一种编程语言)中,如果你想在从选择屏幕跳转到ALV(Adaptive Layout Viewer,一种基于列表的用户界面控件)输出后添加返回按钮,可以按照以下步骤操作: 1. **创建ALV动态数据表**: 首先,确保你的程序使用了`SELECTIONSCREEN`结构来定义选择屏幕,并且能生成合适的ALV数据。 2. **处理事件**: 当从选择屏幕通过某个动作(如单击按钮)进入ALV时,在相应的`ACTION`里,你可以设置一个新的事件来处理返回请求。例如,你可以定义一个名为`BACK_TO_SELECTIONSCREEN`的事件。 ```abap DATA(ls_alv_event) = VALUE #(ACTION = 'BACK_TO_SELECTIONSCREEN' TYPE = sy-evtype). ``` 3. **定义事件处理器**: 创建一个方法来处理这个事件,比如`HANDLE_BACK_TO_SELECTIONSCREEN`,在其中编写代码将用户带回选择屏幕: ```abap METHOD HANDLE_BACK_TO_SELECTIONSCREEN. DATA(lo_screen) = SCREEN拣取(YourSelectionScreenName). "替换为你的选择屏幕名 PERFORM SELECT ScreenWithData. "如果需要带数据回选择屏幕,这里处理 EXIT. ENDMETHOD. ``` 4. **触发返回**: 在你想放置返回按钮的地方,使用`CALL_METHOD`调用这个事件处理器: ```abap BUTTONS button_name = VALUE #(TEXT = 'Back' ACTION = 'BACK_TO_SELECTIONSCREEN' METHOD = 'HANDLE_BACK_TO_SELECTIONSCREEN'). ``` 5. **显示ALV**: 确保在显示ALV之前调用了事件处理器,以便在返回时它已经生效。 记得替换上述示例中的变量(如`YourSelectionScreenName`)为实际的屏幕名称。这只是一个基本框架,实际情况可能会根据你的具体需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值