声明变量时是不是可以使用“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