ABAP - Function ALV 04 自定义按钮

  • SAP GUI标准状态栏功能功能固然强大,可仍然有些用户功能的无法满足吗,比如根据采购订单的数据进行调拨,这样就需要用到自定义按钮了。
  • Function ALV实现自定义按钮步骤:1.在GUI状态下添加新按钮->2.增加Function ALV传入参数以及按钮参数功能实现.
  • 1.在GUI状态下添加新按钮.一般Function ALV程序的状态采用复制的方式来建立,复制状态使用SE41事务码安装下图步骤建立,一直复制下去即可。

  •  回到主程序可以看到GUI 状态已经复制过来了

 

  • 接下来是添加自定义按钮 

 

 

 

  • 程序激活运行,可以看到自定义按钮已经有了

  •  2.增加Function ALV传入参数,只要在调用Function ALV把传入参数( i_callback_user_command )打开并作相应处理

 

  •  显示效果
  •  


完整代码

** 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.
  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 'BUTTON'.
      MESSAGE  '自定的按钮功能呢' TYPE 'I'.
  ENDCASE.
ENDFORM.

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值