alv输出时,fieldcat(lvc_s_fcat)的利用是必然的,我们需要很仔细,不然,很容易发生一些瑕疵和马虎的问题,最容易出现的问题就是数量和金额的问题:
1.alv中数量和金额的列目录的显示,例如库存的时候,数量有 期初的,期末的,期间发生的,怎么做到列名称就是我们需要的呢,
可以利用截图中 的第一个 coltext 来编辑fieldname的描述,后面的三个就不要用了,不然还会显示标准表中的字段描述。
2.出现数量和金额字段是可编辑的时候,要注意参照数据库表或者自建表的字段了或者自己定义个类型
如截图显示,可以利用图中 的2种方式来解决
截图1中的适用金额和数量都可以
截图2 中的需要自己来分辨金额和数量的类型了
datatype 的domain中有很多的值范围,这个需要自己来分辨的 inttype 也是需要分辨不同的datatype的domain对应的值范围
DEFINE alv_field_qua.
clear gw_field.
gw_field-fieldname = &1.
gw_field-coltext = &2.
gw_field-outputlen = &3.
gw_field-datatype = 'QUAN'.
gw_field-inttype = 'C'.
gw_field-edit = &4.
gw_field-f4availabl = &5.
append gw_field to gt_field.
END-OF-DEFINITION.
DEFINE alv_field_curr.
clear gw_field.
gw_field-fieldname = &1.
gw_field-coltext = &2.
gw_field-outputlen = &3.
gw_field- = 'CURR'.
gw_field-edit = &4.
gw_field-f4availabl = &5.
append gw_field to gt_field.
END-OF-DEFINITION.
DEFINE alv_ref1.
clear gw_field.
gw_field-fieldname = &1.
gw_field-coltext = &2.
gw_field-outputlen = &3.
gw_field-ref_field = &4.
gw_field-ref_table = &5.
gw_field-edit = &6.
gw_field-f4availabl = &7.
append gw_field to gt_field.
END-OF-DEFINITION.
3.还有注意数量和金额的小数的问题
可以利用datatype的值域 ‘INT4’ 和inttype的 'I'来解决,或者lvc_s_fcat中的decmails的参数
4.下图中小数点的问题和字段所包含的domain的转换例程convexit 的应用
DEFINE alv.
clear: ps_fieldcat.
ps_fieldcat-fieldname = &1.
ps_fieldcat-scrtext_s = &2.
ps_fieldcat-scrtext_m = &2.
ps_fieldcat-scrtext_l = &2.
case &1.
when 'AUFNR'.
ps_fieldcat-convexit = 'ALPHA'.
endcase.
IF &1 = 'ZMENG' .
ps_fieldcat-no_zero = 'X'.
ps_fieldcat-quantity = '1'.
ps_fieldcat-qfieldname = 'MEINS'.
ENDIF.
append ps_fieldcat to pt_fieldcat.
clear: ps_fieldcat.
END-OF-DEFINITION.
6.做f4的参照表的时候,出现下图的问题;这时要注意该字段所用的参照表的字段数据元素的搜索帮助是否存在外键检查,这时会出现外键检查的报错 如下:
如何解决呢,很简单;
如果你用的标准表,那只能换字段了,如果是自定义的表,把这个外键检查改一下,其他字段换成默认值