ABAP ALV控件的使用
來源:程序員人生 發布時間:2016-06-30 16:39:13 閱讀次數:7573次
ALV控件的使用
ALV(SAP List Viewer)控件是SAP業務中最經常使用的控件之1,本章先用1個簡單的例子介紹用ALV控件顯示數據,再以實例方式介紹ALV的強大功能。
本章主要內容有:
(1)簡單的ALV控件實例
(2)自定義輸出字段的ALV控件實例
(3)在屏幕上建立ALV控件
(4)自定義ALV控件的工具條按鈕
(5)處理ALV控件雙擊事件
(6)通過ALV控件編輯內表和
數據庫更新
(7)ALV Tree的使用
1、簡單的ALV控件實例
以學校表(YTJAYSCHOOL)為例,使用數據字典定義結構,通過ALV控件顯示數據
REPORT YTEST20160617001.
*定義內表
DATA WA_SCHOOL LIKE TABLE OF YTJAYSCHOOL WITH HEADER LINE.
*內表賦值
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
*通過數據字典結構顯示ALV
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
TABLES
T_OUTTAB = WA_SCHOOL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
輸出結果:

2、自定義輸出字段的ALV控件實例
REPORT YTEST20160617002.
*ALV使用到的類庫
TYPE-POOLS:SLIS.
*1列描寫
DATA WA_ALV_FIELD TYPE SLIS_FIELDCAT_ALV.
*列描寫內表,列清單
DATA WA_ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
*定義內表
DATA WA_SCHOOL LIKE TABLE OF YTJAYSCHOOL WITH HEADER LINE.
*內表賦值
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
*定義第1到第4個字段
WA_ALV_FIELD-COL_POS = 1.
WA_ALV_FIELD-FIELDNAME = 'YCT_ID'.
WA_ALV_FIELD-SELTEXT_M = '城市編號'.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.
WA_ALV_FIELD-COL_POS = 2.
WA_ALV_FIELD-FIELDNAME = 'YSH_ID'.
WA_ALV_FIELD-SELTEXT_M = '學校編號'.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.
WA_ALV_FIELD-COL_POS = 3.
WA_ALV_FIELD-FIELDNAME = 'YSH_NAME'.
WA_ALV_FIELD-SELTEXT_M = '學校名稱'.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.
WA_ALV_FIELD-COL_POS = 4.
WA_ALV_FIELD-FIELDNAME = 'YSH_ADDR'.
WA_ALV_FIELD-SELTEXT_M = '學校地址'.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
IT_FIELDCAT = WA_ALV_FIELDCAT
TABLES
T_OUTTAB = WA_SCHOOL.
輸出結果:

3、在屏幕上建立ALV控件
3.1、定義SCREEN窗口
在屏幕上創建兩個文本元素控件、1個退出按鈕控件、1個定制控制控件
3.2、定義邏輯流
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
3.3、主程序代碼
REPORT YTEST20160620001.
*功能碼返回值
DATA:OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
*定義內表,變量需要傳遞,不加HEADER LINE
DATA WA_SCHOOL TYPE TABLE OF YTJAYSCHOOL.
*內表賦值
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
*ALVDATA是屏幕100中定義控制控件的名稱
DATA:WA_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
*直接調用窗口
CALL SCREEN 100.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
*如果窗口還沒有創建ALV對象則創建它
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING
I_PARENT = WA_CUSTOM_CONTAINER.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
CHANGING
IT_OUTTAB = WA_SCHOOL.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
輸出結果:
4、自定義ALV控件的工具條按鈕
在ALV的工具條上增加1個自定義的按鈕,單擊它彈出窗口提示選擇行數據內容。履行結果如圖

單擊自定義按鈕后輸出如圖

