首页 > 其他 > 详细

20170225-ALV tree 显示

时间:2017-02-25 13:42:10      阅读:182      评论:0      收藏:0      [点我收藏+]

1.写程序,
2.话屏幕9000,CALL SCREEN 9000.(双击屏幕进去画个容器就ok,+OK_CODE,+去掉注释)
3.处理好ALV 的PBO 初始化,处理用户事件PAO,user command ,定义的按钮都要有用途;

                               
                               
 
                             
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
*&---------------------------------------------------------------------*
*& Report  YDEMO_005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_BARRY_ALV_TREE1_BOM MESSAGE-ID OO.
TABLES: STPOX.
INCLUDE <ICON>.
CLASS: CL_GUI_COLUMN_TREE DEFINITION LOAD,
       CL_GUI_CFW DEFINITION LOAD .
DATA: TREE1  TYPE REF TO CL_GUI_ALV_TREE ,
      MR_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR .
DATA: GS_STPOX       TYPE STPOX,
      GT_STPOX       TYPE STPOX OCCURS 0,
      GT_FIELDCATALOG  TYPE LVC_T_FCAT,
      GT_ITEM_LAYOUT   TYPE LVC_T_LACI,
      GS_ITEM_LAYOUT   TYPE LVC_S_LACI,
      OKCODE           LIKE SY-UCOMM .
TYPES: BEGIN OF GS_F.
        INCLUDE STRUCTURE STPOX.
TYPES: NODE_KEY      TYPE LVC_NKEY,
       END   OF GS_F.
DATA: GS_XSTPOX       TYPE GS_F ,
      GT_XSTPOX       TYPE GS_F OCCURS 0.

DATA: L_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA:  WA_TOPMAT TYPE CSTMAT,
       WA_DSTST TYPE CSDATA-XFELD.
DATA: IT_MATCAT TYPE STANDARD TABLE OF CSCMAT.



PARAMETERS:P_MATNR LIKE MAST-MATNR  OBLIGATORY,
           P_WERKS LIKE MAST-WERKS  OBLIGATORY,
           P_STLAL LIKE MAST-STLAL  OBLIGATORY DEFAULT 01,   "可选的 BOM
           P_CAPID LIKE RC29L-CAPID OBLIGATORY DEFAULT PP01."BOM应用程序

*PARAMETERS: p_matnr LIKE mara-matnr, "DEFAULT ‘YW25K‘,
*            p_werks LIKE ekpo-werks. "DEFAULT ‘1010‘ .

START-OF-SELECTION.
  PERFORM GETDATA.
  CALL SCREEN 9000.


*&---------------------------------------------------------------------*
*&      Form  getdata
*&---------------------------------------------------------------------*
FORM GETDATA.

