勾選某一行的勾選框,更改當前行的顏色,ALV數據發生變化的事件

文章目錄

  • 屏幕
  • ALV的創建
  • 定義變量
  • 注冊事件
  • 方法定義
  • 方法實現
    • frm_data_change
  • 效果

屏幕

在這里插入圖片描述

ALV的創建

DATA: g_gui_custom_container   TYPE REF TO cl_gui_custom_container.
DATA: g_gui_alv_grid TYPE REF TO cl_gui_alv_grid.DATA: gt_listheader TYPE slis_t_listheader, "ALV 表頭gs_layout     TYPE lvc_s_layo.        "ALV布局工作區DATA: gs_fieldcat TYPE lvc_s_fcat, "字段工作區gt_fieldcat TYPE TABLE OF lvc_s_fcat.DATA: gt_toolbar TYPE ui_functions.DATA: gs_variant TYPE disvariant.
DATA: gv_variant TYPE disvariant .DATA: gs_events TYPE slis_alv_event,gt_events TYPE slis_t_event.DATA: gs_fieldinfo TYPE slis_fieldinfo2,gt_fieldinfo TYPE TABLE OF slis_fieldinfo2.DATA: gr_table_alv  TYPE REF TO cl_salv_table.
DATA: g_event_class TYPE REF TO lcl_event_class.

在這里插入圖片描述

*&---------------------------------------------------------------------*
*& Module SET_SCREEN_ALV OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE set_screen_alv OUTPUT.DATA: lt_filter TYPE lvc_t_filt.PERFORM frm_alv_variant CHANGING gv_variant.IF g_gui_custom_container IS INITIAL." 創建容器對象CREATE OBJECT g_gui_custom_containerEXPORTINGcontainer_name = 'CONTAINER_ALV'.ENDIF.IF g_gui_alv_grid IS INITIAL." 創建alv對象CREATE OBJECT g_gui_alv_gridEXPORTINGi_parent = g_gui_custom_container."字段設置PERFORM frm_pre_fieldcat TABLES gt_fieldcat USING gs_item 'GS_ITEM'."布局gs_layout-cwidth_opt = 'X'.gs_layout-info_fname = 'COLOR'.gs_layout-stylefname = 'FIELD_STYLE'." 設置按鈕REFRESH: gt_toolbar.PERFORM frm_alv_funcodes CHANGING gt_toolbar.CREATE OBJECT g_event_class.SET HANDLER g_event_class->handle_toolbarg_event_class->handle_user_commandg_event_class->handle_changeg_event_class->handle_double_clickFOR g_gui_alv_grid.IF gt_fieldcat[] IS NOT INITIAL.CALL METHOD g_gui_alv_grid->set_table_for_first_displayEXPORTINGis_layout            = gs_layouti_save               = 'A'is_variant           = gv_variantit_toolbar_excluding = gt_toolbarCHANGINGit_filter            = lt_filterit_outtab            = gt_item[]it_fieldcatalog      = gt_fieldcat.ENDIF.CALL METHOD g_gui_alv_grid->check_changed_data. "控制ALV顯示界面刷新CALL METHOD g_gui_alv_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_modifiedEXCEPTIONSerror      = 1OTHERS     = 2.CALL METHOD g_gui_alv_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_enterEXCEPTIONSerror      = 1OTHERS     = 2.CALL METHOD cl_gui_alv_grid=>set_focusEXPORTINGcontrol           = g_gui_alv_gridEXCEPTIONScntl_error        = 1cntl_system_error = 2OTHERS            = 3.ELSE.PERFORM frm_refresh_alv_data.ENDIF.
ENDMODULE.

定義變量

在這里插入圖片描述