程序處理流程的說明:
定義ALV控件相干事件、接口和實現方法等,主要定義以下事件。
(1)ALV控件的工具條處理事件,定義了新按鈕和功能碼;
(2)ALV控件的功能碼處理事件,定義用戶單擊按鈕產生的功能碼事件。
主程序代碼以下:
REPORT YTEST20160620002.
INCLUDE <ICON>.
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
DATA: WA_SCHOOL TYPE TABLE OF YTJAYSCHOOL,
A_SCHOOL LIKE YTJAYSCHOOL.
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
DATA:WA_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
CALL SCREEN 100.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_TOOLBAR
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE,
HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOOLBAR.
DATA:LS_TOOLBAR TYPE STB_BUTTON.
CLEAR LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
MOVE 'SHOW_DETA' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_PPE_VNODE TO LS_TOOLBAR-ICON.
MOVE '學校明細顯示' TO LS_TOOLBAR-QUICKINFO.
MOVE '學校明細顯示' TO LS_TOOLBAR-TEXT.
MOVE '' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD.
METHOD HANDLE_USER_COMMAND.
DATA:LT_ROWS TYPE LVC_T_ROW.
CASE E_UCOMM.
WHEN 'SHOW_DETA'.
CALL METHOD ALV_GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = LT_ROWS.
CALL METHOD CL_GUI_CFW=>FLUSH.
IF SY-SUBRC = 0.
MESSAGE S005(YMESS) WITH '已選擇行'.
PERFORM MESSDETA TABLES LT_ROWS.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
CHANGING
IT_OUTTAB = WA_SCHOOL.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR ALV_GRID.
SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR FOR ALV_GRID.
CALL METHOD ALV_GRID->SET_TOOLBAR_INTERACTIVE.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
FORM MESSDETA TABLES P_ET_INDEX_ROWS STRUCTURE LVC_S_ROW.
DATA:LS_SELECTED_LINE LIKE LVC_S_ROW,
LF_ROW_INDEX TYPE LVC_INDEX.
DATA:S1(200) TYPE C,
S2(3) TYPE C.
S2 = '-'.
LOOP AT P_ET_INDEX_ROWS INTO LS_SELECTED_LINE.
LF_ROW_INDEX = LS_SELECTED_LINE-INDEX.
READ TABLE WA_SCHOOL INDEX LF_ROW_INDEX INTO A_SCHOOL.
S1 = '選擇行內容'.
CONCATENATE S1 A_SCHOOL-YSH_NAME A_SCHOOL-YSH_ADDR
INTO S1 SEPARATED BY S2.
MESSAGE I005(YMESS) WITH S1.
ENDLOOP.
ENDFORM.
5、處理ALV雙擊事件
主程序代碼以下
REPORT YTEST20160620003.
*功能碼返回值
DATA:OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
*定義內表,變量需要傳遞,不加HEADER LINE
DATA WA_SCHOOL TYPE TABLE OF YTJAYSCHOOL.
*內表賦值
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
*定義窗口定制控件,定義ALV對象
DATA:WA_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
*定義事件類型
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
*定義事件
DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
*直接調用窗口
CALL SCREEN 100.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
DATA:LI_SCHOOL LIKE LINE OF WA_SCHOOL.
READ TABLE WA_SCHOOL INDEX E_ROW-INDEX INTO LI_SCHOOL.
*將行列等信息合并到字符串
DATA:S1(100) TYPE C.
* CONCATENATE '行:' E_ROW-INDEX '列名:' E_COLUMN-FIELDNAME INTO S1.
CONCATENATE S1 'SCHOOL NAME:' LI_SCHOOL-YSH_NAME INTO S1.
CONCATENATE S1 'SCHOOL ADDR:' LI_SCHOOL-YSH_ADDR INTO S1.
*在狀態條顯示單擊的行與列信息
MESSAGE S208(00) WITH S1.
ENDMETHOD.
ENDCLASS.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
*如果窗口還沒有創建ALV對象則創建它
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
CHANGING
IT_OUTTAB = WA_SCHOOL.
*ALV對象分配雙擊事件
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK
FOR ALV_GRID.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
輸出界面以下圖,雙擊時,注意狀態條顯示的信息:學校名稱、學校地址的值。
6、通過ALV控件編輯內表和數據庫更新
處理進程以下:
(1)設定ALV控件可以編輯;
(2)退出屏幕時將數據更新到內表;
(3)捕捉ALV控件的數據更改信息,將ALV控件的刪除行信息保存到內表中;
(4)在輸出時,比較刪除行和最后的內表,刪除重復的行;
(5)將數據更新到數據表。
主程序代碼以下:
REPORT YTEST20160620004.
DATA:OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
TABLES YTJAYSCHOOL.
DATA LS_SCHOOL TYPE YTJAYSCHOOL.
DATA WA_SCHOOL TYPE TABLE OF YTJAYSCHOOL.
DATA WADEL_SCHOOL TYPE TABLE OF YTJAYSCHOOL.
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
DATA:WA_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA WA_LAYOUT TYPE LVC_S_LAYO.
WA_LAYOUT-EDIT = 'X'.
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
TYPES: DEL_ROWS TYPE STANDARD TABLE OF YTJAYSCHOOL.
DATA: DDEL_ROWS TYPE STANDARD TABLE OF YTJAYSCHOOL.
METHODS:
HANDLE_DATA_CHANGED
FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED.
METHODS:
UPDATE_DELTA_TABLES
IMPORTING
PR_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
METHODS:
GET_DELETED_ROWS
EXPORTING
DELETED_ROWS TYPE DEL_ROWS.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DATA_CHANGED.
CALL METHOD UPDATE_DELTA_TABLES( ER_DATA_CHANGED ).
ENDMETHOD.
METHOD UPDATE_DELTA_TABLES.
DATA: L_DEL_ROW TYPE LVC_S_MOCE.
LOOP AT PR_DATA_CHANGED->MT_DELETED_ROWS INTO L_DEL_ROW.
READ TABLE WA_SCHOOL INTO LS_SCHOOL INDEX L_DEL_ROW-ROW_ID.
IF SY-SUBRC NE 0.
MESSAGE E208(00) WITH '處理毛病'.
ELSE.
APPEND LS_SCHOOL TO DDEL_ROWS.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD GET_DELETED_ROWS.
DELETED_ROWS = ME->DDEL_ROWS.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
CALL SCREEN 100.
WRITE / '---------------刪除的內表記錄---------------'.
WRITE / '____________________________________________'.
CALL METHOD EVENT_RECEIVER->GET_DELETED_ROWS
IMPORTING
DELETED_ROWS = WADEL_SCHOOL.
LOOP AT WADEL_SCHOOL INTO YTJAYSCHOOL.
WRITE:/ YTJAYSCHOOL-YSH_ID,YTJAYSCHOOL-YSH_NAME,YTJAYSCHOOL-YSH_ADDR.
ENDLOOP.
WRITE:/ '---------------更新后的內表記錄---------------:'.
WRITE:/ '____________________________________________'.
LOOP AT WA_SCHOOL INTO YTJAYSCHOOL.
WRITE:/ YTJAYSCHOOL-YSH_ID,YTJAYSCHOOL-YSH_NAME,YTJAYSCHOOL-YSH_ADDR.
ENDLOOP.
* WHEN 'SAVE'.
* MODIFY YTJAYSCHOOL FROM TABLE WA_SCHOOL.
* IF SY-SUBRC NE 0.
* MESSAGE I005(YMESS) WITH '更新數據毛病'.
* EXIT.
* ELSE.
* MESSAGE I005(YMESS) WITH '更新數據OK'.
* ENDIF.
*
* DELETE YTJAYSCHOOL FROM TABLE DELA_SCHOOL.
* IF SY_SUBRC NE 0.
* MESSAGE I005(YMESS) WITH '更新數據毛病'.
* ELSE.
* MESSAGE I005(YMESS) WITH '更新數據OK'.
* ENDIF.
END-OF-SELECTION.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DATA_CHANGED FOR ALV_GRID.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
IS_LAYOUT = WA_LAYOUT
CHANGING
IT_OUTTAB = WA_SCHOOL.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
DATA L_RET VALUE 'X'.
CALL METHOD ALV_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_RET.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
輸出結果:

