SAP Solution:OO-ALV 在同一個(gè)屏幕中編輯抬頭與行項(xiàng)目

以前一直比較反感用ALV做編輯,因?yàn)閷?shí)在是太慢了。但是用TableControl做這種類(lèi)型的開(kāi)發(fā)的話(huà),缺點(diǎn)也很多,比如:

1、代碼量大

2、需要畫(huà)屏幕,調(diào)屏幕

3、有需求變更時(shí),變更調(diào)整的工作量也很大

4、不像ALV一樣可以方便的復(fù)制、粘貼、導(dǎo)出、篩選等等

最近自己剛做完的項(xiàng)目上有這樣的需求,是用OO-ALV來(lái)做的,而且最近有幾個(gè)群友也在群里有類(lèi)似的需求,所以今天就把這個(gè)基礎(chǔ)的程序結(jié)構(gòu)分享出來(lái)吧。

效果圖


代碼下載地址


鏈接: https://pan.baidu.com/s/1Nv1l1TsLL06wpR0Wd_fEXA

提取碼: xye7?

詳細(xì)代碼

REPORT z_alv_header_item_test.

TYPES:BEGIN OF ty_header,

? ? ? ? box TYPE c,

? ? ? ? key TYPE char10,

? ? ? END OF ty_header,

? ? ? BEGIN OF ty_item,

? ? ? ? box TYPE c,

? ? ? ? key TYPE char10,

? ? ? ? itemno TYPE char5,

? ? ? END OF ty_item.

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

*? ? ? ?CLASS lcl_alv_event_handler DEFINITION

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

CLASS lcl_alv_event_handler DEFINITION.

? PUBLIC SECTION.

? ? METHODS:

? ? ? handle_data_changed_finished? FOR EVENT data_changed_finished

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OF cl_gui_alv_grid

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IMPORTING e_modified et_good_cells.

ENDCLASS.? ? ? ? ? ? ? ? ? ? "lcl_alv_event_handler DEFINITION

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

*? ? ? ?CLASS lcl_alv_event_handler IMPLEMENTATION

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

CLASS lcl_alv_event_handler IMPLEMENTATION .

? METHOD handle_data_changed_finished.

? ? PERFORM handle_data_changed_finished.

? ENDMETHOD.? ? ? ? ? ? ? ? ? ? "HANDLE_USER_COMMAND

ENDCLASS.? ? ? ? ? ? ? ? ? ? "lcl_alv_event_handler IMPLEMENTATION

DATA:

? gt_fieldcat_header? ? TYPE lvc_t_fcat,

? gt_fieldcat_item? ? ? TYPE lvc_t_fcat,

? gs_fieldcat? ? ? ? ? ?TYPE lvc_s_fcat,

? gs_layout? ? ? ? ? ? ?TYPE lvc_s_layo.

DATA: go_docking_con? ? TYPE REF TO cl_gui_docking_container,

? ? ? go_splitter_con? ?TYPE REF TO cl_gui_splitter_container,

? ? ? go_container_1? ? TYPE REF TO cl_gui_container,

? ? ? go_container_2? ? TYPE REF TO cl_gui_container,

? ? ? go_alv_header? ? ?TYPE REF TO cl_gui_alv_grid,

? ? ? go_alv_item? ? ? ?TYPE REF TO cl_gui_alv_grid,

? ? ? go_event_header? ?TYPE REF TO lcl_alv_event_handler.

DATA: gt_header? ? ? ? ?TYPE TABLE OF ty_header WITH HEADER LINE,

? ? ? gt_item? ? ? ? ? ?TYPE TABLE OF ty_item WITH HEADER LINE,

? ? ? gt_item_filter? ? TYPE lvc_t_filt WITH HEADER LINE.

DEFINE d_build_fieldcat.

? gs_fieldcat-fieldname? = &2.

? gs_fieldcat-checkbox? ?= &3.

? gs_fieldcat-edit? ? ? ?= &4.

? gs_fieldcat-no_out? ? ?= &5.

? gs_fieldcat-coltext? ? = &6.

? append gs_fieldcat to &1.

? clear gs_fieldcat.

END-OF-DEFINITION.

PARAMETERS:p_test TYPE c.

INITIALIZATION.

? gt_header-key = '1000000001'. APPEND gt_header.

? gt_header-key = '1000000002'. APPEND gt_header.

? gt_item-key = '1000000001'. gt_item-itemno = '10001'. APPEND gt_item.

? gt_item-key = '1000000002'. gt_item-itemno = '10001'. APPEND gt_item.

? gt_item-key = '1000000002'. gt_item-itemno = '10002'. APPEND gt_item.

AT SELECTION-SCREEN OUTPUT.