DATA:BEGIN OF gs_item,sel,zicon       TYPE icon_d,    "狀態auart       TYPE vbak-auart,bezei       TYPE tvakt-bezei,vbeln_dn    TYPE likp-vbeln,posnr_dn    TYPE lips-posnr,vbeln_so    TYPE vbak-vbeln,posnr_so    TYPE vbap-posnr,zddxq       TYPE char10,bstkd       TYPE vbkd-bstkd, "客戶POkunnr       TYPE vbak-kunnr,name1       TYPE kna1-name1, "售達方名稱kunnr_sh    TYPE vbpa-kunnr, "送達方name1_sh    TYPE kna1-name1, "送達方名稱名稱matnr       TYPE vbap-matnr,arktx       TYPE vbap-arktx, "物料描述kdmat       TYPE vbap-kdmat, "客戶物料maktx       TYPE makt-maktx,kwmeng      TYPE vbap-kwmeng,lfimg       TYPE lips-lfimg, "已交貨數量zmenge      TYPE lips-lfimg, "未交貨數量zbdmng      TYPE lips-lfimg, "已過賬數量vrkme       TYPE vbap-vrkme, "銷售單位zbzzl       TYPE lips-lfimg, "標準重量werks       TYPE vbap-werks,lgort_a     TYPE mska-lgort, "前隴成品倉zkalab_a    TYPE mska-kalab, "可用庫存數量lgort_b     TYPE mska-lgort, "西山成品倉zkalab_b    TYPE mska-kalab, "可用庫存數量lgort_c     TYPE mska-lgort, "客供成品倉zkalab_c    TYPE mska-kalab, "可用庫存數量lgmng       TYPE lips-lgmng, "計劃交貨數量wadat       TYPE vbep-edatu, "計劃交貨日期ernam       TYPE vbak-ernam,kvgr4       TYPE vbak-kvgr4,kvgr5       TYPE vbak-kvgr5,audat       TYPE vbak-audat,vkorg       TYPE vbak-vkorg,vtweg       TYPE vbak-vtweg,spart       TYPE vbak-spart,zmseg       TYPE bapiret2-message, "錯誤消息color(4)    TYPE c, "定義行顏色字段field_style TYPE lvc_t_styl,lv_line     TYPE i, "行號標識
*--------------------------------------------------------------------*change by JT-ZZY AT 20221210 新增三個倉庫對應的庫存數量lgort_d     TYPE mska-lgort, "安徽新馬成品一庫zkalab_d    TYPE mska-kalab, "可用庫存數量vrkme_d     TYPE vbap-vrkme, "可用庫存數量單位lgort_e     TYPE mska-lgort, "安徽新馬成品二庫zkalab_e    TYPE mska-kalab, "可用庫存數量vrkme_e     TYPE vbap-vrkme, "可用庫存數量單位lgort_f     TYPE mska-lgort, "安徽新馬成品三庫zkalab_f    TYPE mska-kalab, "可用庫存數量vrkme_f     TYPE vbap-vrkme, "可用庫存數量單位lgort_g     TYPE mska-lgort, "新能源成品倉zkalab_g    TYPE mska-kalab, "可用庫存數量vrkme_g     TYPE vbap-vrkme, "可用庫存數量單位zverid      TYPE vbap-zverid,"ADD "27.06.2023 11:08:20 jt-zzylgort_h     TYPE mska-lgort, "新能源成品倉                      廣東新能源成品倉:1100 工廠,1109111011111112 庫位zkalab_h    TYPE mska-kalab, "可用庫存數量vrkme_h     TYPE vbap-vrkme, "可用庫存數量單位lgort_i     TYPE mska-lgort, "新能源成品倉zkalab_i    TYPE mska-kalab, "可用庫存數量vrkme_i     TYPE vbap-vrkme, "可用庫存數量單位lgort_j     TYPE mska-lgort, "新能源成品倉zkalab_j    TYPE mska-kalab, "可用庫存數量vrkme_j     TYPE vbap-vrkme, "可用庫存數量單位lgort_k     TYPE mska-lgort, "新能源成品倉zkalab_k    TYPE mska-kalab, "可用庫存數量vrkme_k     TYPE vbap-vrkme, "可用庫存數量單位lgort_l     TYPE mska-lgort, "新能源成品倉                      江蘇新能源一廠成品倉: 1700 工廠,17031717 庫位zkalab_l    TYPE mska-kalab, "可用庫存數量vrkme_l     TYPE vbap-vrkme, "可用庫存數量單位lgort_m     TYPE mska-lgort, "新能源成品倉zkalab_m    TYPE mska-kalab, "可用庫存數量vrkme_m     TYPE vbap-vrkme, "可用庫存數量單位lgort_n     TYPE mska-lgort, "新能源成品倉                      安徽新能源成品倉:1800 工廠,1803 庫位zkalab_n    TYPE mska-kalab, "可用庫存數量vrkme_n     TYPE vbap-vrkme, "可用庫存數量單位lgort_o     TYPE mska-lgort, "精密BU-平埔成品倉  "精密事業部需求添加 ADD BY LHY 20250407zkalab_o    TYPE mska-kalab, "可用庫存數量(3003) "精密事業部需求添加 ADD BY LHY 20250407vrkme_o     TYPE vbap-vrkme, "可用庫存數量單位   "精密事業部需求添加 ADD BY LHY 20250407END OF gs_item.
DATA:gt_item LIKE TABLE OF gs_item.DATA: g_event_class TYPE REF TO lcl_event_class.

注冊事件

在這里插入圖片描述

方法定義

在這里插入圖片描述