刪除最后兩行數據,點擊“CANCEL"按鈕,結果以下:
7、ALV Tree的使用
在SAP業務系統中,大量地使用了ALV Tree對象,該對象在表格基礎上對同類數據進行歸類,并對各分類能進行數據匯總。如圖

以學校表(YTJAYSCHOOL)為例:
(1)以城市、學校分類;
(2)在右屏輸出學校名稱、學校地址,并控制其輸出長度。
處理進程:
(1)建立程序和屏幕,在屏幕上建立定制控制對象,定義好邏輯流;
(2)建立好PAI、PBO事件;
(3)在PAI中定義建立定制控制對象,并建立ALV Tree對象;
(4)建立ALV Tree對象的標題;
(5)建立右屏輸出字段清單、字段長度等內容;
(6)建立Tree分類字段清單及輸出前后順序;
(7)顯示ALV Tree對象。
主程序代碼:
REPORT YTEST20160621001.
DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
DATA: GB_FIELDCAT TYPE LVC_T_FCAT.
DATA: GB_SORTFLD TYPE LVC_T_SORT.
DATA WA_SCHOOL TYPE TABLE OF YTJAYSCHOOL.
SELECT * INTO TABLE WA_SCHOOL FROM YTJAYSCHOOL.
DATA: WA_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',
ALV_GRID TYPE REF TO CL_GUI_ALV_TREE_SIMPLE,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
CALL SCREEN 100.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
IF WA_CUSTOM_CONTAINER IS INITIAL.
DATA LS_LIST_COMM TYPE SLIS_T_LISTHEADER.
DATA LS_ALIST_COMM TYPE SLIS_LISTHEADER.
LS_ALIST_COMM-TYP = 'H'.
LS_ALIST_COMM-INFO = 'MY ALV TREE Testing'.
APPEND LS_ALIST_COMM TO LS_LIST_COMM.
PERFORM BLDCAT.
PERFORM BLDSORTFLD.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_LIST_COMMENTARY = LS_LIST_COMM
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
CHANGING
IT_SORT = GB_SORTFLD
IT_FIELDCATALOG = GB_FIELDCAT
IT_OUTTAB = WA_SCHOOL.
CALL METHOD ALV_GRID->EXPAND_TREE
EXPORTING
I_LEVEL = 1.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
FORM BLDCAT.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'YTJAYSCHOOL'
CHANGING
CT_FIELDCAT = GB_FIELDCAT.
DATA LS_FLDCAT TYPE LVC_S_FCAT.
LOOP AT GB_FIELDCAT INTO LS_FLDCAT.
CASE LS_FLDCAT-FIELDNAME.
WHEN 'YSH_NAME' OR 'YSH_ADDR'.
LS_FLDCAT-OUTPUTLEN = 15.
WHEN OTHERS.
LS_FLDCAT-NO_OUT = 'X'.
ENDCASE.
MODIFY GB_FIELDCAT FROM LS_FLDCAT.
ENDLOOP.
ENDFORM.
FORM BLDSORTFLD.
DATA LS_SORTFLD TYPE LVC_S_SORT.
LS_SORTFLD-SPOS = 1.
LS_SORTFLD-FIELDNAME = 'YCT_ID'.
LS_SORTFLD-UP = 'X'.
LS_SORTFLD-SUBTOT = 'X'.
APPEND LS_SORTFLD TO GB_SORTFLD.
LS_SORTFLD-SPOS = 2.
LS_SORTFLD-FIELDNAME = 'YSH_ID'.
LS_SORTFLD-UP = 'X'.
LS_SORTFLD-SUBTOT = 'X'.
APPEND LS_SORTFLD TO GB_SORTFLD.
* LS_SORTFLD-SPOS = 3.
* LS_SORTFLD-FIELDNAME = 'YSH_NAME'.
* LS_SORTFLD-UP = 'X'.
* LS_SORTFLD-SUBTOT = 'X'.
* APPEND LS_SORTFLD TO GB_SORTFLD.
*
* LS_SORTFLD-SPOS = 4.
* LS_SORTFLD-FIELDNAME = 'YSH_ADDR'.
* LS_SORTFLD-UP = 'X'.
* LS_SORTFLD-SUBTOT = 'X'.
* APPEND LS_SORTFLD TO GB_SORTFLD.
ENDFORM.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