SAP ABAP开发指南SAP ABAP

《SAP ABAP 开发指南》第七单元前五课时

2018-08-20  本文已影响12人  46b61a5f089d
翱翔云天的SAP 技术网校

程序源代码

选择屏幕

TABLES: vbak.
DATA: wa_vbak TYPE vbak.

SELECTION-SCREEN BEGIN OF SCREEN 101 as SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN COMMENT /1(30) TEXT-001.
PARAMETERS: p_1     TYPE char10 DEFAULT 'abc',
            p_order TYPE vbak-vbeln.

SELECTION-SCREEN ULINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
  r_rad1 RADIOBUTTON GROUP r1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(15) TEXT-r01 FOR FIELD r_rad1.
PARAMETERS:
  r_rad2 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 20(15) TEXT-r02 FOR FIELD r_rad2.
PARAMETERS:
  r_rad3 RADIOBUTTON GROUP r1.
SELECTION-SCREEN COMMENT 40(15) TEXT-r03 FOR FIELD r_rad3.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
  ch_box1 AS CHECKBOX.
SELECTION-SCREEN COMMENT 3(32) TEXT-r01 FOR FIELD ch_box1.
PARAMETERS:
  ch_box2 AS CHECKBOX.
SELECTION-SCREEN COMMENT 38(15) TEXT-r02 FOR FIELD ch_box2.
SELECTION-SCREEN END OF LINE.
PARAMETERS:
  pl_auart TYPE vbak-auart AS LISTBOX VISIBLE LENGTH 30.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 101.

SELECTION-SCREEN BEGIN OF SCREEN 102 as SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN COMMENT /1(30) TEXT-002.
SELECT-OPTIONS:
    s_vbeln FOR vbak-vbeln,
    s_auart FOR wa_vbak-auart,
    s_erdat FOR vbak-erdat NO-EXTENSION,
    s_vkorg FOR vbak-vkorg NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 102.

SELECTION-SCREEN BEGIN OF TABBED BLOCK tab1 for 10 lines.
    SELECTION-SCREEN TAB (10) text-t01 USER-COMMAND com1 DEFAULT SCREEN 101.
    SELECTION-SCREEN tab (20) text-t02 USER-COMMAND com2 DEFAULT SCREEN 102.
SELECTION-SCREEN END OF BLOCK tab1.

Write

no STANDARD PAGE HEADING
line-SIZE 60
LINE-COUNT 10(1)
.

uline.
write: sy-vline, '第七单元第二课时', 60(1) sy-vline.
uline.

select vbeln,erdat,vkorg
from vbak
UP TO 30 rows
into table @DATA(lt_tab).
* test
FORMAT COLOR = 1 .
write: sy-vline, 2(10) 'Order',13(1) sy-vline, 14(15) 'Date',29(1) sy-vline, 30(10) 'Sales Org',60(1) sy-vline.
FORMAT color OFF.
uline.
loop at lt_tab into data(ls_tab).
if sy-tabix mod 2 = 0.
FORMAT color = 5.
write: sy-vline, 2(10) ls_tab-vbeln HOTSPOT,13(1) sy-vline, 14(15) ls_tab-erdat,29(1) sy-vline, 30(10) ls_tab-vkorg,60(1) sy-vline.
else.
FORMAT color = 6.
write: sy-vline, 2(10) ls_tab-vbeln HOTSPOT,13(1) sy-vline, 14(15) ls_tab-erdat,29(1) sy-vline, 30(10) ls_tab-vkorg,60(1) sy-vline.
endif.
uline.
ENDLOOP.

TOP-OF-PAGE.
write: 'New Page!'.

end-OF-PAGE.
write: 'End of Page!'.

at LINE-SELECTION.
new-page LINE-COUNT 20.
write: / ,'sy-lisel', sy-lisel.
write: / ,'sy-lsind',sy-lsind.
write: / ,'sy-lilli',sy-lilli.
write: / ,'sy-listi',sy-listi.

Reuse alv

SELECT * FROM vbak INTO TABLE @DATA(lt_tab)
UP TO 30 ROWS.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    i_structure_name = 'VBAK'
  TABLES
    t_outtab         = lt_tab.   " Table with data to be displayed
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_structure_name = 'VBAK'
  TABLES
    t_outtab         = lt_tab.   " Table with data to be displayed
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ALV Grid

select * from vbak into TABLE @data(lt_tab) UP TO 30 ROWS.

data(o_grid) = new cl_gui_alv_grid(
    i_parent          = cl_gui_container=>screen0
).

o_grid->set_table_for_first_display(
  EXPORTING
    i_structure_name              = 'VBAK'    " Internal Output Table Structure Name
  CHANGING
    it_outtab                     =  lt_tab   " Output Table
).

call screen 100.

SALV

CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_double_click FOR EVENT double_click
                    OF cl_salv_events_table
        IMPORTING row column.
ENDCLASS.

SELECT * FROM vbak INTO TABLE @DATA(lt_tab) UP TO 30 ROWS.

cl_salv_table=>factory(
  EXPORTING
    list_display   = if_salv_c_bool_sap=>false    " ALV Displayed in List Mode
  IMPORTING
    r_salv_table   = DATA(o_salv)    " Basis Class Simple ALV Tables
  CHANGING
    t_table        = lt_tab
).

DATA(o_dis) = o_salv->get_display_settings( ).
o_dis->set_list_header( value =  '第七单元第四课时' ).

DATA(o_col) = o_salv->get_columns( ).
o_col->set_optimize( ).
DATA(o_mandt) = o_col->get_column( columnname = 'MANDT' ).
o_mandt->set_visible( if_salv_c_bool_sap=>false ).

DATA(o_ord) = o_col->get_column( columnname = 'VBELN' ).
o_ord->set_short_text( value =  '销售订单' ).

DATA(o_sort) = o_salv->get_sorts( ).
o_sort->add_sort(
  EXPORTING
    columnname         = 'AUART'    " ALV Control: Field Name of Internal Table Field
).

DATA(o_filter) = o_salv->get_filters( ).
o_filter->add_filter(
  EXPORTING
    columnname         =  'VBTYP'   " ALV Control: Field Name of Internal Table Field
    sign               = 'I'    " Selection Condition Sign
    option             = 'EQ'    " Selection Condition Option
    low                = 'C'    " Lower Value of Selection Condition
).

DATA(o_func) = o_salv->get_functions( ).
o_func->set_default(
).

DATA(o_event) = o_salv->get_event( ).

data(o_handler) = new lcl_event_handler( ).
set HANDLER o_handler->on_double_click for o_event.

o_salv->display( ).


CLASS lcl_event_handler IMPLEMENTATION.
  METHOD on_double_click.
    MESSAGE 'double click' TYPE 'I'.
  ENDMETHOD.
ENDCLASS.
上一篇 下一篇

猜你喜欢

热点阅读