*&bom explosion
*  CALL FUNCTION CS_BOM_EXPL_MAT_V2
**   EXPORTING
**     FTREL                       =  
**     ALEKZ                       =  
**     ALTVO                       =  
**     AUFSW                       =  
**     AUMGB                       =  
**     AUMNG                       = 0
**     AUSKZ                       =  
**     AMIND                       =  
**     BAGRP                       =  
**     BEIKZ                       =  
**     BESSL                       =  
**     BGIXO                       =  
**     BREMS                       =  
**     CAPID                       = STD1
**     CHLST                       =  
**     COSPR                       =  
**     CUOBJ                       = 000000000000000
**     CUOVS                       = 0
**     CUOLS                       =  
**     DATUV                       = 00000000
**     DELNL                       =  
**     DRLDT                       =  
**     EHNDL                       =  
**     EMENG                       = 0
**     ERSKZ                       =  
**     ERSSL                       =  
**     FBSTP                       =  
**     KNFBA                       =  
**     KSBVO                       =  
**     MBWLS                       =  
**     MKTLS                       = X
**     MDMPS                       =  
**     MEHRS                       =  
**     MKMAT                       =  
**     MMAPS                       =  
**     SALWW                       =  
**     SPLWW                       =  
**     MMORY                       =  
**     MTNRV                       =  
**     NLINK                       =  
**     POSTP                       =  
**     RNDKZ                       =  
**     RVREL                       =  
**     SANFR                       =  
**     SANIN                       =  
**     SANKA                       =  
**     SANKO                       =  
**     SANVS                       =  
**     SCHGT                       =  
**     STKKZ                       =  
**     STLAL                       =  
**     STLAN                       =  
**     STPST                       = 0
**     SVWVO                       = X
**     WERKS                       =  
**     NORVL                       =  
**     MDNOT                       =  
**     PANOT                       =  
**     QVERW                       =  
**     VERID                       =  
**     VRSVO                       = X
**   IMPORTING
**     TOPMAT                      =
**     DSTST                       =
*    TABLES
*      STB                         =
**     MATCAT                      =
**   EXCEPTIONS
**     ALT_NOT_FOUND               = 1
**     CALL_INVALID                = 2
**     MATERIAL_NOT_FOUND          = 3
**     MISSING_AUTHORIZATION       = 4
**     NO_BOM_FOUND                = 5
**     NO_PLANT_DATA               = 6
**     NO_SUITABLE_BOM_FOUND       = 7
**     CONVERSION_ERROR            = 8
**     OTHERS                      = 9

  CALL FUNCTION CS_BOM_EXPL_MAT_V2
    EXPORTING
      CAPID                 = P_CAPID  "‘CAD1‘
      DATUV                 = SY-DATUM
      EMENG                 = 1      "基本用量
      MTNRV                 = P_MATNR
      WERKS                 = P_WERKS

      MKTLS                 = X "p_key
      MEHRS                 = X       "p_mehrs
      STLAL                 = P_STLAL     "可选BOM
      STLAN                 = 1      "BOM 用途
*     emeng                 = 1
    IMPORTING
      TOPMAT                = WA_TOPMAT
      DSTST                 = WA_DSTST
    TABLES
      STB                   = GT_STPOX
      MATCAT                = IT_MATCAT
    EXCEPTIONS
      ALT_NOT_FOUND         = 1
      CALL_INVALID          = 2
      MATERIAL_NOT_FOUND    = 3
      MISSING_AUTHORIZATION = 4
      NO_BOM_FOUND          = 5
      NO_PLANT_DATA         = 6
      NO_SUITABLE_BOM_FOUND = 7
      CONVERSION_ERROR      = 8
      OTHERS                = 9.
*  CASE sy-subrc .
*    WHEN 1 .
*      MESSAGE e899(fi) WITH alt_not_found.
*    WHEN 2 .
*      MESSAGE e899(fi) WITH call_invalid .
*    WHEN 3 .
*      MESSAGE e899(fi) WITH material_not_found.
*    WHEN 4 .
*      MESSAGE e899(fi) WITH missing_authorization.
*    WHEN 5 .
*      MESSAGE e899(fi) WITH no_bom_found.
*    WHEN 6 .
*      MESSAGE e899(fi) WITH no_plant_data.
*    WHEN 7 .
*      MESSAGE e899(fi) WITH no_suitable_bom_found.
*    WHEN 8 .
*      MESSAGE e899(fi) WITH conversion_error.
*    WHEN 9 .
*      MESSAGE e899(fi) WITH OTHERS Error.
*  ENDCASE.
  LOOP AT GT_STPOX INTO GS_STPOX.
    MOVE-CORRESPONDING GS_STPOX TO GS_XSTPOX .
    APPEND GS_XSTPOX TO GT_XSTPOX.
  ENDLOOP.
ENDFORM.                    "getdata
*----------------------------------------------------------------------*
*  MODULE status_9000 OUTPUT
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
  SET PF-STATUS MAIN.
  SET TITLEBAR TITLE.
  IF TREE1 IS INITIAL.
    PERFORM INIT_TREE.
  ENDIF.
  CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.                 " PBO_9000  OUTPUT
*----------------------------------------------------------------------*
*  MODULE user_command_9000 INPUT
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
  CASE OKCODE.
    WHEN EXIT OR BACK OR CANC.
      CALL METHOD TREE1->FREE.
      LEAVE PROGRAM .
    WHEN OTHERS.
      CALL METHOD CL_GUI_CFW=>DISPATCH.
  ENDCASE.
  CLEAR OKCODE.
  CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.                 " okcode  INPUT
