Tree Control对象与ALV Grid对象关联实例
来源:互联网 发布:剑三纯阳萝莉捏脸数据 编辑:程序博客网 时间:2024/06/10 21:43
1.程序准备
新建两个结构ZTET_Y008A、ZTET_Y008B
2.新建屏幕和GUI状态
3.程序实现
REPORT ZTEST_Y008B.
TABLES: mseg, ekbe, ekko, t024, lfa1,makt.
*功能码返回值
DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
*定制对象
DATA: WA_CONTAINER TYPE SCRFNAME VALUE 'TREE',
WA_CONTAINERALV TYPE SCRFNAME VALUE 'ALV',
*客户对象
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
WA_CUSTOM_CONTAINERALV TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
WA_TREE TYPE REF TO CL_GUI_SIMPLE_TREE,
WA_ALV TYPE REF TO CL_GUI_ALV_GRID.
*NODE节点表
DATA: NODE_TABLE LIKE TABLE OF MTREESNODE,
*节点
NODE1 TYPE MTREESNODE.
*当双击时取得节点KEY值与节点文本值变量
DATA: NODEKEY(200) VALUE 'NODE',
NODETEXT(200) VALUE 'NODE'.
*DATA: BEGIN OF wa_table ,
* bukrs LIKE ekko-bukrs, "工厂
* ebeln LIKE ekko-ebeln, "采购订单编号
* ekorg LIKE ekko-ekorg, "采购组织
* ekgrp LIKE ekko-ekgrp, "采购组
* lifnr LIKE ekko-lifnr, "供应商帐户号
* ebelp LIKE ekpo-ebelp, "采购订单行项目编号
* matnr LIKE ekpo-matnr, "采购订单行项目物料号
* BUDAT_MKPF LIKE ekbe-BUDAT_MKPF, "过帐日期
* menge LIKE ekbe-menge, "入库数量
* ernam LIKE ekbe-ernam, "创建者
* etenr LIKE eket-etenr, "计划行
* eindt LIKE eket-eindt, "交货日期
* slfdt LIKE eket-slfdt, "相关交货日期
* wemng LIKE eket-wemng, "已交货数量
* banfn LIKE eket-banfn, "采购申请
*
* END OF wa_table.
*
*DATA WA_SPFLI like table of wa_table WITH HEADER LINE.
*DATA WA_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
DATA WA_SPFLI TYPE TABLE OF ZTET_Y008A WITH HEADER LINE.
*定义内表,变量需要传递,不加HEADER LINE
*DATA: BEGIN OF gw_table ,
* mjahr LIKE mseg-mjahr, "凭证年度
* mblnr LIKE mseg-mblnr, "凭证号
* zeile LIKE mseg-zeile, "凭证项目
* bwart LIKE mseg-bwart, "移动类型(库存管理)
* lgort LIKE mseg-lgort, "库存地点
* menge LIKE mseg-menge, "以输入单位计的数量
* meins LIKE mseg-meins, "采购订单单位
* ebeln LIKE mseg-ebeln, "采购订单
* BUDAT_MKPF_mkpf LIKE mseg-BUDAT_MKPF_mkpf, "入库日
* END OF gw_table.
DATA WA_SFLIGHT TYPE TABLE OF ZTET_Y008B.
*DATA WA_SFLIGHT TYPE TABLE OF SFLIGHT.
*
*SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE b_title1 .
*PARAMETERS: p_bukrs LIKE ekko-bukrs OBLIGATORY DEFAULT 3500 . "公司代码
*SELECT-OPTIONS: s_lifnr FOR mseg-lifnr MEMORY ID lif , "供应商编号
* s_ebeln FOR mseg-ebeln MEMORY ID bes , "采购订单
* s_matnr FOR mseg-matnr MEMORY ID mat . "物料代码
*SELECTION-SCREEN END OF BLOCK block1.
*定义对象,定义对象的双击方法,用于将该对象双击方法分配到树双击事件
CLASS LCL_APPLICATION DEFINITION DEFERRED.
DATA EVENT_RECEIVER TYPE REF TO LCL_APPLICATION.
CLASS LCL_APPLICATION DEFINITION.
PUBLIC SECTION.
*自定义双击方法,参数为节点关键字
METHODS HANDLE_NODE_DOUBLE_CLICK
FOR EVENT NODE_DOUBLE_CLICK
OF CL_GUI_SIMPLE_TREE
IMPORTING NODE_KEY.
ENDCLASS.
CLASS LCL_APPLICATION IMPLEMENTATION.
METHOD HANDLE_NODE_DOUBLE_CLICK.
NODEKEY = NODE_KEY.
READ TABLE NODE_TABLE WITH KEY NODE_KEY = NODE_KEY INTO NODE1.
NODETEXT = NODE1-TEXT.
CLEAR WA_SFLIGHT.
SELECT ekko~bukrs "工厂
ekko~ebeln "采购订单编号
ekko~ekorg "采购组织
ekko~ekgrp "采购组
ekko~lifnr "供应商帐户号
ekpo~ebelp "采购订单行项目
ekpo~matnr "采购订单行项目物料
ekbe~BUDAT "过帐日期
ekbe~menge "入库数量 ?在工作 不具有相应字段
ekbe~ernam "创建者
eket~etenr "计划行
eket~eindt "交货日期
eket~slfdt "相关交货日期
eket~wemng "已交货数量
eket~banfn "采购申请
FROM ekko "从表里读取数据
INNER JOIN ekpo ON ekpo~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
INNER JOIN ekbe ON ekbe~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
INNER JOIN eket ON eket~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
INTO CORRESPONDING FIELDS OF TABLE WA_SFLIGHT "将查询结果放到内表里
WHERE ekko~bukrs = '3500' " 条件是和查询条件里的值相等
AND ekko~ebeln = '3500007055'.
SORT WA_SFLIGHT BY banfn .
DELETE ADJACENT DUPLICATES FROM WA_SFLIGHT COMPARING banfn.
* SELECT * INTO TABLE WA_SFLIGHT FROM SFLIGHT
* WHERE BUDAT_MKPF = NODE1-NODE_KEY+2(2)
* AND CONNID = NODE1-NODE_KEY+4(4).
CALL METHOD WA_ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'ZTET_Y008B'
CHANGING
IT_OUTTAB = WA_SFLIGHT.
ENDMETHOD.
ENDCLASS.
DATA G_APPLICATION TYPE REF TO LCL_APPLICATION.
START-OF-SELECTION.
* SELECT * INTO TABLE WA_SPFLI FROM SPFLI
* ORDER BY EBELN BUDAT_MKPF ASCENDING.
SELECT
ebeln
mjahr
mblnr
zeile
bwart
lgort
meins
BUDAT_mkpf
FROM mseg
INTO CORRESPONDING FIELDS OF TABLE WA_SPFLI
WHERE EBELN = '3500007055'
and WERKS = '3500'"p_bukrs'
and bwart = '101'."排除不是101的行
CREATE OBJECT G_APPLICATION.
SET SCREEN 100.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
IF WA_CUSTOM_CONTAINER IS INITIAL.
PERFORM CREATE_TREE.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'BACK' OR 'EXIT' OR 'CANC' .
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
FORM CREATE_TREE.
DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS,
EVENT1 TYPE CNTL_SIMPLE_EVENT.
*建立定制控制对象
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = WA_CONTAINER.
*创建ALV对象
CREATE OBJECT WA_CUSTOM_CONTAINERALV
EXPORTING
CONTAINER_NAME = WA_CONTAINERALV.
CREATE OBJECT WA_ALV
EXPORTING
I_PARENT = WA_CUSTOM_CONTAINERALV.
*建立树对象
CREATE OBJECT WA_TREE
EXPORTING
PARENT = WA_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE.
IF SY-SUBRC <> 0.
ENDIF.
* DATA: EBELN LIKE SPFLI-EBELN,
* BUDAT_MKPF LIKE SPFLI-BUDAT_MKPF.
DATA: mblnr LIKE MSEG-mblnr,
bwart LIKE MSEG-bwart.
DATA:STR1(255).
LOOP AT WA_SPFLI.
IF mblnr NE WA_SPFLI-mblnr.
CLEAR NODE1.
NODE1-NODE_KEY = WA_SPFLI-mblnr.
*第一层
CLEAR NODE1-RELATKEY.
CLEAR NODE1-RELATSHIP.
*是文件夹
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
*不带ICON
CLEAR NODE1-N_IMAGE.
CLEAR NODE1-EXP_IMAGE.
CLEAR NODE1-EXPANDER.
NODE1-TEXT = WA_SPFLI-mblnr.
APPEND NODE1 TO NODE_TABLE.
ENDIF.
*
* IF ( mblnr NE WA_SPFLI-mblnr ) OR ( bwart <> WA_SPFLI-bwart ).
* CLEAR NODE1.
* CONCATENATE WA_SPFLI-mblnr WA_SPFLI-bwart INTO NODE1-NODE_KEY.
**上层关系
* NODE1-RELATKEY = WA_SPFLI-mblnr.
* NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
* NODE1-HIDDEN = ''.
* NODE1-DISABLED = ''.
* NODE1-ISFOLDER = 'X'.
* CLEAR NODE1-N_IMAGE.
* CLEAR NODE1-EXP_IMAGE.
* CLEAR NODE1-EXPANDER.
**节点显示BUDAT_MKPF
* NODE1-TEXT = WA_SPFLI-bwart.
* APPEND NODE1 TO NODE_TABLE.
* ENDIF.
mblnr = WA_SPFLI-mblnr.
bwart = WA_SPFLI-bwart.
CLEAR NODE1.
CONCATENATE WA_SPFLI-mblnr WA_SPFLI-MEINS INTO NODE1-NODE_KEY.
NODE1-RELATKEY = WA_SPFLI-mblnr.
NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
NODE1-N_IMAGE = '@5B@'.
NODE1-EXP_IMAGE = '@5B@'.
CLEAR NODE1-EXPANDER.
"CONCATENATE WA_SPFLI-mblnr ':' WA_SPFLI-bwart INTO STR1.
"NODE1-TEXT = STR1.
NODE1-TEXT = WA_SPFLI-BUDAT_MKPF .
APPEND NODE1 TO NODE_TABLE.
ENDLOOP.
*按照节点内容添加节点
CALL METHOD WA_TREE->ADD_NODES
EXPORTING
TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = NODE_TABLE.
IF SY-SUBRC <> 0.
ENDIF.
*定义双击事件
EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
EVENT1-APPL_EVENT = 'X'.
APPEND EVENT1 TO EVENTS.
CALL METHOD WA_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS.
IF SY-SUBRC <> 0.
ENDIF.
*将已定义的双击事件分配至树对象
SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR WA_TREE.
ENDFORM.
最后效果图
- Tree Control对象与ALV Grid对象关联实例
- The ALV Grid control
- 面向对象(OO)的ALV GRID设置颜色
- 非常不错ALV GRID CONTROL 教材
- 非常不错ALV GRID CONTROL 教材
- 非常不错ALV GRID CONTROL 教材
- ALV tree应用实例
- 面向对象(OO)的ALV GRID设置颜色(再续)
- optional(对象与实例)
- 原型对象与实例
- ALV Grid
- 关联对象
- 关联对象
- ALV 用对象的方法
- alv 的面向对象实现
- JAVA-class对象与实例对象
- MFC控件与相应的对象关联
- MyBatis对象关联关系---- association与collection
- View相关的计算
- 2017.02.21回顾
- css中的position属性
- Maven(2):新建Java Project
- Cloudstack 入门
- Tree Control对象与ALV Grid对象关联实例
- window7下Java环境变量配置图解
- 6. 适配器模式
- Xamarin Studio 折叠代码设置
- eclipse设背景色以及字体颜色
- 用HMM模型进行中文分词
- 关于Spring中的<context:annotation-config/>配置
- 为你的Android App实现自签名的 SSL 证书
- RN8_React-Native知识点2之-布局