• LIST-PROCESSING用法 ABAP任意时刻进行List输出_SAP


    如何在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的具体步骤如下:

    • 首先调用LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
    • 为list设置GUI status ;如:设置SPACE 或者为自己定义的.
    • 使用下列语句使空屏幕不输出:
      SUPPRESS DIALOG.
      or
      LEAVE SCREEN.
    • 进行List输出和处理.

    4、示例
    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_CONNCARRID ),在屏幕100的逻辑流中会调用list处理.屏幕100的逻辑流如下:

    PROCESS BEFORE OUTPUT.
       MODULE STATUS_0100. 
    PROCESS AFTER INPUT.
       MODULE CANCEL AT EXIT-COMMAND.
       MODULE USER_COMMAND_0100.

    在屏幕100PAImodule USER_COMMAND_100 将使用CALL SCREEN调用屏幕500屏幕500的逻辑流中封装了所有List处理,屏幕500的逻辑流如下:

    PROCESS BEFORE OUTPUT.
       MODULE CALL_LIST_500. 
    PROCESS AFTER INPUT.

    屏幕500PBOmodule CALL_LIST_500定义了list处理代码。另外由于屏幕500的屏幕流设置为0,该程序从List处理返回时到屏幕100USER_COMMAND_100的调用CALL SCREEN 500的语句之后
    该程序会在list处理时显示一个明细List,具体代码参见AT LINE-SELECTIONTOP-OF-PAGE  TOP-OF-PAGE DURING LINE-SELECTION事件代码.

    LIST-PROCESSING命令的使用

    List-Processing用于在程序中任意地方开始List输出,可以放在代码的任何地方。LEAVE TO LIST-PROCESSING 这段命令做两件事: 

    • 切换到List输出模式

    在这种模式下,标准的List输出所用到的命令:WRITE, ULINE, SKIP等全部可以使用,还包括AT LINE-SELECTION事件、功能码(Function keys)、20 个list level等。 

    • 将显示List 输出的屏幕设置为当前调用处的下个屏幕(Following Screen)

    程序将离开当前屏幕进入List输出的屏幕,进行接下来的操作,但是Leave screen之后,仍将返回前一个调用Leave to list-processing这条命令屏幕的代码的下一行继续执行。示例代码写在最后了,下面说明一下重要的地方: 
    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
    PERFORM EDIT_LIST.
    LEAVE SCREEN. 

    注意这一段代码,第一行的作用前面已经说过了,逻辑将转入下一屏幕(不是普通屏幕,是特殊屏幕)。第二行是一个子程序,在这里面要特别注意的是 

    • 设置STATUS, "SET PF-STATUS 'XXXX'",如果不设置的话,会把调用该语句的屏幕的STATUS继承过去。
    • 在设置STATUS之后,用WRITE等命令输出。
    • LIST屏幕上的按钮响应目前还没研究明白,明白人请留言,谢谢!

    LIST-PROCESSING的工作过程 
    运行时,MODULE-POOL放弃屏幕的控制权,可以执行LIST 输出代码,如WRITE等。我们可以选择让LIST输出屏幕替代当前屏幕,或者是作为下一个屏幕,但是不管是哪一种方式,LIST输出的屏幕将在当前屏幕逻辑执行完(LEAVE SCREEN或PAI执行完之时)之后显示,也就是说,WRITE等命令仍然是将输出的东西暂存在缓存中。 

    • LIST输出作为下一个屏幕

    将LEAVE TO LIST-PROCESSING放在PAI中,当LIST屏幕执行完之后,系统将重新进入当前屏幕PBO逻辑,显示屏幕。 

    • LIST输出替换当前屏幕

    将LEAVE TO LIST-PROCESSING放在PBO中,并以LEAVE SCREEN命令结束当前屏幕逻辑。这种情况下,当前屏幕将被替换,不再显示。 
    R/3系统中有一个DEMO:可以通过TCODE: TZ70运行。参考:SAP Online Help 
    **** ABAP module and form: **** 
    MODULE PREPARE_LIST OUTPUT.
    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
    PERFORM EDIT_LIST.
    LEAVE SCREEN.
    ENDMODULE. 

    FORM EDIT_LIST.
    SET PF-STATUS 'LIST'.
    SET TITLEBAR 'LST' WITH SFLIGHT-CONNID SFLIGHT-CARRID.

    NEW-PAGE LINE-SIZE 72.
    SELECT * FROM SFLIGHT WHERE CARRID = SFLIGHT-CARRID
    AND CONNID = SFLIGHT-CONNID.
    WRITE: / SY-VLINE NO-GAP,
    SFLIGHT-FLDATE COLOR 4 INTENSIFIED OFF NO-GAP,
    SY-VLINE NO-GAP,
    SFLIGHT-PRICE COLOR 2 INTENSIFIED OFF NO-GAP, 
    .......
    ENDFORM. 


    LEAVE TO LIST-PROCESSING 是退出其他屏幕后,到List输入的屏幕,例如:WRITE 语句输入的屏幕。
    LEAVE LIST-PROCESSING是在其他屏幕退出,到List输入屏幕间的动作。

  • 相关阅读:
    28完全背包+扩展欧几里得(包子凑数)
    HDU 3527 SPY
    POJ 3615 Cow Hurdles
    POJ 3620 Avoid The Lakes
    POJ 3036 Honeycomb Walk
    HDU 2352 Verdis Quo
    HDU 2368 Alfredo's Pizza Restaurant
    HDU 2700 Parity
    HDU 3763 CDs
    POJ 3279 Fliptile
  • 原文地址:https://www.cnblogs.com/ruingy/p/3508320.html
Copyright © 2020-2023  润新知