Abap/4制作报表(6)

来源:互联网 发布:浙江每日互动网络 编辑:程序博客网 时间:2024/05/18 19:20

*&---------------------------------------------------------------------*
*& Report  Z_CPT6_6                                                    *
*&                                                                     *
*&---------------------------------------------------------------------*
*&          标准列表                           *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_CPT6_6                                                    .

INCLUDE <icon>.

TYPES:BEGIN OF linetype,
          cityfrom LIKE spfli-cityfrom,
          cityto LIKE spfli-cityto,
          carrid LIKE spfli-carrid,
          connid LIKE spfli-connid,
          countryfr LIKE spfli-countryfr,
          countryto LIKE spfli-countryto,
          fldate LIKE sflight-fldate,
          price LIKE sflight-price,
          currency LIKE sflight-currency,
          seatsmax LIKE sflight-seatsmax,
          seatsocc LIKE sflight-seatsocc,
      END OF linetype.

CONSTANTS:pos_cl TYPE i VALUE 6,
          pos_c3 TYPE i VALUE 30,
          pos_c4 TYPE i VALUE 58,
          pos_c5 TYPE i VALUE 68,
          line_size TYPE i VALUE 100.

CONSTANTS mark VALUE 'X'.


*定义内表
DATA:it_flights TYPE STANDARD TABLE OF linetype,
     wa_flights TYPE linetype.

*定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK conn WITH FRAME TITLE text-tl1.
SELECT-OPTIONS:so_car FOR wa_flights-carrid,
               so_con FOR wa_flights-connid.
SELECTION-SCREEN END OF BLOCK conn.

 


SELECTION-SCREEN BEGIN OF BLOCK flight WITH FRAME TITLE text-tl2.
*   如果加了关键字 NO-EXTENSION就会隐藏扩展项
    SELECT-OPTIONS so_fdt FOR wa_flights-fldate NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK flight.


SELECTION-SCREEN BEGIN OF BLOCK param
                       WITH FRAME TITLE text-tl3.
    SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.
        PARAMETERS:all RADIOBUTTON GROUP rbg1,
                   national RADIOBUTTON GROUP rbg1,
                   internat RADIOBUTTON GROUP rbg1 DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK radio.
    PARAMETERS country LIKE wa_flights-countryfr.
SELECTION-SCREEN END OF BLOCK param.

*处理页眉
TOP-OF-PAGE.
*Title
FORMAT COLOR COL_HEADING INTENSIFIED ON.
ULINE.
WRITE: / sy-vline,
         'Flight data'(001),
         AT line_size sy-vline.
ULINE.

*Column header
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: sy-vline,'Departure location'(004),AT line_size sy-vline.
WRITE: sy-vline,'Arrival location'(004),AT line_size sy-vline.
WRITE: sy-vline,AT pos_cl 'Flight'(002).

*Fix left scroll boundary
SET LEFT SCROLL-BOUNDARY.
WRITE:'Date'(003),
       AT pos_c3 'Price'(006),
       AT pos_c4 'Max.'(008),
       AT pos_c5 'Occ.'(009),
       AT line_size sy-vline.
ULINE.

 


*初始事件
INITIALIZATION.
MOVE:'AA' TO so_car-low,
     'QF' TO so_car-high,
     'BT' TO so_car-option,
     'I' TO so_car-sign.
APPEND so_car.
CLEAR so_car.
MOVE: 'AZ' TO so_car-low,
      'EQ' TO so_car-option,
      'E' TO so_car-sign.
APPEND so_car.
CLEAR so_car.

 

*PAI事件,检查输入区域param是否有输入问题
AT SELECTION-SCREEN ON BLOCK param.
    CHECK national = 'X' AND country = space.
    MESSAGE e003(bc405).

*start-of-selection事件
START-OF-SELECTION.
CASE mark.
    WHEN all.
        SELECT * FROM spfli INNER JOIN sflight
                           ON spfli~carrid = sflight~carrid
                           AND spfli~connid = sflight~connid
                  INTO CORRESPONDING FIELDS OF TABLE it_flights
                  WHERE spfli~carrid IN so_car
                     AND spfli~connid IN so_con
                     AND sflight~fldate IN so_fdt
                     AND spfli~countryfr = spfli~countryto
                     AND spfli~countryfr = country.
     WHEN internat.
         SELECT * FROM spfli INNER JOIN sflight
                              ON spfli~carrid = sflight~carrid
                              AND spfli~connid = sflight~connid
                  INTO CORRESPONDING FIELDS OF TABLE it_flights
                  WHERE spfli~carrid IN so_car
                    AND spfli~connid IN so_con
                    AND sflight~fldate IN so_fdt
                    AND spfli~countryfr NE spfli~countryto.
ENDCASE.

 

*END-OF-SELECTION事件
END-OF-SELECTION.
SORT it_flights BY cityfrom cityto carrid connid.
PERFORM data_output.

 


*子程序
FORM data_output.
    LOOP AT it_flights INTO wa_flights.
        AT NEW cityfrom.
            NEW-PAGE.
            FORMAT COLOR COL_GROUP INTENSIFIED ON.
            WRITE: / sy-vline,wa_flights-cityfrom,
                     AT line_size sy-vline.
            FORMAT RESET.
        ENDAT.

        AT NEW cityto.
            FORMAT COLOR COL_GROUP INTENSIFIED OFF.
            WRITE: / sy-vline,wa_flights-cityto,
                     AT line_size sy-vline.
            FORMAT RESET.
        ENDAT.

        FORMAT COLOR COL_KEY INTENSIFIED ON.
        IF wa_flights-countryfr EQ wa_flights-countryto.
            WRITE: / sy-vline,icon_space AS ICON CENTERED.
        ELSE.
            WRITE: / sy-vline,icon_bw_gis AS ICON CENTERED.
        ENDIF.

        WRITE: wa_flights-carrid,
               wa_flights-connid.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE: wa_flights-fldate,
               wa_flights-price CURRENCY wa_flights-currency,
               wa_flights-currency,
               wa_flights-seatsmax,
               wa_flights-seatsocc,
               AT line_size sy-vline.
        FORMAT RESET.

        AT END OF connid.
            SUM.
            FORMAT COLOR COL_TOTAL.
            WRITE: / sy-vline,
                     'Total'(007),
                     wa_flights-seatsmax UNDER wa_flights-seatsmax,
                     wa_flights-seatsocc UNDER wa_flights-seatsocc,
                     AT line_size sy-vline.
            FORMAT RESET.
        ENDAT.

        AT END OF cityfrom.
            ULINE.
        ENDAT.

    ENDLOOP.
ENDFORM.

原创粉丝点击