CLASS lcl_event_class IMPLEMENTATION."雙擊事件METHOD handle_double_click.READ TABLE gt_item INTO DATA(gs_item) INDEX e_row.IF sy-subrc = 0.CASE  e_column-fieldname.WHEN 'VBELN_SO'.CALL METHOD zcl_common_utils=>leave_to_va03EXPORTINGlv_vbeln = gs_item-vbeln_so.WHEN 'VBELN_DN'.CALL METHOD zcl_common_utils=>leave_to_vl03EXPORTINGlv_vbeln = gs_item-vbeln_dn.WHEN OTHERS.ENDCASE.ENDIF.ENDMETHOD.METHOD handle_toolbar.DATA: ls_toolbar TYPE stb_button.CLEAR: ls_toolbar.ls_toolbar-butn_type = 3. " 分隔符APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR: ls_toolbar.ls_toolbar-function  = 'CNS_ALL'.    " 功能碼ls_toolbar-icon      =  icon_select_all.  " 圖標名稱ls_toolbar-quickinfo = '全選'.   " 圖標的提示信息ls_toolbar-text      = '全選'.       " 按鈕上顯示的文本APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR: ls_toolbar.ls_toolbar-function  = 'CNS_SAL'.    " 功能碼ls_toolbar-icon      =  icon_deselect_all.  " 圖標名稱ls_toolbar-quickinfo = '取消全選'.   " 圖標的提示信息ls_toolbar-text      = '取消全選'.       " 按鈕上顯示的文本APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR: ls_toolbar.ls_toolbar-function  = 'CNS_HIST'.    " 功能碼ls_toolbar-icon      =  icon_history.  " 圖標名稱ls_toolbar-quickinfo = '轉單歷史'.   " 圖標的提示信息ls_toolbar-text      = '轉單歷史'.       " 按鈕上顯示的文本APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR: ls_toolbar.ls_toolbar-butn_type = 3. " 分隔符APPEND ls_toolbar TO e_object->mt_toolbar.CLEAR: ls_toolbar.ENDMETHOD.                    "handle_toolbarMETHOD handle_user_command.CALL METHOD g_gui_alv_grid->check_changed_data. "觸發數據變更CASE e_ucomm.WHEN 'CNS_ALL'.PERFORM frm_all_data_line USING 'X'.WHEN 'CNS_SAL'.PERFORM frm_all_data_line USING ' '.WHEN 'CNS_HIST'."查找歷史行PERFORM frm_show_hist_data.WHEN OTHERS.ENDCASE.PERFORM frm_refresh_alv_data.ENDMETHOD.                           "handle_user_commandMETHOD handle_change.PERFORM handle_data_changed USING er_data_changed.PERFORM frm_refresh_alv_data.ENDMETHOD.
*-----------------------------------------------------------------
ENDCLASS.

方法實現

在這里插入圖片描述

*----------------------------------------------------------------------*
*         FORM handle_data_changed IMPLEMENTATION
*----------------------------------------------------------------------*
FORM handle_data_changed  USING p_er_data_changed TYPE REF TO cl_alv_changed_data_protocol.DATA: ls_row TYPE LINE OF lvc_t_modi .LOOP AT p_er_data_changed->mt_mod_cells INTO ls_row .READ TABLE gt_item  ASSIGNING FIELD-SYMBOL(<fs_item>) INDEX ls_row-row_id.IF sy-subrc = 0.PERFORM frm_data_change USING ls_row p_er_data_changed.ENDIF.ENDLOOP .
ENDFORM.                    "handle_data_changed

frm_data_change