*&---------------------------------------------------------------------*
*&      Form  init_tree
*&---------------------------------------------------------------------*
FORM INIT_TREE .
  PERFORM BUILD_FIELDCATALOG.
*  IF sy-batch IS INITIAL.
*    CREATE OBJECT l_custom_container
*      EXPORTING
*        container_name              = TREE1
*      EXCEPTIONS
*        cntl_error                  = 1
*        cntl_system_error           = 2
*        create_error                = 3
*        lifetime_error              = 4
*        lifetime_dynpro_dynpro_link = 5.
*    IF sy-subrc <> 0.
*      MESSAGE e000 WITH 创建容器:TREE1 错误.
*    ENDIF.
*  ENDIF.
  CREATE OBJECT TREE1
    EXPORTING
*      parent                      = l_custom_container
      PARENT                      = CL_GUI_CONTAINER=>SCREEN0
      NODE_SELECTION_MODE         = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
      ITEM_SELECTION              = X
      NO_HTML_HEADER              = X
      NO_TOOLBAR                  =  
    EXCEPTIONS
      CNTL_ERROR                  = 1
      CNTL_SYSTEM_ERROR           = 2
      CREATE_ERROR                = 3
      LIFETIME_ERROR              = 4
      ILLEGAL_NODE_SELECTION_MODE = 5
      FAILED                      = 6
      ILLEGAL_COLUMN_NAME         = 7.
  IF SY-SUBRC <> 0.
    MESSAGE E000 WITH 创建TREE错误.
  ENDIF.
  DATA L_HIERARCHY_HEADER TYPE TREEV_HHDR.
  PERFORM BUILD_HIERARCHY_HEADER CHANGING L_HIERARCHY_HEADER.
  DATA: LS_VARIANT TYPE DISVARIANT.
  LS_VARIANT-REPORT = SY-REPID.
  CALL METHOD TREE1->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      IS_HIERARCHY_HEADER = L_HIERARCHY_HEADER
      I_BACKGROUND_ID     = ALV_BACKGROUND
      I_SAVE              = A
      IS_VARIANT          = LS_VARIANT
    CHANGING
      IT_OUTTAB           = GT_STPOX "table must be emty !!
      IT_FIELDCATALOG     = GT_FIELDCATALOG.
  DATA: L1 TYPE LVC_NKEY ,L2 TYPE LVC_NKEY ,L3 TYPE LVC_NKEY ,L4 TYPE LVC_NKEY ,
        L5 TYPE LVC_NKEY ,L6 TYPE LVC_NKEY ,L7 TYPE LVC_NKEY ,L8 TYPE LVC_NKEY ,
        L_KEY TYPE LVC_NKEY,
        L_LAST_KEY TYPE LVC_NKEY  ,
        ADDED .
  LOOP AT GT_XSTPOX INTO GS_XSTPOX .
    MOVE-CORRESPONDING GS_XSTPOX TO GS_STPOX.
    CASE GS_STPOX-STUFE .
      WHEN 1.
        L_KEY = ‘‘.
      WHEN 2.
        L_KEY = L1.
      WHEN 3.
        L_KEY = L2.
      WHEN 4.
        L_KEY = L3.
      WHEN 5.
        L_KEY = L4.
      WHEN 6.
        L_KEY = L5.
    ENDCASE.
    PERFORM ADD_COMPLETE_LINE USING  GS_STPOX L_KEY
                            CHANGING L_LAST_KEY.
    GS_XSTPOX-NODE_KEY = L_LAST_KEY.
    CASE GS_STPOX-STUFE .
      WHEN 1.
        L1 = L_LAST_KEY.
      WHEN 2.
        L2 = L_LAST_KEY.
      WHEN 3.
        L3 = L_LAST_KEY.
      WHEN 4.
        L4 = L_LAST_KEY.
      WHEN 5.
        L5 = L_LAST_KEY.
      WHEN 6.
        L6 = L_LAST_KEY.
    ENDCASE.
    MODIFY GT_XSTPOX FROM GS_XSTPOX .
  ENDLOOP.
  CALL METHOD TREE1->UPDATE_CALCULATIONS.
  CALL METHOD TREE1->FRONTEND_UPDATE.
