实现的方式有两种,
1.FUNCTION ALV在it_events的参数中,写入对应的事件
2.OO ALV和FUNCTION ALV都可以,注册当前ALV的事件,对应的事件需要创建对象去实现。
下面代码中,实现的是第一种,在it_events中写入事件
FORM frm_fieldcat.
DEFINE fcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = &1. "字段的名字(内表中定义的字段名)
ls_fieldcat-scrtext_l = &2. "字段的文本描述,输出时候显示。长描述
ls_fieldcat-edit = &3. "当前列可编辑
ls_fieldcat-drdn_hndl = &4.
IF &1 = 'BL_DATUM' OR &1 = 'FKRQ1' OR &1 = 'FKRQ2'.
* ls_fieldcat-HOTSPOT = 'X'.
ls_fieldcat-ref_field = 'ERDAT'.
ls_fieldcat-ref_table = 'VBAK'.
ENDIF.
IF &1 = 'BZ'.
ls_fieldcat-dd_outlen = 50.
ENDIF.
APPEND ls_fieldcat TO lt_fieldcat.
END-OF-DEFINITION.
fcat:
'WADAT_IST' '出货日期' '' '',
'HTEXT' '合同号' '' '', "取自交货单抬头文本
'KUNNR' '客户编码' '' '',
'NAME1' '客户名称' '' '',
'VKORG' '销售组织' '' '',
'L_VBELN' '磅码单号' '' '',
'CHJE' '出货金额' '' '',
'NTGEW' '净重量' '' '',
'BL_DATUM' '开票/BL日期' 'X' '',
'KPJE' '开票金额' 'X' '',
'WAERS' '币种' '' '',
'BL_NUM' '发票号/BL号' 'X' '',
'ZTERM' '付款条件' '' '',
'VTEXT' '付款条件描述' '' '',
'FKTJLB' '付款条件类别' 'X' '1',
'ZTAG1' '账期' '' '',
'DQRQ' '到期日期' '' '',
'FKRQ1' '付款日期1' 'X' '',
'FKJE1' '付款金额1' 'X' '',
'FKRQ2' '付款日期2' 'X' '',
'FKJE2' '付款金额2' 'X' '',
'YUE' '余额' '' '',
'SX' '手续费' 'X' '',
'QK' '欠款' 'X' '',
'S

这篇文章展示了如何在SAPABAP中处理ALV(ListViewer)表格的事件。通过在`it_events`参数中指定事件,或者注册ALV对象来实现事件监听。代码示例中详细说明了如何设置字段属性,并在`DATA_CHANGED`事件触发时调用自定义的`FRM_DATA_CHANGED`函数来处理数据变化。

1322

被折叠的 条评论
为什么被折叠?



