本文主要是介绍ABAP - Function ALV 08 热点和单击/双击的联动之ALV点击单号跳转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- Function ALV可以通过单元格设置单击和双击热点进行某些功能的实现,例如点击单号跳转到前台界面。
- 完成功能思路:先在Fieldcat将采购订单列设置为热点,然后Function ALV调用函数的传入参数i_callback_user_command子例程中处理。
FORM frm_user_command USING r_ucomm LIKE sy-ucommrs_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 ekkoINNER JOIN ekpo ON ekko~ebeln = ekpo~ebelnWHERE 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,StatusCALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'FRM_SET_STATUS'i_callback_user_command = 'FRM_USER_COMMAND'is_layout_lvc = gs_layoutit_fieldcat_lvc = gt_fieldcatTABLESt_outtab = gt_PO[]EXCEPTIONSprogram_error = 1OTHERS = 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-ucommrs_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点击单号跳转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!