<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上一期講了在ABAP中,ALV的普通寫法,流程以及相關屬性,還講了基本DEMO ,但是在真正開發中,不會寫這麼多的程式碼.原則上是一切從簡. o( ̄︶ ̄)oo( ̄︶ ̄)o.今天講下如何用少的程式碼,標準套路,實現ALV基本功能,滿足開發生產需求.
萬變不離其宗,首先書寫的還是流程,比如讓你寫一個某某查詢報表. 上來啥都不用想你先這麼寫
*資料準備 *常規定義變數,內表結構,工作區,內表,包。。。。 你的程式碼 *系統變數準備 *如layout,fieldcat 等 系統變數 你的程式碼 *選擇螢幕 你的程式碼 *INITIALIZATION *at SELECTION-SCREEN . "START-OF-SELECTION "End-OF-SELECTION . 「子例程及自定義宏
該事件在螢幕未顯示之前執行,對程式設定值及螢幕元素進行初始化賦值。一般作用就是初始值設定,如選擇螢幕的資料賦值,預設引數賦值等。
1:選擇螢幕事件,有很多引數,代表不同的擴充套件資訊
2:在這個事件響應中,可以對螢幕欄位進行有效性檢驗,控制螢幕元素的屬性等。
該事件在單擊按鈕後觸發,一般是資料初始化,資料處理操作的地方
該事件應用於所有資料選擇處理完成,
即START-OF-SELECTION相關執行事件執行完成,
但輸出螢幕還未顯示之前 在實際的應用於一些執行結果的檢驗等。
一般做為ALV展示及使用者操作按鈕事件等。
演練
這裡寫一個簡單的物料明細查詢報表 ,知識點用到了,宏,迴圈,opensql,使用者事件等內容。
TABLES : MARA . *資料準備 "定義結構 TYPES : BEGIN OF gw_Data , MATNR TYPE MATNR , MEINS TYPE MEINS , MAKTX TYPE MAKTX , end of gw_Data . "定義工作區及內表 data : gs_data TYPE gw_Data . data :gt_data TYPE table of gw_Data . "alv 資料 *--------------------------------------------------------------------* * 通用ALV變數 *--------------------------------------------------------------------* DATA: wa_layout TYPE lvc_s_layo. DATA:wa_fieldcat TYPE lvc_s_fcat, gt_fieldcat TYPE lvc_t_fcat. DATA:gs_glay TYPE lvc_s_glay. DATA : gv_error TYPE c. DATA : BS1 TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK BLOCK WITH FRAME TITLE TEXT-001 . PARAMETERS p_p1 TYPE mara-matnr OBLIGATORY. "料號 SELECTION-SCREEN END OF BLOCK BLOCK .
INITIALIZATION . %_p_p1_%_app_%-text = '物料號'. "設定選擇螢幕初始化名稱
at SELECTION-SCREEN . PERFORM check_auth . "許可權檢查
START-OF-SELECTION . PERFORM get_DAta . "獲取資料屬性
End-OF-SELECTION . PERFORM diaplay_data. "展示alv
以下程式都使用新語法.不懂新語法後續會出相關內容
"獲取資料子程式 FORM get_DAta . select a~matnr,a~MEINS,b~maktx from mara as a inner join makt as b on a~matnr = b~MATNR where a~ZMATNR = @p_p1 into table @data(lt_outdata) . ENDFORM . *展示alv 子程式 直接複製 FORM diaplay_data . PERFORM set_alv_layout. "樣式設定 PERFORM bulid_fieldcat. "格式設定 PERFORM call_alv_func. "alv 函數 ENDFORM. "樣式設定 直接複製 FORM set_alv_layout . CLEAR: wa_layout. wa_layout-zebra = 'X'. "斑馬線 wa_layout-cwidth_opt = 'X'. "自動列寬 ENDFORM. "格式設定 固定換數 FORM bulid_fieldcat . DEFINE add_col. * ADD 1 TO pos. * lw_fieldcat-col_pos = pos. wa_fieldcat-fieldname = &1. wa_fieldcat-ref_field = &2. wa_fieldcat-ref_table = &3. wa_fieldcat-scrtext_l = &4. wa_fieldcat-outputlen = &5. wa_fieldcat-no_zero = &6. wa_fieldcat-edit = &7. wa_fieldcat-edit_mask = &8. wa_fieldcat-key = &9. CASE wa_fieldcat-fieldname. WHEN 'slbox'. wa_fieldcat-checkbox = 'X' . wa_fieldcat-edit = 'X' . wa_fieldcat-edit_mask = 'X'. WHEN OTHERS. ENDCASE . APPEND wa_fieldcat TO gt_fieldcat. CLEAR : wa_fieldcat. END-OF-DEFINITION. REFRESH: gt_fieldcat. "add_col 'matnr' space space '物料號' space space space space space. add_col 'MEINS' space space '單位' space space space space space. add_col 'maktx' space space '物料名' space space space space space. ENDFORM. "重新整理 固定複製 FORM refresh_alv . DATA: lo_grid TYPE REF TO cl_gui_alv_grid, lw_stable TYPE lvc_s_stbl. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lo_grid. lw_stable-row = 'X'. lw_stable-col = 'X'. lo_grid->refresh_table_display( EXPORTING is_stable = lw_stable EXCEPTIONS finished = 1 OTHERS = 2 ). ENDFORM. "固定,只需要傳內表就行 FORM call_alv_func . gs_glay-edt_cll_cb = abap_true. " 選中複選款,立刻觸發data changed 事件 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid "回撥程式 i_callback_pf_status_set = 'SET_PF_STATUS' i_callback_user_command = 'USER_COMMAND' i_grid_settings = gs_glay is_layout_lvc = wa_layout it_fieldcat_lvc = gt_fieldcat "需要顯示的內表的列 i_save = 'A' TABLES t_outtab = lt_outdata "需要顯示的資料 EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. ENDIF. ENDFORM. "staus 工具列 直接複製 FORM set_pf_status USING rt_extab TYPE slis_t_extab. DATA : lw_tab LIKE LINE OF rt_extab. REFRESH rt_extab. SET PF-STATUS 'STD' EXCLUDING rt_extab. ENDFORM. "使用者事件 ,這裡沒寫. 但是如果設定函數雙擊會apap dump FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CASE r_ucomm. * 匯入 WHEN '&IMPLE'. ENDCASE. ENDFORM. "許可權檢查,按照不同的情況呼叫不同的函數,這裡需要更換. *&---------------------------------------------------------------------* *& Form check_auth *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM check_auth . "select SINGLE WERKS, KUNNR into @data(ls_t001w) from t001w WHERE WERKS = @p_p1 . AUTHORITY-CHECK OBJECT 'M_MSEG_WMB' ID 'ACTVT' DUMMY ID 'WERKS' FIELD p_p1 . IF sy-subrc <> 0. * Implement a suitable exception handling here ENDIF. ENDFORM.
以上就為一個alv 的寫法 ,其中 70%以上的程式碼是固定的.
自己需要寫的地方, 選擇螢幕,獲取資料 ,資料處理,使用者事件,許可權. 這四個地方.
相比較上一個demo 這個例子程式碼少了很多, 但是比其他語言來講還是太複雜了.
大部分還是套路,固定這麼寫,就可以. 主要還是在程式及邏輯操作上.
使用新語法可以減少很多不必要的操作,比如定義結構,內表,關聯等.
以上就是APAP ALV進階寫法及優化詳解的詳細內容,更多關於APAP ALV寫法優化的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45