FORM frm_data_change USING ps_row TYPE LINE OF lvc_t_modip_er_data_changed TYPE REF TO cl_alv_changed_data_protocol.DATA:mod_data        TYPE lvc_t_modi,gs_out_mod_data TYPE lvc_s_modi.FIELD-SYMBOLS:<fs_field> TYPE any .DATA: lv_decimal TYPE p DECIMALS 3.mod_data = p_er_data_changed->mt_mod_cells.LOOP AT mod_data INTO gs_out_mod_data.READ TABLE gt_item  ASSIGNING FIELD-SYMBOL(<fs_item>) INDEX gs_out_mod_data-row_id.IF sy-subrc = 0.CASE gs_out_mod_data-fieldname.WHEN 'LGMNG'.CLEAR lv_decimal.CALL FUNCTION 'UNITS_STRING_CONVERT'EXPORTINGunits_string = gs_out_mod_data-valuedcpfm        = 'X'
*             MLLN         = 'M'
*             TSND         = 'T'IMPORTINGunits        = lv_decimalEXCEPTIONSinvalid_type = 1OTHERS       = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.IF lv_decimal > <fs_item>-zmenge.CALL METHOD p_er_data_changed->add_protocol_entryEXPORTINGi_msgid     = '00'i_msgty     = 'E'i_msgno     = '001'i_msgv1     = '計劃發貨數量不能大于未交貨數量'i_fieldname = gs_out_mod_data-fieldname.CALL METHOD p_er_data_changed->modify_cellEXPORTINGi_value     = <fs_item>-lgmngi_row_id    = gs_out_mod_data-row_idi_fieldname = gs_out_mod_data-fieldname.ELSE.TRY.ASSIGN COMPONENT gs_out_mod_data-fieldname OF STRUCTURE <fs_item> TO <fs_field>.<fs_field> = lv_decimal.CATCH cx_sy_arithmetic_error INTO myref.err_text = myref->get_text( ).ENDTRY.ENDIF.WHEN 'SEL'.IF gs_out_mod_data-value NE <fs_item>-sel.<fs_item>-color = COND #( WHEN gs_out_mod_data-value = 'X' THEN 'C210' ELSE ' ' ).
*       Check: 勾選整單時,單據行要保持一制IF gs_head-zflg = 'X'.LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<fs_data>)  WHERE vbeln_so = <fs_item>-vbeln_so.<fs_data>-sel   = gs_out_mod_data-value.<fs_data>-color = <fs_item>-color.ENDLOOP.ENDIF.ENDIF.WHEN OTHERS.ENDCASE.ENDIF.ENDLOOP.
ENDFORM.      

在這里插入圖片描述

效果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79836.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI-02a5a6.神經網絡-與學習相關的技巧-批量歸一化

批量歸一化 Batch Normalization 設置合適的權重初始值&#xff0c;則各層的激活值分布會有適當的廣度&#xff0c;從而可以順利的進行學習。那么&#xff0c;更進一步&#xff0c;強制性的調整激活值的分布&#xff0c;是的各層擁有適當的廣度呢&#xff1f;批量歸一化&#…

解決SQL Server SQL語句性能問題(9)——合理使用表分區

9.2. 合理使用表分區 本專欄4.1.4節中,我們對表分區相關的概念和機制等基礎理論進行了較為詳細的介紹和論述,讀者可以參考該節中內容,或者,讀者也可以參考官方或其他相關資料。與其他關系庫類似,SQL Server 2005版本中引進的真正意義上的表分區技術,絕對是解決海量數據環…

C語言學習之文件操作

經過前面的學習&#xff0c;我們已經基本掌握了如何去寫一個C語言的代碼了。但是在實際的項目中&#xff0c;我們不可能不需要文件去操作。因為如果沒有文件&#xff0c;我們寫的程序是存儲在電腦的內存中的。如果程序推出&#xff0c;內存回收數據就隨之丟失了。如果我們要對數…

2025年PMP 學習十三 第9章 項目資源管理(9.1,9.2)

2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xff09; 序號過程過程組9.1規劃資源管理規劃9.2估算活動資源規劃9.3獲取資源執行9.4建設團隊執行9.5管理團隊執行9.6控制資源監控 文章目錄 2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xf…

藍橋杯13屆國B 完全日期

題目描述。 如果一個日期中年月日的各位數字之和是完全平方數&#xff0c;則稱為一個完全日期。 例如&#xff1a;2021 年 6 月 5 日的各位數字之和為 20216516&#xff0c;而 16 是一個完全平方數&#xff0c;它是 4 的平方。所以 2021 年 6 月 5 日是一個完全日期。 例如&…

某某霸翻譯逆向分析[JS逆向]

聲明 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代碼&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 本文章未經…

開源Heygem本地跑AI數字人視頻教程

圖文教程&#xff1a; 點擊跳轉 視頻教程 資料包下載 點擊下載&#xff1a;

C++之fmt庫介紹和使用(1)

C之fmt庫介紹與使用(1) Author: Once Day Date: 2025年5月12日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 全系列文章可參考專欄: 源碼分析_Once-Day的博客-CSDN博客 …

設計模式(9)——創建型模式之工廠方法

設計模式(9)——創建型模式之工廠方法 工廠方法作用結構偽代碼適用場景工廠方法 作用 工廠方法是一種創建型設計模式,其在父類中提供一個創建對象的方法,允許子類決定實例化對象的類型。 結構 產品(Product)將會對接口進行聲明。對于所有由創建者及其子類構建的對象,…

Docker 疑難雜癥解決指南:從入門到進階的全面剖析

