SAP的ALV列表输出示题2

 


*&---------------------------------------------------------------------*
*& Report ZTEST_TRAIN *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ztest_train_01 NO STANDARD PAGE HEADING
LINE-SIZE 183
LINE-COUNT 60.

*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
TYPE-POOLS:
slis.
*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
TABLES:
spfli.

*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPES: BEGIN OF typ_output,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
airpto TYPE spfli-airpto,
fltime TYPE spfli-fltime,
deptime TYPE spfli-deptime,
arrtime TYPE spfli-arrtime,
distance TYPE spfli-distance,
END OF typ_output.
*----------------------------------------------------------------------*
* DATA
*----------------------------------------------------------------------*
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gh_fieldcat TYPE slis_fieldcat_alv.

DATA: gw_layout TYPE slis_layout_alv,
gw_exit_caused_by_caller TYPE c,
gw_exit_caused_by_user TYPE slis_exit_by_user,
gw_repid TYPE sy-repid.

DATA: gt_events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
gw_status_set TYPE slis_formname VALUE 'PF_STATUS_SET',
gw_user_command TYPE slis_formname VALUE 'USER_COMMAND',
gw_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gw_top_of_list TYPE slis_formname VALUE 'TOP_OF_LIST',
gw_end_of_list TYPE slis_formname VALUE 'END_OF_LIST'.

DATA: gw_variant TYPE disvariant,
gw_save TYPE c.

DATA: gw_count TYPE n.
* STRUCTURE
DATA gh_output TYPE typ_output.
* INNER TABLE
DATA gt_output TYPE STANDARD TABLE OF typ_output.

CONSTANTS:
c_text001(12) TYPE c VALUE 'Airline Code',
c_text002(25) TYPE c VALUE 'Flight Connection Number',
c_text003(12) TYPE c VALUE 'Country From',
c_text004(14) TYPE c VALUE 'Departure City',
c_text005(17) TYPE c VALUE 'Departure Airport',
c_text006(10) TYPE c VALUE 'Country To',
c_text007(12) TYPE c VALUE 'Arrival city',
c_text008(19) TYPE c VALUE 'Destination airport',
c_text009(12) TYPE c VALUE 'Flight time',
c_text010(14) TYPE c VALUE 'Departure time',
c_text011(12) TYPE c VALUE 'Arrival time',
c_text012(8) TYPE c VALUE 'Distance'.

*----------------SELECTION SCREEN DEFINATION---------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE blk1_til.
*PARAMETERS:
* P_CARRID LIKE SPFLI-CARRID.
SELECT-OPTIONS:
s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK blk1.

*----------------OUTPUT SCREEN DEFINATION------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE blk2_til.
PARAMETERS:
p_list RADIOBUTTON GROUP grp1,
p_alv RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK blk2.

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.

* INITIAL SELECTION SCREEN
  PERFORM initial_screen.

*----------------------------------------------------------------------*
* TOP-OF-PAGE
*----------------------------------------------------------------------*
TOP-OF-PAGE.

  IF p_list = 'X'.
    PERFORM write_list_header.
  ENDIF.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.

* GET SELECT DATA
  PERFORM select_data.

*----------------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.

* OUTPUT RESULT
  PERFORM output_result.

*----------------------------------------------------------------------*
* FORMS
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INITIAL_SCREEN
*&---------------------------------------------------------------------*
* INITIAL SELECTION SCREEN
*----------------------------------------------------------------------*
FORM initial_screen.

  %_s_connid_%_app_%-text = 'Flight Connection Number'.
* %_P_CARRID_%_APP_%-TEXT = 'Airline Code'.
  blk1_til = 'Select Option'.

  %_p_list_%_app_%-text = 'List output'.
  %_p_alv_%_app_%-text = 'ALV output'.
  blk2_til = 'Output'.

ENDFORM. " INITIAL_SCREEN
*&---------------------------------------------------------------------*
*& Form SELECT_DATA
*&---------------------------------------------------------------------*
* GET SELECT DATA
*----------------------------------------------------------------------*
FORM select_data.

  SELECT carrid
  connid
  countryfr
  cityfrom
  airpfrom
  countryto
  cityto
  airpto
  fltime
  deptime
  arrtime
  distance
  INTO TABLE gt_output
  FROM spfli
  WHERE connid IN s_connid.
* AND CARRID = P_CARRID.

  IF sy-subrc <> 0.
    REFRESH gt_output.
  ENDIF.

