1

我编写了一个自动从系统中提取时间相关信息的代码。如表中所示,将 t247 月份名称的长度固定为 10 个字符。但在报告屏幕上显示时图像不好。

在此处输入图像描述

我这样打印:

  WRITE : 'Bugün', t_month_names-ltx, ' ayının'.
  CONCATENATE gv_words-word '''nci günü' INTO date.
  CONCATENATE date ',' INTO date.
  CONCATENATE date gv_year INTO date SEPARATED BY space.
  TRANSLATE   date TO LOWER CASE.

我尝试了CONDENSE t_month_names-ltx NO-GAPS.删除空格的方法,但还不够。

在 WRITE 之后,我可以通过设置空白值来静态写入:

  WRITE : 'Bugün', t_month_names-ltx.
  WRITE : 14 'ayının'.
  CONCATENATE gv_words-word '''nci günü' INTO date.
  CONCATENATE date ',' INTO date.
  CONCATENATE date gv_year INTO date SEPARATED BY space.
  TRANSLATE   date TO LOWER CASE.

在此处输入图像描述

但这不是正确的用法。我如何动态地实现这一点?

4

2 回答 2

1

您可以使用 STRING 类型的临时字段:

DATA l_month TYPE STRING.

l_month = t_month_names-ltx.

WRITE : 'Bugün', l_month.
WRITE : 14 'ayının'.
CONCATENATE gv_words-word '''nci günü' INTO date.
CONCATENATE date ',' INTO date.
CONCATENATE date gv_year INTO date SEPARATED BY space.
TRANSLATE   date TO LOWER CASE.
于 2020-07-24T07:00:14.443 回答
1

您不能从 TYPE C 字段中删除尾随空格,因为它的长度是恒定的。未使用的长度总是用空格填充。

但是在你组装好你的字符串之后,你可以使用CONDENSE无间隙来删除字符串中任何一个以上空格的链。

CONDENSE date.在您编写的代码下方添加,您应该得到您想要的结果。

另一种选择是放弃CONCATENATE并使用字符串模板|符号内的字符串文字)来代替字符串组装,它没有包含 TYPE C 字段尾随空格的烦人习惯:

DATA long_char TYPE C LENGTH 128.
long_char = 'long character field'.

WRITE |this is a { long_char } inserted without spaces|.

输出:

this is a long character field inserted without spaces
于 2020-07-24T08:08:05.687 回答