Docker 作為容器化技術的代表&#xff0c;憑借其輕量級、可移植性和高效資源利用率&#xff0c;已成為開發、測試和部署應用的標準工具。然而&#xff0c;在實際使用中&#xff0c;用戶常常會遇到鏡像構建失敗、容器啟動異常、網絡配置問題等疑難雜癥。本文將從鏡像構建、容器生…

搶跑「中央計算+區域控制」市場,芯馳科技高端智控MCU“芯”升級

伴隨著整車EE架構的加速變革&#xff0c;中國高端車規MCU正在迎來“新格局”。 在4月23日開幕的上海國際車展期間&#xff0c;芯馳科技面向新一代AI座艙推出了X10系列芯片&#xff0c;以及面向區域控制器、電驅和動力域控、高階輔助駕駛和艙駕融合系統等的高端智控MCU產品E3系…

DeepPrep:深度學習提升神經影像預處理

DeepPrep&#xff1a;深度學習提升神經影像預處理 一、DeepPrep介紹和BIDS格式介紹 神經影像預處理的痛點&#xff1a;傳統工具&#xff08;如fMRIPrep&#xff09;在大規模數據處理時效率低下&#xff0c;臨床樣本魯棒性不足。DeepPrep通過深度學習工作流管理實現突破&#…

pytorch 數據預處理和常用工具

文章目錄 NumPyNumpy數據結構安裝和使用NumPy Matplotlib的安裝和導入安裝和導入Matplotlib繪制基礎圖畫折線圖散點圖柱狀圖圖例 數據清洗據清洗的作用Pandas進行數據清洗Pandas數據結構Series 數據結構DataFrame數據結構 Pandas數據清洗常用代碼 特征工程主成分分析線性判別分…

MATLAB 中常用的微分函數介紹

MATLAB 中常用的微分函數介紹 在 MATLAB 中&#xff0c;微分運算是數值計算和符號計算中常用的功能。無論是在進行數據分析、優化算法&#xff0c;還是數學建模時&#xff0c;微分都扮演著重要的角色。本文將介紹 MATLAB 中常用的微分函數&#xff0c;并通過簡單的示例幫助大家…

按指定位置或關鍵字批量刪除工作表-Excel易用寶

在一個工作簿中有多個工作表&#xff0c;有些工作表不需要了&#xff0c;如果一個一個手動刪除&#xff0c;那實在是太慢了&#xff0c;有沒有什么好的方法可以批量刪除工作表。 批量刪除工作表很簡單&#xff0c;單擊【易用寶】→【工作表】→【批量刪除工作表】。 在打開的批…

TypeScript裝飾器:從入門到精通

TypeScript裝飾器&#xff1a;從入門到精通 什么是裝飾器&#xff1f; 裝飾器&#xff08;Decorator&#xff09;是TypeScript中一個非常酷的特性&#xff0c;它允許我們在不修改原有代碼的情況下&#xff0c;給類、方法、屬性等添加額外的功能。想象一下裝飾器就像給你的代碼…

【SSL證書系列】客戶端如何檢查中間CA簽名是否由根CA簽發

客戶端通過以下步驟檢查中間CA的簽名是否由受信任的根CA簽發&#xff1a; 1. 證書鏈的構建 服務器發送的證書鏈通常包含&#xff1a; ? 服務器證書&#xff08;由中間CA簽發&#xff09; ? 中間CA證書&#xff08;由根CA簽發&#xff09; ? 根CA證書&#xff08;通常不發送…

【android bluetooth 協議分析 12】【A2DP詳解 1】【車機側藍牙音樂免切源介紹】

“車機藍牙音樂免切源” 是近年來車載系統&#xff08;IVI&#xff0c;In-Vehicle Infotainment&#xff09;中常見的一個用戶體驗優化功能。它主要是為了簡化藍牙音樂播放流程、減少用戶操作&#xff0c;提升使用便捷性。 一、什么是“切源”&#xff1f; 在車機系統中&#…

Android usb網絡共享詳解

Android usb網絡共享詳解 文章目錄 Android usb網絡共享詳解一、前言二、USB網絡共享使用的前提1、Android設備支持adb 并且打開usb開關2、原生Settings能看到USB網絡共享開關3、代碼中檢測USB網絡共享是否支持 三、Settings 中USB網絡共享代碼的部分代碼1、Settings\res\xml\t…

Step1

項目 SchedulerSim 已搭建完成 ? ? ? 你現在擁有的&#xff1a; ? &#x1f527; 兩種調度器&#xff08;Round Robin SJF&#xff09; ? &#x1f4e6; 模擬進程類 Process ? &#x1f9f1; 清晰結構&#xff1a;OOP 風格 便于擴展 ? ?? 主函數已演示調度器運行效…