ENDFORM. " SELECT_DATA
*&---------------------------------------------------------------------*
*& Form WRITE_LIST_HEADER
*&---------------------------------------------------------------------*
* WRITE LIST TITLE
*----------------------------------------------------------------------*
FORM write_list_header.

  WRITE: / 'PLEAN FOR THE AIRPLANE'.
  WRITE: / sy-uline.
  WRITE: /1(1) '|',
  2(12) c_text001 CENTERED,
  15(1) '|',
  16(25) c_text002 CENTERED,
  32(1) '|',
  33(12) c_text003 CENTERED,
  46(1) '|',
  47(14) c_text004 CENTERED,
  62(1) '|',
  63(17) c_text005 CENTERED,
  81(1) '|',
  82(10) c_text006 CENTERED,
  93(1) '|',
  94(12) c_text007 CENTERED,
  107(1) '|',
  108(19) c_text008 CENTERED,
  128(1) '|',
  129(12) c_text009 CENTERED,
  142(1) '|',
  143(14) c_text010 CENTERED,
  158(1) '|',
  159(12) c_text011 CENTERED,
  172(1) '|',
  173(8) c_text012 CENTERED,
  182(1) '|'.
  ULINE.

ENDFORM. " WRITE_LIST_HEADER
*&---------------------------------------------------------------------*
*& Form OUTPUT_RESULT
*&---------------------------------------------------------------------*
* OUTPUT RESULT
*----------------------------------------------------------------------*
FORM output_result.

  IF p_list = 'X'.
    PERFORM output_by_list.
  ELSE.
    PERFORM comment_build USING gt_list_top_of_page[].
    PERFORM output_by_alv.
  ENDIF.

ENDFORM. " OUTPUT_RESULT
*&---------------------------------------------------------------------*
*& Form OUTPUT_BY_LIST
*&---------------------------------------------------------------------*
* OUTPUT BY LST
*----------------------------------------------------------------------*
FORM output_by_list.

  DESCRIBE TABLE gt_output LINES gw_count.

  IF gw_count <> 0.
    LOOP AT gt_output INTO gh_output.
      WRITE: /1(1) '|',
      2(12) gh_output-carrid CENTERED,
      15(1) '|',
      16(10) gh_output-connid CENTERED,
      32(1) '|',
      33(12) gh_output-countryfr CENTERED,
      46(1) '|',
      47(14) gh_output-cityfrom CENTERED,
      62(1) '|',
      63(17) gh_output-airpfrom CENTERED,
      81(1) '|',
      82(10) gh_output-countryto CENTERED,
      93(1) '|',
      94(12) gh_output-cityto CENTERED,
      107(1) '|',
      108(19) gh_output-airpto CENTERED,
      128(1) '|',
      129(12) gh_output-fltime CENTERED,
      142(1) '|',
      143(14) gh_output-deptime CENTERED,
      158(1) '|',
      159(12) gh_output-arrtime CENTERED,
      172(1) '|',
      173(8) gh_output-distance CENTERED,
      182(1) '|'.
    ENDLOOP.
    WRITE: / sy-uline.
  ENDIF.
  WRITE: 'The number of flights is: ',
  gw_count.

ENDFORM. " OUTPUT_BY_LIST
*&---------------------------------------------------------------------*
*& Form OUTPUT_BY_ALV
*&---------------------------------------------------------------------*
* ALV OUTPUT
*----------------------------------------------------------------------*
FORM output_by_alv.

* INITIAL ALV
  PERFORM initial_alv.

  PERFORM set_alv_fieldcat.

  PERFORM output_alv.

ENDFORM. " OUTPUT_BY_ALV
*&---------------------------------------------------------------------*
*& Form SET_ALV_FIELDCAT
*&---------------------------------------------------------------------*
* SET ALV FIELDCAT
*----------------------------------------------------------------------*
FORM set_alv_fieldcat .

* FIRST
  gh_fieldcat-fieldname = 'CARRID'.
  gh_fieldcat-seltext_m = c_text001.
  gh_fieldcat-outputlen = 12.
  APPEND gh_fieldcat TO gt_fieldcat.
* SECOND
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'CONNID'.
  gh_fieldcat-seltext_m = c_text002.
  gh_fieldcat-outputlen = 25.
  APPEND gh_fieldcat TO gt_fieldcat.
* THIRD
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'COUNTRYFR'.
  gh_fieldcat-seltext_m = c_text003.
  gh_fieldcat-outputlen = 12.
  APPEND gh_fieldcat TO gt_fieldcat.
* FOUTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'CITYFROM'.
  gh_fieldcat-seltext_m = c_text004.
  gh_fieldcat-outputlen = 14.
  APPEND gh_fieldcat TO gt_fieldcat.
* FIFTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'AIRPFROM'.
  gh_fieldcat-seltext_m = c_text005.
  gh_fieldcat-outputlen = 30.
  APPEND gh_fieldcat TO gt_fieldcat.
* SIXTH COUNTRYTO
  gh_fieldcat-fieldname = 'COUNTRYTO'.
  gh_fieldcat-seltext_m = c_text006.
  gh_fieldcat-outputlen = 10.
  APPEND gh_fieldcat TO gt_fieldcat.
* SEVENTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'CITYTO'.
  gh_fieldcat-seltext_m = c_text007.
  gh_fieldcat-outputlen = 12.
  APPEND gh_fieldcat TO gt_fieldcat.
* EIGHTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'AIRPTO'.
  gh_fieldcat-seltext_m = c_text008.
  gh_fieldcat-outputlen = 19.
  APPEND gh_fieldcat TO gt_fieldcat.
* NINTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'FLTIME'.
  gh_fieldcat-seltext_m = c_text009.
  gh_fieldcat-outputlen = 12.
  APPEND gh_fieldcat TO gt_fieldcat.
* TENTH
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'DEPTIME'.
  gh_fieldcat-seltext_m = c_text010.
  gh_fieldcat-outputlen = 14.
  APPEND gh_fieldcat TO gt_fieldcat.
  CLEAR gh_fieldcat.
* ELEVEN
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'ARRTIME'.
  gh_fieldcat-seltext_m = c_text011.
  gh_fieldcat-outputlen = 12.
  APPEND gh_fieldcat TO gt_fieldcat.
* TLWALV
  CLEAR gh_fieldcat.
  gh_fieldcat-fieldname = 'DISTANCE'.
  gh_fieldcat-seltext_m = c_text012.
  gh_fieldcat-outputlen = 8.
  APPEND gh_fieldcat TO gt_fieldcat.
  CLEAR gh_fieldcat.

ENDFORM. " SET_ALV_FIELDCAT
*&---------------------------------------------------------------------*
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM output_alv.

  DATA: lw_title TYPE lvc_title.

  lw_title = 'Show The Information Of The Plan For Airplane'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
  i_buffer_active = 'X'
  i_callback_program = gw_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
  i_callback_top_of_page = gw_top_of_page
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
  i_background_id = 'ALV_BACKGROUND'
  i_grid_title = lw_title
* I_GRID_SETTINGS =
  is_layout = gw_layout
  it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
  i_default = 'X'
  i_save = gw_save
  is_variant = gw_variant
  it_events = gt_events[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
  IMPORTING
  e_exit_caused_by_caller = gw_exit_caused_by_caller
  es_exit_caused_by_user = gw_exit_caused_by_user
  TABLES
  t_outtab = gt_output
  EXCEPTIONS
  program_error = 1
  OTHERS = 2
  .
  IF sy-subrc = 0.
    IF gw_exit_caused_by_caller = 'X'.
*" Forced Exit by calling program
*" <do_something>.
    ELSE.
*" User left list via F3, F12 or F15
      IF gw_exit_caused_by_user-back = 'X'. "F3
        PERFORM write_list_header.
        PERFORM output_by_list.
      ELSE.
        IF gw_exit_caused_by_user-exit = 'X'. "F15
*" <do_something>.
        ELSE.
          IF gw_exit_caused_by_user-cancel = 'X'. "F12
*" <do_something>.
          ELSE.
*" should not occur!
*" <do_Abnormal_End>.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
  ELSE.
*"Fatal error callin ALV
* MESSAGE AXXX(XY) WITH ...
  ENDIF.

ENDFORM. " OUTPUT_ALV
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS text
*----------------------------------------------------------------------*
FORM eventtab_build USING p_gt_events TYPE slis_t_event.

  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = p_gt_events
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.

  ENDIF.

  READ TABLE p_gt_events WITH KEY name = slis_ev_top_of_page
  INTO ls_event.
  IF sy-subrc = 0.
    MOVE gw_top_of_page TO ls_event-form.
    APPEND ls_event TO p_gt_events.
  ENDIF.

ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form INITIAL_ALV
*&---------------------------------------------------------------------*
* INITIAL ALV
*----------------------------------------------------------------------*
FORM initial_alv.

  gw_repid = sy-repid.
  gw_variant-report = gw_repid.
  gw_save = 'A'.
  gw_layout-detail_popup = 'X'.
  gw_layout-f2code = '&ETA'.
  PERFORM eventtab_build USING gt_events.

ENDFORM. " INITIAL_ALV
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* BUILD TITLE COMMENT
*----------------------------------------------------------------------*
* -->LT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM comment_build USING lt_list_top_of_page TYPE slis_t_listheader.

  DATA: ls_line TYPE slis_listheader.
*
* LIST HEADING LINE: TYPE H
  CLEAR ls_line.
  ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
  ls_line-info = 'ALV Show The Information Of Airplane'.
  APPEND ls_line TO lt_list_top_of_page.
* STATUS LINE: TYPE S
  CLEAR ls_line.
  ls_line-typ = 'S'.
  ls_line-key = 'The Last Date:'.
  ls_line-info = sy-datum.
  APPEND ls_line TO lt_list_top_of_page.
  ls_line-key = 'Airport:'.
  ls_line-info = 'Frankfurt'.
  APPEND ls_line TO lt_list_top_of_page.
* ACTION LINE: TYPE A
  CLEAR ls_line.
  ls_line-typ = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
  ls_line-info = 'Informations'.
  APPEND ls_line TO lt_list_top_of_page.

ENDFORM. " COMMENT_BUILD
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* EVENT: TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
  it_list_commentary = gt_list_top_of_page
* I_LOGO =
* I_END_OF_LIST_GRID =
  .
ENDFORM. "TOP_OF_PAGE

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值