声明变量时是不是可以使用“TEXT-XXX”?

Posted

技术标签:

【中文标题】声明变量时是不是可以使用“TEXT-XXX”?【英文标题】:Is it possible to use 'TEXT-XXX' when declaring variable?声明变量时是否可以使用“TEXT-XXX”? 【发布时间】:2022-01-08 16:41:57 【问题描述】:

我正在公司提供的 ABAP 中进行自学,但资源不足。

输出应为:“员工编号”

“名字”

“姓氏”

“生日”

“梦想薪水”

“爱好”

指令是:使用具有正确数据类型的变量显示以下内容。 文本符号应分配给下面列出的值。

text-001 员工编号

text-002 名字

text-003 姓氏

text-004 生日

text-005 梦想薪水

text-006 爱好

但是,我们不允许在 ABAP 中声明变量时使用破折号(-)。

有什么解决方法吗?

这是我的代码

DATA: text_001 TYPE String,
      text_002 TYPE String,
      text_003 TYPE String,
      text_004 TYPE String,
      text_005 TYPE String,
      text_006 TYPE String,

MOVE 'EMPLOYEE NUMBER' TO text_001.
MOVE 'EMPLOYEE NUMBER' TO text_002.
MOVE 'EMPLOYEE NUMBER' TO text_003.
MOVE 'EMPLOYEE NUMBER' TO text_004.
MOVE 'EMPLOYEE NUMBER' TO text_005.
MOVE 'EMPLOYEE NUMBER' TO text_006.

WRITE: text_001,
     / text_002,
     / text_003,
     / text_004,
     / text_005,
     / text_006.

虽然它输出所需的输出,但检查我的代码的应用程序不接受该代码作为正确答案。由于我需要使用:

text-001 而不是 text_001

【问题讨论】:

请注明应用程序显示的确切信息。 @SandraRossi 这是一个由我的雇主制作的内部程序,上面写着“与正确的程序不匹配”我希望它有提示,这样我就可以检查我哪里出错了。 内部自定义程序如果没有详细描述,我们也无话可说。无论如何,我猜它模仿了标准检查,建议定义可翻译的文本文字(当这些文字可能被翻译时,否则使用 Pragma ##NOTEXT 标记它们),例如使用文本符号。搜索 ABAP 文档以获取更多信息。 FWIW 破折号 (-) 用于 ABAP 中的组件访问,例如user-name 访问 user 结构的 name 组件。同理,text-001 访问文本结构的 001 组件(通过 Text Elements 预定义) 这个基本的 ABAP 语法应该是你课程的一部分之前给你这样的练习...... 【参考方案1】:

我认为您可能误解了说明。我相信您应该对常量字符串使用文本符号,对变量字符串使用变量。

Text symbols 是一种存储静态文本字符串的技术,这些字符串出现在您的程序中,与您的 ABAP 代码分开。这样做的主要原因是 i18n。这些文本稍后可以由不知道如何编程 ABAP 的人翻译。当最终用户使用与您创建程序时不同的登录语言时,程序将自动使用翻译后的文本。

您可以通过转到菜单栏中的“转到”->“文本元素”,然后选择“文本符号”选项卡,在 SE80 中创建文本符号。

您可以通过右键单击源代码并在上下文菜单中选择“打开其他”->“文本元素”,在 Eclipse 中创建文本符号。 p>

每个文本符号都有一个 3 位数字。然后,您可以像这样引用数字:

WRITE: / text-001, gv_firstname.

【讨论】:

最好不要使用格式TEXT-###,而是使用'textliteral'(###)。正如链接的帮助文本所解释的那样,如果文本元素未以登录语言维护,则使用后一种构造,您仍将获得一些有意义的文本。而且它使代码更容易阅读。

以上是关于声明变量时是不是可以使用“TEXT-XXX”?的主要内容,如果未能解决你的问题,请参考以下文章

指针本质分析

变量声明

为啥我可以在javascript中删除一个声明为a = 1的变量而不是一个声明的var b = 1 [重复]

在单片机编程时那些unsigned int是否可以不赋初值,都默认初值是0

当Dapper不是对象时,如何使用Dapper正确声明SQL更新请求中的变量?

JS全局变量是全局对象的属性,函数局部变量为啥就不是函数的属性呢?