ENDFORM.                    " init_tree
*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG.
  CALL FUNCTION LVC_FIELDCATALOG_MERGE
    EXPORTING
      I_STRUCTURE_NAME = STPOX
    CHANGING
      CT_FIELDCAT      = GT_FIELDCATALOG.
  DATA: LS_FIELDCATALOG TYPE LVC_S_FCAT.
  LOOP AT GT_FIELDCATALOG INTO LS_FIELDCATALOG.
*    CASE ls_fieldcatalog-fieldname.
*      WHEN CARRID OR CONNID OR FLDATE.
*        ls_fieldcatalog-no_out = X.
*        ls_fieldcatalog-key    = ‘‘.
*      WHEN PRICE OR SEATSOCC OR SEATSMAX OR PAYMENTSUM.
**        ls_fieldcatalog-do_sum = X.
*      WHEN PLANETYPE.
*        ls_fieldcatalog-edit = X.
*        ls_fieldcatalog-style = cl_gui_alv_grid=>mc_style_enabled .
*    ENDCASE.
    MODIFY GT_FIELDCATALOG FROM LS_FIELDCATALOG.
  ENDLOOP.
ENDFORM.                               " build_fieldcatalog
*&---------------------------------------------------------------------*
*&      Form  build_hierarchy_header
*&---------------------------------------------------------------------*
FORM BUILD_HIERARCHY_HEADER CHANGING
                               P_HIERARCHY_HEADER TYPE TREEV_HHDR.
*
  P_HIERARCHY_HEADER-HEADING = BOM层次.
  P_HIERARCHY_HEADER-TOOLTIP = ToolTip.
  P_HIERARCHY_HEADER-WIDTH = 30.
  P_HIERARCHY_HEADER-WIDTH_PIX = ‘‘.
*
ENDFORM.                               " build_hierarchy_header
*&---------------------------------------------------------------------*
*&      Form  add_complete_line
*&---------------------------------------------------------------------*
FORM ADD_COMPLETE_LINE USING  PS_STPOX TYPE STPOX
                               P_RELAT_KEY TYPE LVC_NKEY
                     CHANGING  P_NODE_KEY TYPE LVC_NKEY.
  DATA: L_NODE_TEXT TYPE LVC_VALUE.
* set item-layout
  DATA: LT_ITEM_LAYOUT TYPE LVC_T_LAYI,
        LS_ITEM_LAYOUT TYPE LVC_S_LAYI.
  DATA: STUFE_NUM(2) TYPE N.
  LS_ITEM_LAYOUT-FIELDNAME = TREE1->C_HIERARCHY_COLUMN_NAME.
  LS_ITEM_LAYOUT-CLASS     = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT.
*  ls_item_layout-editable  = X.
*  ls_item_layout-chosen    = X.  " 设置为选中状态
  APPEND LS_ITEM_LAYOUT TO LT_ITEM_LAYOUT.
*  l_node_text =  ps_stpox-ojtxp.
  STUFE_NUM = PS_STPOX-STUFE.
  CONCATENATE STUFE_NUM , PS_STPOX-OJTXP INTO L_NODE_TEXT.
  CALL METHOD TREE1->ADD_NODE
    EXPORTING
      I_RELAT_NODE_KEY = P_RELAT_KEY
      I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
      IS_OUTTAB_LINE   = PS_STPOX
      I_NODE_TEXT      = L_NODE_TEXT
      IT_ITEM_LAYOUT   = LT_ITEM_LAYOUT
    IMPORTING
      E_NEW_NODE_KEY   = P_NODE_KEY.
ENDFORM.                               " add_complete_line

 

20170225-ALV tree 显示

原文:http://www.cnblogs.com/rainysblog/p/6441416.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!