You are on page 1of 5

在本教程中,我將展示如何僅啟用可編輯網格中的特定單元格。

首先,我會準備一些演示數據。 將有一份材料清單及其維護狀態。 如果狀態設置


為“A”,我們希望禁用對網格中狀態的編輯。

MATNR(類型 MATNR,主鍵) PSTAT(類型 PSTAT_D)

123456K

654321 電子

567890 丁

876543 乙

900,000 安

現在我們創建一個帶屏幕的功能組(即 0200),我們在其中繪製 ALV 網格。

在屏幕佈局編輯器中創建自定義容器並命名,例如 GO_GRID_CONTAINER。

同時創建一個自定義 PF STATUS 有兩個函數:UPDATE 和 UPDATE


屏幕的流程邏輯很簡單:
退出前處理。
模塊 pbo_0200。

*
進入後的過程。
模塊 pai_0200。

PBO_0200 模塊用於採集數據、創建字段目錄和顯示 ALV。 下面是代碼

模塊 pbo_0200 輸出。
數據:
ls_layout 類型 lvc_s_layo,

ls_variant TYPE 變體。

字段符號:
<fs_fcat> 類型 lvc_s_fcat。

* 在這個用戶狀態下我們創建兩個函數:

* UPDATE - 保存所有更改並更新網格

* UPDATE - 使用 Z 表中的數據更新網格

設置 PF 狀態“PF_STATUS”。
* 容器和網格的初始創建

如果 gr_container 是初始的。

創建對象 gr_container
出口
* 這是對我們在佈局編輯器中創建的對象的引用

container_name = 'GO_GRID_CONTAINER'。

* Parent 是我們上面創建的容器

創建對象 gr_grid
出口
i_parent = gr_container。

*最簡單的現場目錄創建

調用函數'LVC_FIELDCATALOG_MERGE'
出口
i_structure_name = 'ZMATSTAT'
變化
ct_fieldcat = gt_fieldcat。

*!!! 重要的!!!

* 我們需要將所有必要的列標記為可編輯!!!

讀取表 gt_fieldcat 分配 <fs_fcat> 與關鍵字段名 = 'PSTAT'。

<fs_fcat>-edit = abap_true。

* 從數據庫中加載數據並勾選

* 適當的字段作為 R/O
執行重新加載數據。

* 指定包含單元格樣式信息的字段名稱 (RW / RO)

ls_layout-stylefname = 'CELL_STYLES'。

ls_variant-report = sy-repid。
ls_variant-username = sy-unname。

*!!! 重要的!!!

* 我們註冊 ENTER 事件,以便手動更改

* 傳播回 GT_DATA

gr_grid->register_edit_event(i_event_id = cl_gui_alv_grid=>mc_evt_enter)。

* 繪製 ALV

gr_grid->set_table_for_first_display(
出口
is_layout = ls_layout

is_variant = ls_variant

i_save = 'A'

i_default = 'X'
變化
it_fieldcatalog = gt_fieldcat

it_outtab = gt_data )。
停下來。
結束模塊。 " PBO_0200 退出

模塊 PAI_0200 用於處理用戶交互,下面是它的代碼

模塊 pai_0200 輸入。
數據:
l_matstat 類型 zmatstat。
字段符號:
<fs_data> 等同於 gt_data 的行。

CASE sy-ucomm。

當“返回”或“離開”或“取消”時。

設置屏幕 0。

當“更新”時。

* 更新數據庫 Z 表
在 gt_data ASSIGN <fs_data> 處循環,其中 matn 不是初始值。

將相應的 <fs_data> 移動到 l_matstat。

從 l_matstat 更改 zmatstat。
結束循環。

* 重新加載數據庫並標記

* 適當的字段作為 R/O
執行重新加載數據。
gr_grid->refresh_table_display()。

當“刷新”時。
執行重新加載數據。
gr_grid->refresh_table_display()。
結束案例。
結束模塊。 " PAI_0200 輸入

helper FORM RELOAD_DATA 用於從數據庫中收集數據並將相關字段標記為只讀


表格重新加載數據。
數據:
l_lvc_s_styl 類型 lvc_s_styl。
字段符號:
<fs_data> 等同於 gt_data 的行。

刪除 gt_data[]。

* 讀取數據

選擇 *

在表 gt_data 的相應字段中

來自 zmatstat。

* 遍歷所有數據行並輸入 PSTAT

* 在值 = 'A' 的情況下作為 R/O

在 gt_data 處循環

分配 <fs_data>
其中 pstat = 'A'。

l_lvc_styl-style = cl_gui_alv_grid=>mc_style_disabled。

l_lvc_styl-fieldname = 'PSTAT'。

* 必須使用 INSERT 命令

* 因為 CELL_STYLES 字段是一個 SORTED TABLE

INSERT l_lvc_styl INTO TABLE <fs_data> 單元格樣式。


結束循環。
最終表格。 “重新加載數據

如果我們現在從 ABAP 調用我們的屏幕,我們會得到以下信息:

Zài běn jiàochéng zhōng, wǒ jiāng zhǎnshì rúhé jǐn qǐyòng kě biānjí wǎng gé zhōng de tèdìng
dānyuán gé.

Shǒuxiān, wǒ huì zhǔnbèi yīxiē yǎnshì shùjù. Jiāng yǒuyī fèn cáiliào qīngdān jí qí

You might also like