? CHECK go_docking_con IS INITIAL.

? "創(chuàng)建容器

? CREATE OBJECT go_docking_con

? ? EXPORTING

? ? ? ratio = 95

? ? ? side? = cl_gui_docking_container=>dock_at_bottom.

? "拆分為上、下

? CREATE OBJECT go_splitter_con

? ? EXPORTING

? ? ? parent? = go_docking_con

? ? ? rows? ? = 2

? ? ? columns = 1.

? go_splitter_con->set_row_height( EXPORTING id = 1 height = 50 ).

? "創(chuàng)建Header的ALV

? go_container_1 = go_splitter_con->get_container( row = 1 column = 1 ).

? CREATE OBJECT go_alv_header

? ? EXPORTING

? ? ? i_parent = go_container_1.

? d_build_fieldcat:

? ? gt_fieldcat_header 'BOX' 'X' 'X' '' '選擇',

? ? gt_fieldcat_header 'KEY' ' ' ' ' '' 'KEY'.

? CALL METHOD go_alv_header->set_table_for_first_display

? ? EXPORTING

? ? ? is_layout? ? ? ?= gs_layout

? ? CHANGING

? ? ? it_outtab? ? ? ?= gt_header[]

? ? ? it_fieldcatalog = gt_fieldcat_header.

? "創(chuàng)建Item的ALV

? go_container_2 = go_splitter_con->get_container( row = 2 column = 1 ).

? CREATE OBJECT go_alv_item

? ? EXPORTING

? ? ? i_parent = go_container_2.

? d_build_fieldcat:

? ? gt_fieldcat_item 'BOX' ' ' ' ' 'X' '選擇',

? ? gt_fieldcat_item 'KEY' ' ' ' ' '' 'KEY',

? ? gt_fieldcat_item 'ITEMNO' ' ' ' ' '' 'ITEM NO.'.

? gt_item_filter-fieldname = 'BOX'.

? gt_item_filter-sign = 'I'.

? gt_item_filter-option = 'EQ'.

? gt_item_filter-low = 'X'.

? APPEND gt_item_filter.

? CALL METHOD go_alv_item->set_table_for_first_display

? ? EXPORTING

? ? ? is_layout? ? ? ?= gs_layout

? ? CHANGING

? ? ? it_outtab? ? ? ?= gt_item[]

? ? ? it_filter? ? ? ?= gt_item_filter[]

? ? ? it_fieldcatalog = gt_fieldcat_item.

? "事件

? CREATE OBJECT go_event_header.

? SET HANDLER go_event_header->handle_data_changed_finished? FOR go_alv_header.

? go_alv_header->register_edit_event( EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified ).

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

*&? ? ? Form? handle_data_changed_finished

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

*? ? ? ?text

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

FORM handle_data_changed_finished.

? LOOP AT gt_header.

? ? gt_item-box = gt_header-box.

? ? MODIFY gt_item TRANSPORTING box WHERE key = gt_header-key.

? ENDLOOP.

? go_alv_item->refresh_table_display( ).

ENDFORM.? ? ? ? ? ? ? ? ? ? "handle_data_changed_finished

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SAP 不支持交貨單中同一個(gè)物料多個(gè)行項(xiàng)目HU與序列號(hào)組合發(fā)貨場(chǎng)景 筆者所在的項(xiàng)目里,后勤業(yè)務(wù)啟用了序列號(hào)管理,H...
    城市中迷途小書(shū)童閱讀 767評(píng)論 0 0
  • 2020-02-25 星期二 一、億萬(wàn)富翁制造機(jī)分享 早上起床照鏡子,看著自己的眼睛:美女,早上好!我愛(ài)你。吻! ...
    陸麗賢閱讀 74評(píng)論 0 0
  • 07/23/2018 周一 戊戌年 六月十一日 √靜√智√勇√仁√強(qiáng)√禮 ?今日小結(jié)。早上讀《可怕的科學(xué)之恐怖的實(shí)...
    媽媽熊閱讀 406評(píng)論 0 3
  • 秋意愈濃,涼氣絲絲沁入屋內(nèi)。崔璨裹緊了身上的外套,環(huán)視房間一周,繼而看向窗外,窗外的銀杏樹(shù)已然開(kāi)始了一年中最華麗的...
    米莉記閱讀 449評(píng)論 12 1
  • 《珍惜》 歲月滄桑, 珍惜錢(qián)糧。 以慰流年困惑, 儲(chǔ)備資糧。 人海茫茫, 資源是寶藏。 留余土地兒孫耕, 淵淵流長(zhǎng)...
    hao黑土閱讀 294評(píng)論 0 2

友情鏈接更多精彩內(nèi)容