获取货币字段符号引用的货币符号



我有一个结构组件的字段符号:

ASSIGN COMPONENT lv_field_name OF STRUCTURE ls_structure TO <lv_data>.
IF sy-subrc = 0.
WRITE <lv_data> TO lv_field_value.
ENDIF.

问题:如果<lv_data>CURR类型,WRITE...的结果可能是错误的。

<lv_data>引用保存货币符号(如'EUR')的字段。在我的例子中,我们可以假设引用的货币字段在相同的结构中。

是否有一个抽象的方法来获得<lv_data>的引用货币值,以便我可以写一些像

WRITE <lv_data> TO lv_field_value CURRENCY <lv_currency>.

我查看了cl_abap_typedescr类和子类,但是我没有找到可以用来分配<lv_currency>的东西。

cl_abap_structdescr有一个方法get_ddic_field_list,它返回一个结构为DFIES的表。REFTABLEREFFIELD字段包含对应字段的货币或单位的引用字段的名称。

DATA(lo_structdescr) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( ls_structure ) ).
DATA(lt_ddic_fields) = lo_structdescr->get_ddic_field_list( ).
DATA(ls_ddic_info) = lt_ddic_fields[ fieldname = lv_field_name ].
ASSIGN COMPONENT lv_field_name OF STRUCTURE ls_structure TO FIELD-SYMBOL(<lv_data>).
ASSIGN COMPONENT ls_ddic_info-reffield OF STRUCTURE ls_structure TO FIELD-SYMBOL(<lv_currency>).
WRITE <lv_data> CURRENCY <lv_currency>.

警告:此代码假设货币字段与值字段处于相同的结构中。情况并非总是如此!ls_ddic_info-reftable可能提到了一个不同的结构。在这种情况下,事情就复杂多了。您需要找到该表中与您的结构(可能来自数据库)相对应的条目,并从中检索货币字段。

相关内容

  • 没有找到相关文章

最新更新