zoukankan      html  css  js  c++  java
  • ALV_TREE_JAMES

    *&---------------------------------------------------------------------*
    *& Report  Z_ALV_TREE_JAMES
    * Project     : N/A
    * Author      : James.Zong
    * Description : Template of Program for Alv Tree
    *&---------------------------------------------------------------------*
    REPORT Z_ALV_TREE_JAMES.
    TABLES:SFLIGHT.
    *&---------------------------------------------------------------------*
    *&  DATA DEFINE
    *&---------------------------------------------------------------------*
    DATA:
      G_ALV_TREE           TYPE REF TO CL_GUI_ALV_TREE,
      G_CUSTOMER_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    
    DATA:
      GT_SFLIGHT TYPE TABLE OF SFLIGHT,
      OK_CODE    LIKE SY-UCOMM,
      SAVE_OK    LIKE SY-UCOMM.
    *&---------------------------------------------------------------------*
    *&  INITIALIZATION
    *&---------------------------------------------------------------------*
    INITIALIZATION.
    CLEAR:
      G_ALV_TREE,
      G_CUSTOMER_CONTAINER,
      GT_SFLIGHT,
      OK_CODE,
      SAVE_OK.
    *&---------------------------------------------------------------------*
    *&  START-OF-SELECTION
    *&---------------------------------------------------------------------*
    START-OF-SELECTION.
    SET SCREEN 100.
    *&---------------------------------------------------------------------*
    *&      Module  STATUS_0100  OUTPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    MODULE STATUS_0100 OUTPUT.
    *  SET PF-STATUS '0100'.
      SET PF-STATUS 'STANDARD_FULLSCREEN'.
      SET TITLEBAR  'Title is N/A'.
    
      IF G_ALV_TREE IS INITIAL.
        PERFORM INIT_TREE.
      ENDIF.
      CALL METHOD CL_GUI_CFW=>FLUSH.
    
    ENDMODULE.
    *&---------------------------------------------------------------------*
    *&      Form  INIT_TREE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM INIT_TREE .
      DATA:G_TREE_HEADER TYPE TREEV_HHDR.
    
      CREATE OBJECT G_CUSTOMER_CONTAINER
        EXPORTING
          CONTAINER_NAME      = 'JAMES'.
    
      CREATE OBJECT G_ALV_TREE
        EXPORTING
          PARENT              = G_CUSTOMER_CONTAINER
          NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
          ITEM_SELECTION      = ABAP_TRUE
          NO_HTML_HEADER      = ABAP_TRUE.
    
    * Set layout
      G_TREE_HEADER-HEADING   = 'heading 是什么意思?'.
      G_TREE_HEADER-TOOLTIP   = 'Tooltip 是什么意思?'.
      G_TREE_HEADER-WIDTH     = 40.
    
    
      CALL METHOD G_ALV_TREE->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        I_STRUCTURE_NAME      = 'SFLIGHT'
        IS_HIERARCHY_HEADER   = G_TREE_HEADER
      CHANGING
        IT_OUTTAB             = GT_SFLIGHT.
    
    * Create node
      PERFORM CREATE_HIERARCHY.
      CALL METHOD G_ALV_TREE->FRONTEND_UPDATE.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  CREATE_HIERARCHY
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM CREATE_HIERARCHY .
      DATA:
        LS_SFLIGHT      TYPE SFLIGHT,
        LT_SFLIGHT      TYPE TABLE OF SFLIGHT,
    
        LV_YYYY_MM      TYPE CHAR6,
        LV_YYYY_MM_LAST TYPE CHAR6,
    
        LV_CARRID       LIKE SFLIGHT-CARRID,
        LV_CARRID_LAST  LIKE SFLIGHT-CARRID,
    
        K_MONTH         TYPE LVC_NKEY,
        K_CARRID        TYPE LVC_NKEY,
        K_LAST          TYPE LVC_NKEY.
    
      SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE LT_SFLIGHT.
      SORT LT_SFLIGHT BY FLDATE+0(6) CARRID FLDATE+6(2).
    
      LOOP AT LT_SFLIGHT INTO LS_SFLIGHT.
    *   Node for Time
        LV_YYYY_MM+0(6) = LS_SFLIGHT-FLDATE.
        LV_CARRID       = LS_SFLIGHT-CARRID.
    
        IF LV_YYYY_MM <> LV_YYYY_MM_LAST.
    
          LV_YYYY_MM_LAST = LV_YYYY_MM.
          PERFORM ADD_NODE_TIME
            USING    LV_YYYY_MM
            CHANGING K_MONTH.
    
        ENDIF.
    
    *   Node for Carrid
        IF LV_CARRID <> LV_CARRID_LAST.
    
          LV_CARRID_LAST = LV_CARRID.
          PERFORM ADD_NODE_CARRID
            USING    LV_CARRID K_MONTH
            CHANGING K_CARRID.
        ENDIF.
    
    *   Add line
        PERFORM Addline
          USING    LS_SFLIGHT k_CARRID
          CHANGING K_LAST.
      ENDLOOP.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  ADD_NODE_TIME
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_LV_YYYY_MM  text
    *      <--P_K_MONTH  text
    *----------------------------------------------------------------------*
    FORM ADD_NODE_TIME
      USING    P_LV_YYYY_MM
      CHANGING P_K_MONTH.
    
      DATA:
        LS_SFLIGHT   TYPE SFLIGHT,
        LV_NODE_TEXT TYPE LVC_VALUE.
    
      CLEAR:
        LS_SFLIGHT,
        LV_NODE_TEXT.
    
      LV_NODE_TEXT = P_LV_YYYY_MM.
    
      CALL METHOD G_ALV_TREE->ADD_NODE
        EXPORTING
          I_RELAT_NODE_KEY = ' '
          I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
          IS_OUTTAB_LINE   = LS_SFLIGHT
          I_NODE_TEXT      = LV_NODE_TEXT.
      IF SY-SUBRC <> 0.
        MESSAGE 'Create Time Node failed' TYPE 'E'.
      ENDIF.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  ADD_NODE_CARRID
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_LV_CARRID  text
    *      -->P_K_MONTH  text
    *      <--P_K_CARRID  text
    *----------------------------------------------------------------------*
    FORM ADD_NODE_CARRID  USING    P_LV_CARRID
                                   P_K_MONTH
                          CHANGING P_K_CARRID.
      DATA:
        LS_SFLIGHT   TYPE SFLIGHT,
        LV_NODE_TEXT TYPE LVC_VALUE.
    
      CLEAR:
        LS_SFLIGHT,
        LV_NODE_TEXT.
    
      LV_NODE_TEXT = P_LV_CARRID.
      CALL METHOD G_ALV_TREE->ADD_NODE
        EXPORTING
          I_RELAT_NODE_KEY = P_K_MONTH
          I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
          IS_OUTTAB_LINE   = LS_SFLIGHT
          I_NODE_TEXT      = LV_NODE_TEXT
        IMPORTING
          E_NEW_NODE_KEY   = P_K_CARRID.
    
      IF SY-SUBRC <> 0.
       MESSAGE 'Create Carrid Node failed' TYPE 'E'.
      ENDIF.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  ADDLINE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_LS_SFLIGHT  text
    *      -->P_K_CARRID  text
    *      <--P_K_LAST  text
    *----------------------------------------------------------------------*
    FORM ADDLINE
      USING    P_LS_SFLIGHT TYPE sflight
               P_K_CARRID
      CHANGING P_K_LAST.
    
      DATA:
        LV_NODE_TEXT TYPE LVC_VALUE.
    
      LV_NODE_TEXT = P_LS_SFLIGHT-FLDATE.
      CALL METHOD G_ALV_TREE->ADD_NODE
        EXPORTING
          I_RELAT_NODE_KEY = P_K_CARRID
          I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
          IS_OUTTAB_LINE   = P_LS_SFLIGHT
          I_NODE_TEXT      = LV_NODE_TEXT
        IMPORTING
          E_NEW_NODE_KEY   = P_K_LAST.
    
      IF SY-SUBRC <> 0.
        MESSAGE 'Add line failed' TYPE 'E'.
      ENDIF.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Module  USER_COMMAND_0100  INPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    MODULE USER_COMMAND_0100 INPUT.
      save_ok = ok_code .
      CLEAR ok_code.
      CASE save_ok .
        WHEN '&F03'.
          LEAVE PROGRAM.
        WHEN '&F15'.
          CALL METHOD g_alv_tree->FREE.
          leave program.
      ENDCASE.
    ENDMODULE.
  • 相关阅读:
    删除难以删除的文件
    DLL创建与使用
    Springboot多文件上传
    解决javaweb项目启动端口号被占用
    pl/sql 导出数据库表dmp文件并导入数据库过程
    Spring Boot 静态资源处理
    Consider defining a bean of type错误
    SpringBoot+layUI上传图片功能
    jQuery改变html页面样式
    Springboot启动后默认访问页面修改
  • 原文地址:https://www.cnblogs.com/HARU/p/9442483.html
Copyright © 2011-2022 走看看