ALV内容中需要千位分隔符

2020-09-10 19:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我要求在ALV显示的字段(例如当前库存数量,SO数量等)中显示千位分隔符。这些字段的数据类型为字符串。 我需要将其显示为92,061.00。

请提出建议。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我要求在ALV显示的字段(例如当前库存数量,SO数量等)中显示千位分隔符。这些字段的数据类型为字符串。 我需要将其显示为92,061.00。

请提出建议。

付费偷看设置
发送
5条回答
樱桃小丸子0093
1楼-- · 2020-09-10 20:01

您好 Lakashey Pajnee

请在下面的示例代码中进行测试。

(请记住,您必须将数据类型从String更改为Char)

类型:BEGIN OF ty1_alv,
         char_decimal TYPE char35,
         结束于ty1_alv。
 数据:ty1_alv的it1_alv类型标准表,
       wa1_alv TYPE ty1_alv,
       数量TYPE fkimg。
 字段符号:类型ty1_alv。

 选择开始。

   wa1_alv-char_decimal ='12345.238'。 将wa1_alv附加到it1_alv。
   wa1_alv-char_decimal ='234566'。 将wa1_alv附加到it1_alv。
   wa1_alv-char_decimal ='2324553.20'。 将wa1_alv附加到it1_alv。

   循环到it1_alv分配。
     数量=  -char_decimal。
     写:数量为 -char_decimal。
   结局。

   执行show_alv表it1_alv使用'ALV:以千位分隔符表示的字符数量'。

 *&------------------------------------------------  --------------------- *
 *&形式show_alv
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> IT文字
 *->标题文字
 * -------------------------------------------------  --------------------- *
 FORM show_alv使用标题表。


   数据:ref_table类型ref cl_salv_table,
         ref_form_layout_grid类型参考cl_salv_form_layout_grid,
         ref_functions类型参考cl_salv_functions,
         ref_columns类型对cl_salv_columns_table的引用。

   尝试。
       cl_salv_table =>工厂(
         输入
           r_salv_table = ref_table
         改变
             t_table = it [])。

       ref_functions = ref_table-> get_functions()。
       ref_functions-> set_all(abap_true)。
       ref_columns = ref_table-> get_columns()。

       ref_columns-> set_optimize('X')。

       创建对象ref_form_layout_grid。

 *设置标题文本
       ref_form_layout_grid-> create_header_information(行= 1列= 1文本=标题)。

 *设置列表顶部
       ref_table-> set_top_of_list(ref_form_layout_grid)。

       ref_table-> display()。

     捕获cx_salv_not_found。
       MESSAGE'错误:CX_SALV_NOT_FOUND'类型'I'。
     捕捉cx_salv_msg。
       MESSAGE'错误:CX_SALV_MSG'类型'I'。

   ENDTRY。

 ENDFORM。  " show_alv
 

感谢和问候,

失败

Haoba3210
2楼-- · 2020-09-10 19:55

发布之前您已经尝试过什么:文本转换为数字变量,然后将其写回文本类型变量,或使用一些 Abap的字符串函数

一只江湖小虾
3楼-- · 2020-09-10 19:48

我想您的原始数据应该是数量类型,由于某种原因,您将其移至字符串并显示,但没有千位分隔符 。 如果是这种情况,您应该在原始数据上加上UNIT而不是直接移动。

浮生未央
4楼-- · 2020-09-10 19:57

不过,在将字符串映射到十进制工作字段时,我会添加TRY/CATCH/ENDTRY(只是 万一出现cx_sy_conversion_error)

Nan4612
5楼-- · 2020-09-10 20:13

嗨,

由于数量更好,因此可以使用任何数量参考字段,例如menge,fkimg等,或者仅在需要时使用 在字符串中,然后将其分配给char字段。

或字符串可以使用FM WSAF_CONV_STRING_TO_DECIMAL或MOVE_CHAR_TO_NUM转换为小数。.

一周热门 更多>