- Function ALV可以通过单元格设置单击和双击热点进行某些功能的实现,例如点击单号跳转到前台界面。
- 完成功能思路:先在Fieldcat将采购订单列设置为热点,然后Function ALV调用函数的传入参数i_callback_user_command子例程中处理。
FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CASE r_ucomm. WHEN ''. WHEN ORTHER. ENDCASE. ENDFORM.
可以看到子例程中有两个传入参数,r_ucomm(用户的命令码),rs_selfield(ALV光标所在的字段等信息),调试时可以看到两个参数的值,单击双击的命令码是&IC1。
- 完整代码
** Layout 变量定义 DATA gs_layout TYPE lvc_s_layo. ** Fieldcat 变量定义 DATA:gt_fieldcat TYPE lvc_t_fcat, gs_fieldcat LIKE LINE OF gt_fieldcat. ** FieldCat的宏 DATA gv_pos TYPE i. DEFINE %%add_fieldcat. gv_pos = gv_pos + 1. gs_fieldcat-col_pos = gv_pos. gs_fieldcat-fieldname = &1. gs_fieldcat-scrtext_m = &2. CASE &1. WHEN 'EBELN'. gs_fieldcat-hotspot = 'X'. "设置成热点 WHEN OTHERS. ENDCASE. APPEND gs_fieldcat TO gt_fieldcat.CLEAR gs_fieldcat. END-OF-DEFINITION. START-OF-SELECTION. SELECT ekko~ebeln, "采购订单抬头数据- 采购单号 ekko~bukrs, "采购订单抬头数据- 公司代码 ekko~ekorg, "采购订单抬头数据- 采购组织 ekko~aedat, "采购订单抬头数据- 订单创建日期 ekko~ernam, "采购订单抬头数据- 订单创建者 ekpo~ebelp, "采购订单明细数据- 采购订单行号 ekpo~matnr, "采购订单明细数据- 采购订单物料编码 ekpo~menge, "采购订单明细数据- 采购数量 ekpo~meins, "采购订单明细数据- 采购数量的计量单位 ekpo~werks, "采购订单明细数据- 收货工厂 ekpo~lgort "采购订单明细数据- 收货库存地点 INTO TABLE @DATA(gt_po) FROM ekko INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln WHERE ekko~aedat BETWEEN '20220301' AND '20220331'. ** Fieldcat字段映射处理 %%add_fieldcat:'EBELN' '采购单号', "( 前面字段值不可变 后面字段描述可变 每一行都是) 'EBELP' '采购订单行号', 'EKORG' '采购组织', 'BUKRS' '公司代码', 'AEDAT' '订单创建日期', 'ERNAM' '订单创建者', 'MATNR' '物料编码', 'MENGE' '采购数量', 'MEINS' '单位', 'WERKS' '收货工厂', 'LGORT' '收货库存地点'. ** Layout布局处理 gs_layout-cwidth_opt = 'X'. "自动优化列宽 (可以使用**在一行代码面前注释掉 看看ALV会有什么效果) gs_layout-zebra = 'X'. "斑马纹输出 ** 调用FunctionALV需要传入的参数:展示数据,FieldCat,Layout,Status CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid i_callback_pf_status_set = 'FRM_SET_STATUS' i_callback_user_command = 'FRM_USER_COMMAND' is_layout_lvc = gs_layout it_fieldcat_lvc = gt_fieldcat TABLES t_outtab = gt_PO[] EXCEPTIONS program_error = 1 OTHERS = 2. FORM frm_set_status USING p_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD'. ENDFORM. FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CASE r_ucomm. WHEN '&IC1'. CASE rs_selfield-fieldname. WHEN 'EBELN'. SET PARAMETER ID 'BES' FIELD rs_selfield-value. CALL TRANSACTION 'ME23N'. WHEN OTHERS. ENDCASE. WHEN 'BUTTON'. MESSAGE '自定的按钮功能呢' TYPE 'I'. WHEN OTHERS. ENDCASE. ENDFORM.
ABAP - Function ALV 08 热点和单击/双击的联动之ALV点击单号跳转
于 2024-02-27 20:38:21 首次发布
本文详细介绍了如何在SAP系统中使用FunctionALV和Fieldcat功能,通过设置单元格热点,实现单击和双击事件触发不同的操作,如跳转到前台界面。重点展示了如何配置FieldCat,处理数据映射和调用FunctionALV的参数传递过程。
摘要由CSDN通过智能技术生成