美文网首页
OO ALV与FUNCTION ALV

OO ALV与FUNCTION ALV

作者: 阿努比斯1117 | 来源:发表于2018-01-29 17:03 被阅读0次

    OO ALV


    image.png

    OOALV中在AT SELECTION-SCREEN事件下使用SET_TABLE_FOR_FIRST_DISPLAY可以直接导出ALV,不用callscreen

    *&---------------------------------------------------------------------*
    *& Report ZMM004
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT ZMM004.
    
    TABLES:T001.
    
    DATA: BEGIN OF ITAB OCCURS 0,
          BUKRS LIKE T001-BUKRS,
          BUTXT LIKE T001-BUTXT,
          ORT01 LIKE T001-ORT01,
          END OF ITAB.
    
    DATA:  GT_FIELDCAT   TYPE LVC_T_FCAT,
           GS_FIELDCAT   TYPE LVC_S_FCAT,
           GS_LAYOUT     TYPE LVC_S_LAYO,
           GT_EXCLUDE    TYPE UI_FUNCTIONS.
    
    DATA: CON_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
          ALV_TABLES TYPE REF TO CL_GUI_ALV_GRID,
          CON_ALV_TABLES TYPE REF TO CL_GUI_CONTAINER.
    
    DEFINE : ADD_FIELD.
      GS_FIELDCAT-FIELDNAME = &1.
      GS_FIELDCAT-COLTEXT = &2.
      APPEND GS_FIELDCAT TO GT_FIELDCAT.
    END-OF-DEFINITION.
    
    SELECTION-SCREEN BEGIN OF BLOCK T1 WITH FRAME .
    SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS.
    SELECTION-SCREEN END OF BLOCK T1.
    
    START-OF-SELECTION.
    
      PERFORM GET_AND_PROCESS_DATA.
      CALL SCREEN 2000.
    
    END-OF-SELECTION.
    *&---------------------------------------------------------------------*
    *&      Form  GET_AND_PROCESS_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM GET_AND_PROCESS_DATA .
    
      SELECT BUKRS BUTXT ORT01
        INTO CORRESPONDING FIELDS OF TABLE ITAB
      FROM T001
      WHERE BUKRS IN S_BUKRS.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Module  STATUS_2000  OUTPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    MODULE STATUS_2000 OUTPUT.
      SET PF-STATUS '2000'.
    *  SET TITLEBAR 'xxx'.
      PERFORM SET_ALV_FIELDS.
      PERFORM SET_ALV_LAYOUT CHANGING GS_LAYOUT.
    
       CHECK CON_SPLITTER IS INITIAL.
      "創建容器
      CREATE OBJECT CON_SPLITTER
        EXPORTING
          PARENT  = CL_GUI_CONTAINER=>SCREEN0
          ROWS    = 1
          COLUMNS = 1.
      "創建ALV控件
      CON_ALV_TABLES = CON_SPLITTER->GET_CONTAINER( ROW = 1 COLUMN = 1 ).
      CREATE OBJECT ALV_TABLES
        EXPORTING
          I_PARENT = CON_ALV_TABLES.
    
      CALL METHOD ALV_TABLES->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
    *     I_BUFFER_ACTIVE               =
    *     I_BYPASSING_BUFFER            =
    *     I_CONSISTENCY_CHECK           =
    *     I_STRUCTURE_NAME              =
    *     IS_VARIANT                    =
          I_SAVE                        = 'X'
    *     I_DEFAULT                     = 'X'
          IS_LAYOUT                     = GS_LAYOUT
    *     IS_PRINT                      =
    *     IT_SPECIAL_GROUPS             =
     "     IT_TOOLBAR_EXCLUDING          = GT_EXCLUDE
    *     IT_HYPERLINK                  =
    *     IT_ALV_GRAPHICS               =
    *     IT_EXCEPT_QINFO               =
    *     IR_SALV_ADAPTER               =
        CHANGING
          IT_OUTTAB                     = ITAB[]
          IT_FIELDCATALOG               = GT_FIELDCAT
    *     IT_SORT                       =
    *     IT_FILTER                     =
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    
    ENDMODULE.
    *&---------------------------------------------------------------------*
    *&      Form  SET_ALV_FIELDS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM SET_ALV_FIELDS .
      ADD_FIELD 'BUKRS' '公司'.
      ADD_FIELD 'BUTXT' '名称'.
      ADD_FIELD 'ORT01' 'ORT01'.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  SET_ALV_LAYOUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_GS_LAYOUT  text
    *----------------------------------------------------------------------*
    FORM SET_ALV_LAYOUT  CHANGING P_GS_LAYOUT TYPE LVC_S_LAYO.
      P_GS_LAYOUT-ZEBRA = 'X'.
      P_GS_LAYOUT-SMALLTITLE = 'X'.
      P_GS_LAYOUT-SEL_MODE = 'A'.
      P_GS_LAYOUT-GRID_TITLE = 'TEST'.
      P_GS_LAYOUT-CWIDTH_OPT = 'X'.
    ENDFORM.
    

    FUNCTION ALV


    image.png
    *&---------------------------------------------------------------------*
    *& Report ZMM005
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT ZMM005.
    
    TABLES:T001.
    
    DATA: BEGIN OF ITAB OCCURS 0,
          BUKRS LIKE T001-BUKRS,
          BUTXT LIKE T001-BUTXT,
          ORT01 LIKE T001-ORT01,
          END OF ITAB.
    
    DATA:  GT_FIELDCAT   TYPE LVC_T_FCAT,
           GS_FIELDCAT   TYPE LVC_S_FCAT,
           GS_LAYOUT     TYPE LVC_S_LAYO.
    
    DEFINE : ADD_FIELD.
      GS_FIELDCAT-FIELDNAME = &1.
      GS_FIELDCAT-COLTEXT = &2.
      APPEND GS_FIELDCAT TO GT_FIELDCAT.
    END-OF-DEFINITION.
    
    SELECTION-SCREEN BEGIN OF BLOCK T1 WITH FRAME .
    SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS.
    SELECTION-SCREEN END OF BLOCK T1.
    
    START-OF-SELECTION.
    
      PERFORM GET_AND_PROCESS_DATA.
      PERFORM SET_ALV_DATAS.
      PERFORM DISPLAY_ALV.
    
    
    END-OF-SELECTION.
    *&---------------------------------------------------------------------*
    *&      Form  GET_AND_PROCESS_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM GET_AND_PROCESS_DATA .
    
      SELECT BUKRS BUTXT ORT01
        INTO CORRESPONDING FIELDS OF TABLE ITAB
      FROM T001
      WHERE BUKRS IN S_BUKRS.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  SET_ALV_DATAS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM SET_ALV_DATAS .
      SET PF-STATUS 'PF_STATUS01'.
    
      ADD_FIELD 'BUKRS' '公司'.
      ADD_FIELD 'BUTXT' '名称'.
      ADD_FIELD 'ORT01' 'ORT01'.
    
        GS_LAYOUT-ZEBRA = 'X'.
        GS_LAYOUT-SMALLTITLE = 'X'.
        GS_LAYOUT-SEL_MODE = 'A'.
        GS_LAYOUT-GRID_TITLE = 'TEST'.
        GS_LAYOUT-CWIDTH_OPT = 'X'.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  DISPLAY_ALV
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM DISPLAY_ALV .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
     EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                =
    *   I_BUFFER_ACTIVE                   =
        I_CALLBACK_PROGRAM                = SY-REPID
    *    I_CALLBACK_PF_STATUS_SET         = ' '
    *   I_CALLBACK_USER_COMMAND           = ' '
    *   I_CALLBACK_TOP_OF_PAGE            = ' '
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
        I_GRID_TITLE                      = 'TEST'
    *   I_GRID_SETTINGS                   =
        IS_LAYOUT_LVC                     = GS_LAYOUT
        IT_FIELDCAT_LVC                   = GT_FIELDCAT
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS_LVC             =
    *   IT_SORT_LVC                       =
    *   IT_FILTER_LVC                     =
    *   IT_HYPERLINK                      =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
    *   I_SAVE                            = ' '
    *   IS_VARIANT                        =
    *   IT_EVENTS                         =
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT_LVC                      =
    *   IS_REPREP_ID_LVC                  =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 =
    *   I_HTML_HEIGHT_END                 =
    *   IT_ALV_GRAPHICS                   =
    *   IT_EXCEPT_QINFO_LVC               =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = ITAB
    * EXCEPTIONS
    *   PROGRAM_ERROR                     = 1
    *   OTHERS                            = 2
              .
    IF SY-SUBRC <> 0.
    * Implement suitable error handling here
    ENDIF.
    
    ENDFORM.
    

    相关文章

      网友评论

          本文标题:OO ALV与FUNCTION ALV

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