zoukankan      html  css  js  c++  java
  • 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输入屏幕间的动作。

  • 相关阅读:
    Java NIO -- 通道 Channel
    【RF库Collections测试】Convert To List
    【RF库Collections测试】Create Dictionary
    【RF库Collections测试】combine lists
    【RF库Collections库测试】关键字append to list
    【RF库测试】关键字get time
    【RF库测试】DateTime库
    linux 统计命令执行后的行数或者统计目录下文件数目
    grep 同时满足多个关键字和满足任意关键字
    【python】一次执行多个linux命令
  • 原文地址:https://www.cnblogs.com/ruingy/p/3508320.html
Copyright © 2011-2022 走看看