如何在SAP的Screen中编写List报表
生活随笔
收集整理的這篇文章主要介紹了
如何在SAP的Screen中编写List报表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1
、相關命令
LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN <nnnn>].
LEAVE LIST-PROCESSING.
2、使用說明
3 、推薦設計思路
設計一個空屏幕,在需要調用list的屏幕的邏輯流中使用CALL SCREEN調用空屏幕。空屏幕的next screen設置為0,不需要PAI,只需要在PBO中設計一個Module,這個module的具體步驟如下:
REPORT demo_leave_to_list_processing .
TABLES sdyn_conn.
DATA: wa_spfli TYPE spfli,
?? flightdate TYPE sflight-fldate.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN_100'.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE user_command_0100.
CALL SCREEN 500.
SET SCREEN 100.
ENDMODULE.
MODULE call_list_500 OUTPUT.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
SET PF-STATUS space.
SUPPRESS DIALOG.
SELECT carrid connid cityfrom cityto
??? FROM spfli
??? INTO CORRESPONDING FIELDS OF wa_spfli
??? WHERE carrid = sdyn_conn-carrid.
??? WRITE: / wa_spfli-carrid, wa_spfli-connid,
?? ?? ?? wa_spfli-cityfrom, wa_spfli-cityto.
??? HIDE: wa_spfli-carrid, wa_spfli-connid.
ENDSELECT.
CLEAR: wa_spfli-carrid.
ENDMODULE.
TOP-OF-PAGE.
WRITE text-001 COLOR COL_HEADING.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE sy-lisel COLOR COL_HEADING.
ULINE.
AT LINE-SELECTION.
CHECK not wa_spfli-carrid is initial.
SELECT fldate
??? FROM sflight
??? INTO flightdate
??? WHERE carrid = wa_spfli-carrid AND
?? ?? ??? connid = wa_spfli-connid.
??? WRITE / flightdate.
ENDSELECT.
CLEAR: wa_spfli-carrid.
該示例屏幕 100 只包含一個輸入字段( SDYN_CONN - CARRID ),在屏幕 100 的邏輯流中會調用 list 處理 . 屏幕 100 的邏輯流如下:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
在屏幕100的PAI的module USER_COMMAND_100 將使用CALL SCREEN調用屏幕500。屏幕500的邏輯流中封裝了所有List處理,屏幕500的邏輯流如下:
PROCESS BEFORE OUTPUT.
MODULE CALL_LIST_500.
PROCESS AFTER INPUT.
屏幕500的PBO的module CALL_LIST_500定義了list處理代碼。另外由于屏幕500的屏幕流設置為0,該程序從List處理返回時到屏幕100的USER_COMMAND_100的調用CALL SCREEN 500的語句之后.
該程序會在list處理時顯示一個明細List,具體代碼參見AT LINE-SELECTION、TOP-OF-PAGE 和 TOP-OF-PAGE DURING LINE-SELECTION事件代碼.
LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN <nnnn>].
LEAVE LIST-PROCESSING.
2、使用說明
3 、推薦設計思路
設計一個空屏幕,在需要調用list的屏幕的邏輯流中使用CALL SCREEN調用空屏幕。空屏幕的next screen設置為0,不需要PAI,只需要在PBO中設計一個Module,這個module的具體步驟如下:
- 首先調用LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
- 為list設置GUI status ;如:設置SPACE 或者為自己定義的.
- 使用下列語句使空屏幕不輸出:
SUPPRESS DIALOG.
or
LEAVE SCREEN. - 進行List輸出和處理.
REPORT demo_leave_to_list_processing .
TABLES sdyn_conn.
DATA: wa_spfli TYPE spfli,
?? flightdate TYPE sflight-fldate.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN_100'.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE user_command_0100.
CALL SCREEN 500.
SET SCREEN 100.
ENDMODULE.
MODULE call_list_500 OUTPUT.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
SET PF-STATUS space.
SUPPRESS DIALOG.
SELECT carrid connid cityfrom cityto
??? FROM spfli
??? INTO CORRESPONDING FIELDS OF wa_spfli
??? WHERE carrid = sdyn_conn-carrid.
??? WRITE: / wa_spfli-carrid, wa_spfli-connid,
?? ?? ?? wa_spfli-cityfrom, wa_spfli-cityto.
??? HIDE: wa_spfli-carrid, wa_spfli-connid.
ENDSELECT.
CLEAR: wa_spfli-carrid.
ENDMODULE.
TOP-OF-PAGE.
WRITE text-001 COLOR COL_HEADING.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE sy-lisel COLOR COL_HEADING.
ULINE.
AT LINE-SELECTION.
CHECK not wa_spfli-carrid is initial.
SELECT fldate
??? FROM sflight
??? INTO flightdate
??? WHERE carrid = wa_spfli-carrid AND
?? ?? ??? connid = wa_spfli-connid.
??? WRITE / flightdate.
ENDSELECT.
CLEAR: wa_spfli-carrid.
該示例屏幕 100 只包含一個輸入字段( SDYN_CONN - CARRID ),在屏幕 100 的邏輯流中會調用 list 處理 . 屏幕 100 的邏輯流如下:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
在屏幕100的PAI的module USER_COMMAND_100 將使用CALL SCREEN調用屏幕500。屏幕500的邏輯流中封裝了所有List處理,屏幕500的邏輯流如下:
PROCESS BEFORE OUTPUT.
MODULE CALL_LIST_500.
PROCESS AFTER INPUT.
屏幕500的PBO的module CALL_LIST_500定義了list處理代碼。另外由于屏幕500的屏幕流設置為0,該程序從List處理返回時到屏幕100的USER_COMMAND_100的調用CALL SCREEN 500的語句之后.
該程序會在list處理時顯示一個明細List,具體代碼參見AT LINE-SELECTION、TOP-OF-PAGE 和 TOP-OF-PAGE DURING LINE-SELECTION事件代碼.
總結
以上是生活随笔為你收集整理的如何在SAP的Screen中编写List报表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提高BSEG处理效率
- 下一篇: LIST-PROCESSING命令的使用