abap - 使用 ID 以编程方式获取文本符号

标签 abap

有没有办法在运行时以编程方式获取文本符号的值?

场景是我有一个调用功能模块的简单报表。我在 CHAR1 类型的变量 LV_MSG 中收到一个导出参数。这表示在程序中创建的特定状态消息,例如 F(失败)、X(匹配)或 E(错误)。我目前使用 CASE 语句打开 LV_MSG 并用消息的简短描述填充另一个变量。这些描述作为文本符号进行维护,我在编译时使用 text-MS# 检索这些符号,其中 # 与 LV_MSG 的可能返回值相同,例如 text -MSX 的值为“找到完全匹配”。

现在在我看来,整个 CASE 语句是不必要的,因为我可以将 ID 为 'MS' + LV_MSG 的文本符号的值分配给我的描述变量>(伪代码,将使用 CONCATENATE)。现在我的问题是如何在运行时根据其 ID 的字符串表示形式找到文本符号。这可能吗?

如果是这样,我的代码看起来会更清晰,并且在功能模块中添加新消息时我不必更新我的实际代码,因为我只需要添加一个新的文本符号。但是这种方法会更快吗?或者它实际上会降低报告的性能吗?

最佳答案

就我个人而言,我可能会定义一个域并使用域的固定值来表示值。这样,您甚至可以绕过字符串连接。您可以使用功能模块 DD_DOMVALUE_TEXT_GET 轻松访问域值的语言相关文本。

要访问程序的文本元素,请使用像 READ_TEXT_ELEMENTS 这样的功能模块。

请注意,像这样的泛型编程肯定会减慢您的程序。它是否会使您的代码看起来更清晰,这是在旁观者的眼中——如果值很少改变,我不明白为什么一个简单的 CASE 语句应该不如一些通用的文本访问。

关于abap - 使用 ID 以编程方式获取文本符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807609/

相关文章:

abap - 工作区、全局结构、内表有什么区别?

abap - 如何处理 tabstrip 中具有多个 ALV 的事件接收器?

abap - 如果处理大数据量,则 OPEN DATASET 后出现错误 3,否则无错误

abap - 文本文字末尾 (052) 的含义?

java - 了解 SAP WAS 服务器是 ABAP、Java 还是集成的方法

string - 将字符串混合输入拆分为单个值的范围

abap - ABAP 中的 ?= 是什么意思

abap - 使用动态方法名称调用方法,RuntimeException

subquery - 选择多个字段不在子查询中的位置(不包括连接)