【问题标题】:Check if message id exists检查消息ID是否存在
【发布时间】:2018-02-26 16:16:37
【问题描述】:

我正在使用 MESSAGE 函数,我想知道如何确定消息 ID 是否存在。
例如:

  1. 我在消息类“test_message”中定义了一条 ID 为“001”的消息。
  2. 然后我这样称呼它:MESSAGE e001(test_messages) WITH 'Test'.
  3. 我从sy 的另一个函数中检索它

当我做MESSAGE e000(test_messages) WITH 'Test'. sy 中的值是相同的(当然除了 id)。但在这种情况下,我想更改我的流程,因为我从未创建过 id 为 000 的消息。
我不知道在哪里可以检查 id 是否真的存在。

【问题讨论】:

  • 如果您使用不存在的消息,ATC 应该警告您,AFAIR - 这有帮助吗?

标签: abap


【解决方案1】:

您可以对表 T100 执行 SELECT。如果你能找到你的消息,它就存在:P

类似

SELECT "just anything that fits your needs, with or without SINGLE
  "UP TO 1 ROWS if you will not use the table's PK
  FROM T100
  INTO "field or fieldlist that fits your needs
  WHERE ARBGB = "your ID
    AND MSGNR = "your number.
"ENDSELECT. if you use UP TO 1 ROWS
IF sy-subrc = 0. "it exists

【讨论】:

  • SQL 根据@s-grosjean 的建议“改进”。我通常不提供 OP 所需的确切代码(这里也不提供我原来的出生地 SAPFans)。我习惯于将工作留给 OP,以根据我的“提示”来满足他们自己的要求。
  • 感谢您在这里指出我自己的问题,我完全忘记了它xD
【解决方案2】:

VXLozano 的答案是合适的,但可以通过提供语言字段并仅检索 TEXT 字段来提高性能。这样做可以让您添加“SINGLE”选项并加快邮件查找速度。

SELECT SINGLE TEXT
  FROM T100
  INTO dummyfield
 WHERE SPRSL = SY-LANGU
   AND ARBGB = "Your ID"
   AND MSGNR = "your Number".
IF sy-subrc = 0.
  "the requested message in the message class exists for your current language
ENDIF.

【讨论】:

    猜你喜欢
    • 2014-06-18
    • 2021-04-18
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2014-09-21
    • 2017-10-02
    相关资源
    最近更新 更多