ALV GRID参考文档(III)

 
建立field catalog下面的步骤便是如何填充FIELD CATALOG内表。上面介绍了field catalog的行类型的各个字段。为了正确的填充每一列的field catalog 的字段,下面的这几个字段必须被填充。
Output table fields with DDIC reference
Output table fields without DDIC reference
Explanation
 
FIELDNAME
FIELDNAME
要显示内表的字段
REF_TABLE
 
参考的数据字典结构
REF_FIELD
 
要参考的数据字典字段
 
INITYPE
要显示的内表的字段的ABAP数据类型
 
OUTPUTLEN
列的宽度
 
COLTEXT
列头文本
 
SELTEXT
选择列的描述信息
 
FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat.
 DATA: ls_fcat TYPE lvc_s_fcat.
 Ls_fcat-fieldname = ‘CARRID’.
 Ls_fcat-inttype = ‘C’.
 Ls_fcat-outputlen = ‘3’.
 Ls_fcat-coltext = ‘CARRIER ID’.
 Ls_fcat-seltext = ‘CARRIER ID’.
 APPEND ls_fcat TO pt_fieldcat.
 DATA: ls_fcat TYPE lvc_s_fcat.
 Ls_fcat-fieldname = ‘CONNID’.
 Ls_fcat-ref_table =’SFLIGHT’.
 Ls_fcat-ref_col = ‘CONNID’.
 APPEND ls_fcat TO pt_fieldcat.
ENDFORM.
半自动的产生field catalog
把我们要显示的字段都一行一行的插入到field catalog内表中确实是一件烦人的事情。并且如果想自动产生field catalog的话那也不是十分理想。幸运的是有一种方法可以半自动的产生field catalog。
这种方法需要调用一个功能模块。我们传入一个结构模版,他就会自动为我们产生field catalog内表。可以遍历这张内表,改变我们想要改变的东西。这个功能模块的名字是’LVC_FIELDCATALOG_MERGE’。下面的代码展示了这种方法的使用。
FORM frm_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat.
 DATA ls_fcat TYPE lvc_s_fcat.
 CALL FUNCTION ‘LVC_FIELDCATLOG_MERGE’
EXPORTING
 I_structure_name = ‘SFLIGHT’
CHANGING
 Ct_fieldcat = pt_fieldcat
EXCEPTIONS
 Inconsistent_interface = 1
 Program_error = 2
 Oters = 3.
 IF sy-subrc <> 0.
 
 ENDIF.
 LOOP AT pt_fieldcat INTO ls_fcat.
CASE ls_fcat-fieldname.
 WHEN ‘CARRID’.
    Ls_fcat-outputlen = ‘10’.
    Ls_fcat-coltext = ‘Airline carrid’.
    MODIFY pt_fieldcat FROM ls_fcat.
 WHEN ‘PAYMENTSUM’.
    Ls_fcat-no_out = ‘X’.
    MODIFY pt_fieldcat FROM ls_fcat.
ENDCASE.
 ENDLOOP.
ENDFORM.
这个例子中首先使用结构SFLIGHT建立了fieldcatlog内表。然后我们又改变了CARRID的输出长度和字段文本。然后我们又改变字段paymentsum为不输出。
紧接着带来的问题是假如我们把i_structure_name和i_fieldcatlog这两个字段都传进去了将会发生什么。显然这是个优先级的问题。I_structure_name的优先级要高。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值