ALV GRID参考文档(III)
2007-12-02 23:14
429 查看
建立field catalog下面的步骤便是如何填充FIELD CATALOG内表。上面介绍了field catalog的行类型的各个字段。为了正确的填充每一列的field catalog 的字段,下面的这几个字段必须被填充。
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的优先级要高。
Output table fields with DDIC reference | Output table fields without DDIC reference | Explanation |
FIELDNAME | FIELDNAME | 要显示内表的字段 |
REF_TABLE | 参考的数据字典结构 | |
REF_FIELD | 要参考的数据字典字段 | |
INITYPE | 要显示的内表的字段的ABAP数据类型 | |
OUTPUTLEN | 列的宽度 | |
COLTEXT | 列头文本 | |
SELTEXT | 选择列的描述信息 |
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的优先级要高。
相关文章推荐
- 第7章 IoC容器 III (Container) -- Spring4.3.8参考文档中文版
- ALV GRID参考文档 ( 3 ) - 建立field catalog
- ALV GRID参考文档 ( 11 ) -表单中显示按钮
- ALV GRID参考文档(II)
- ALV GRID的参考文档 ( 4 ) - 显示格式的调整
- ALV GRID参考文档 ( 13 ) - ALV控件中的内容可编辑
- 第5章 Spring 4.0增强和新功能 III -- Spring4.3.8参考文档中文版
- ALV GRID的参考文档 ( 6 ) - 设置排序条件
- ALV GRID参考文档 ( 8 ) - 插入超级链接
- ALV GRID的参考文档(IV)
- ALV GRID 参考文档 ( 15 ) - 单元输入事件
- ALV GRID的参考文档(V)
- ALV GRID的参考文档(VI)
- ALV GRID的参考文档(九)
- 参考文档
- 创建数据库链路参考文档
- rebar3的一些参考文档
- Git参考文档(转载地址)
- svg参考文档
- Spring 框架参考文档(四)-数据访问之 DAO 支持