美文网首页SAP ABAP开发指南SAP ABAP
《SAP ABAP 开发指南》第七单元前五课时

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

作者: 46b61a5f089d | 来源:发表于2018-08-20 14:00 被阅读12次
    翱翔云天的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.
    

    相关文章

      网友评论

        本文标题:《SAP ABAP 开发指南》第七单元前五课时

        本文链接:https://www.haomeiwen.com/subject/pffliftx.html