閑的時候 做一個屏幕 分割器 、 tablecontrol 、tablestrip 、 alv oo 還有什麽? 類似于PA30 的效果吧

这篇博客介绍了如何在SAP ABAP中利用cl_gui_docking_container和cl_gui_splitter_manager等类创建屏幕分割器,并实现树形控件(tree)和ALV网格(grid)的布局。通过创建lcl_splitter_manager、lcl_launchpad_manager和lcl_displaytl_manager等类,博主详细展示了如何构建和初始化这些控件,以及注册双击事件处理。

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

 

主要學習的博客轉自:http://www.abaptech.com/2008/07/alv-grid-demo/ 

 

先記錄下爲何要用繁體吧。

 

oh 前兒去學guitar 遇見了個外國人,在中國3、4年, 一口流利的普通話,自愧不如,人家外語怎麽就這麽好。

 

了解到原是教中國厤史的老師,我對於祖國的歷史局限于初高中那點底子,唉。

 

留下個聯係方式,居然是繁體的中文名字,我,慚愧,所以,開始用繁體,希望潛移默化的起到些作用吧。

 


 

言歸正傳!!!!!!!!!!!!

 

大概框架:

左邊是2個tree,

 

涉及到的幾個類,不分先後順序:

    cl_gui_docking_container

    cl_gui_container

    cl_gui_splitter_manager

    cl_gui_alv_tree

    cl_gui_alv_grid

    cl_gui_column_tree

 

事件流:

  •  先為分割器第一行顯示内表數據加值
  • call screen 9000
  • call method lcl_splitter_manager=>create
  • 註冊事件
  • 執行吧 
  • 出發按鈕,轉換子屏幕

 

 

1: 先創建個分割器類定義

 

 涉及了兩個類:lcl_launchpad_manager / lcl_displaytl_manager.

 

2: 分割器的實現

 

 這個還蠻重要的,裏面很多方法、屬性神馬的,挺有用的。其實,有的我也不明白,記一個最不解的

 

問題1:

 

 

    DATA alignment  TYPE i.
    alignment cl_gui_splitter_container=>align_at_left +
           cl_gui_splitter_container=>align_at_right +
           cl_gui_splitter_container=>align_at_top +
           cl_gui_splitter_container=>align_at_bottom
.

    CREATE OBJECT splitter_control
      EXPORTING
        metric            space
        align             alignment
        parent            parent
        rows              2
        columns           1
      EXCEPTIONS
        cntl_error        1
        cntl_system_error 2
        OTHERS            3.

 

嗯 这段,什麽意思那?

 

 

3: 分割器,上下兩區域的類方法,定義

 

實現:

 

結構還蠻清楚的

 

4:實現分割器下面,類定義和實現

 

 

實現:

 

 

嗯 這部分超級點單的

 

5: 實現tree/alv 的雙擊事件

實現:

最主要的代碼:

read table it_order with key key = node_key into ...

之後就是數據的導入 之類的。

 

在alv 雙擊后觸發事件裏面有:leave to screen 9000  . [9000就是這個主屏幕] 

 

 

 

6. 屏幕流

主屏幕9000 包含一個tabstrip, 默認的子屏幕是0301, 第二個標簽包含alv 所在子屏幕是0400,

 

9000:

PBO: CALL SUBSCREEN subscr_menu INCLUDING sy-repid number.

PAI: CALL SUBSCREEN subscr_menu.

 

0301:

PBO:LOOP AT it_sbook WITH CONTROL tc_s CURSOR tc_s-top_line.
    MODULE sub_dispay_sbook.
    ENDLOOP.

    DESCRIBE TABLE it_sbook LINES fill"竖滚动条
    tc_s-lines fill.

PAI:LOOP AT it_sbook.
    MODULE sub_set_line_count.
    ENDLOOP.

    line_count sy-loopc.
    MODIFY it_sbook FROM wa_sbook INDEX tc_s-current_line"竖滚动条

 

0400:

PBO:

 

注:要在程序裏聲明:

CONTROLS menu_tabstrip TYPE TABSTRIP.
DATA number TYPE sy-dynnr.
menu_tabstrip-activetab 'TAB01'.
number '0300'.
"---------------------------------------------
CONTROLS tc_s TYPE TABLEVIEW USING SCREEN 0301.
DATA line_count TYPE i.

 

 

附加結果圖片:

 

 

 

其實還有很多交互 沒有完成,懶啦 有時間做一下吧

 

ABAP 中,创建一个屏幕并在子屏幕中展示 OOALV 可以按照以下步骤进行: 1. 在屏幕集中定义一个屏幕: - 在 ABAP 事务码 SE51 中创建一个屏幕集。 - 在屏幕集中,创建一个屏幕(例如,编号为 100)。 - 在子屏幕中添加一个容器控件(例如,名称为 `CONTAINER1`)。 2. 在 ABAP 程序中实例化 OOALV 对象: - 创建一个 ABAP 程序(例如,ZPROGRAM)。 - 在 ABAP 程序中使用 ALV 类(例如,CL_GUI_ALV_GRID)来实例化 OOALV 对象(例如,GR_ALV)。 3. 配置 OOALV 对象的显示属性和数据源: - 设置 OOALV 对象的显示属性,例如列标题、列宽度等。 - 设置 OOALV 对象的数据源,例如内表(INTERNAL TABLE)或函数模块。 4. 在 ABAP 程序中调用子屏幕并传递 OOALV 对象: - 使用屏幕集函数模块 `CALL SCREEN 100` 调用子屏幕。 - 将 OOALV 对象传递给子屏幕的容器控件 `CONTAINER1`。 5. 在子屏幕中处理 OOALV 的显示和操作: - 在子屏幕的 PBO(Process Before Output)事件中,使用 OOALV 对象的方法 `SET_TABLE_FOR_FIRST_DISPLAY` 来设置 OOALV 的属性和数据源。 - 在子屏幕PAI(Process After Input)事件中,处理 OOALV 的用户交互操作。 这是一个大致的步骤,具体的实现可能需要根据你的需求进行调整和扩展。希望这些步骤能帮助你开始在子屏幕中创建和展示 OOALV。如有需要,请提供更多的上下文信息以获取更具体的代码示例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值