ABAP屏幕上显示LIST的三种方法
屏幕上顯示LIST的三種方法
在abap開發中,經常有用戶提出list的需求,實現的方法很多,通常用的有以下三種總結一下供大家參考:
1:手工添加-就是根據需要把LIST要顯示的內容一條一條加到LIST列表中。對于手工添加,其優點就是簡單,對列表數據少且固定的LIST較易實現,缺點就是維護量大。
2:函數調用-就是編寫一個顯示LIST的函數實現,這種方法可一次生成LIST。
3:子例程實現-就是在程序中編寫子例程實現LIST的顯示,和第二種方法大同小異。
*1:手工添加
??P_kostl_ID?=?'P_CBZX'.
??value-key?=?'0011002101'.
??value-text?=?'成本中心'.
??APPEND?value?TO?list.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????id?????=?P_CONGR_id
??????values?=?list.
*2:?函數調用
REPORT??z_functionlist.
**************取合并單元描述
DATA:?BEGIN?OF?i_kostl?OCCURS?0,
??????bukrs?LIKE?csks-bukrs,
??????kostl?LIKE?cskt-kostl,
??????ltext?LIKE?cskt-ltext,
??????name(50),
??????END?OF?i_kostl.
data:?p_name(30)?type?c.
*************CREAT?SCREEN
PARAMETERS:p_bukrs?LIKE?csks-bukrs?DEFAULT?'1100'.
PARAMETERS:?p_cbzx(30)?AS?LISTBOX?VISIBLE?LENGTH?45.
INITIALIZATION.
AT?SELECTION-SCREEN?OUTPUT.
??CALL?FUNCTION?'ZFI_LIST_KOSTL'
????EXPORTING
??????l_bukrs?=?p_bukrs
??????l_field?=?'P_CBZX'.
************************************************************
*?????顯示LIST的FUCTION定義
************************************************************
FUNCTION?zfi_list_kostl.
*"----------------------------------------------------------------------
*"*"Local?interface:
*"??IMPORTING
*"?????REFERENCE(L_BUKRS)?TYPE??BUKRS
*"?????REFERENCE(L_FIELD)?TYPE??C
*"----------------------------------------------------------------------
??TYPE-POOLS:?vrm.
??DATA:?congr_id?TYPE?vrm_id,
????????list???TYPE?vrm_values,
????????value?LIKE?LINE?OF?list.
??DATA:?BEGIN?OF?i_kostl?OCCURS?0,
????????bukrs?LIKE?csks-bukrs,
????????kostl?LIKE?cskt-kostl,
????????ltext?LIKE?cskt-ltext,
????????END?OF?i_kostl.
??congr_id?=?l_field.
??SELECT?csks~kostl?cskt~ltext?INTO?CORRESPONDING?FIELDS?OF?TABLE?i_kostl
????FROM?csks
??INNER?JOIN?cskt?ON?csks~kostl?EQ?cskt~kostl
??WHERE?csks~bukrs?=?l_bukrs.
??LOOP?AT?i_kostl.
????value-key?=?i_kostl-kostl?.
????CONCATENATE?i_kostl-kostl?'-'?i_kostl-ltext?INTO?value-text.
????APPEND?value?TO?list.
??ENDLOOP.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????id?????=?congr_id
??????values?=?list.
ENDFUNCTION.
*3:?子例程實現?――也相當于函數調用,不過這里用到的是子例程
在at-selection-screen output 事件中調用
生成LIST的例程實現動態LIST的生成。
DATA: p_name(30) ?type c.
AT?SELECTION-SCREEN?OUTPUT.
?p_name =?'P_CBZX'.
??PERFORM?get_kostl?USING?p_name.
*&---------------------------------------------------------------------*
*&??????Form??get_kostl
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??????-->PU_CBZX????text
*----------------------------------------------------------------------*
FORM?get_kostl?USING?l_name?TYPE?c.
**************CREAT?LISTBOX
??TYPE-POOLS:?vrm.
??DATA:?name?TYPE?vrm_id,
????????????list??TYPE?vrm_values,
????????????value?LIKE?LINE?OF?list.
??CLEAR?i_kostl.
??name?=?l_name.
??SELECT?csks~kostl?cskt~ltext?INTO?CORRESPONDING?FIELDS?OF?TABLE?i_kostl
????FROM?csks
??INNER?JOIN?cskt?ON?csks~kostl?EQ?cskt~kostl
??WHERE?csks~bukrs?=?p_bukrs.
??LOOP?AT?i_kostl.
????value-key?=?i_kostl-kostl?.
????CONCATENATE?i_kostl-kostl?'-'?i_kostl-ltext?INTO?value-text.
????APPEND?value?TO?list.
??ENDLOOP.
??CALL?FUNCTION?'VRM_SET_VALUES'
????EXPORTING
??????id?????=?name
??????values?=?list.
ENDFORM.????????????????????"?GET_KOSTL
總結
以上是生活随笔為你收集整理的ABAP屏幕上显示LIST的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP SMARTFORMS 之由竖打向
- 下一篇: VA01创建SO的增强点MV45AFZZ