【问题标题】:How to read automatically-created variants如何读取自动创建的变体
【发布时间】:2018-02-16 02:40:42
【问题描述】:

我需要阅读自动创建的变体,以获取选择屏幕参数和其他选择标准。此类变体的名称以符号 & 开头(例如,&0000000000425)。一旦您从se80/se38 安排任何后台作业或任何事务而不选择任何现有变体(从选择屏幕,菜单程序 -> 在后台执行),就会创建此类变体。

函数模块RS_VARIANT_CONTENTS 适用于普通变体(可以通过se80/se38 查看),但不适用于自动创建的变体(以& 开头)。我查看了FM,发现VARI表被下一个代码读取:

IMPORT %_VARI40C   TO P_VARI
     %_VARI40    TO L_VARI_40
     %_VARI      TO L_VARI
     %_VARIVDAT  TO P_VARIVDAT
*         %_VARIDYN40 TO P_VARIDYN
     %_VARIVDAT_DYN40 TO P_VDATDYN
     DYNS_FIELDS TO OLD_DYNSFIELDS
     DYNS_TEXPRI TO OLD_TEXPRI
     DYNS_EXPR   TO OLD_EXPR
     DYNS_FIELD_TAB TO DYNS_FIELDS
     DYNS_TEXPR TO DYN_SEL-TEXPR
         FROM DATABASE VARI(VB) CLIENT L_CLIENT ID P_RKEY
         ignoring structure boundaries
         IGNORING CONVERSION ERRORS.

但是,对于 & 变体,导入不会返回任何内容。看起来& 变体的值存储在与 FM RS_VARIANT_CONTENTS 使用的格式不同的格式中。

有没有办法为 & 变体值找到合适的格式/数据结构?

更新:我创建了ZBC_TEST 程序并将其安排为作业。我在VARI 表中看到了一条记录:

MANDT    RELID   REPORT     VARIANT         SRTF2
200      VB      ZBC_TEST   &0000000000425  0

因此,&0000000000425 变体存在于VARI 表中。记录的VARI-CLUSTD 字段不为空。我使用此代码:

CALL FUNCTION 'RS_VARIANT_CONTENTS'
  EXPORTING
    REPORT        = 'ZBC_TEST'
    VARIANT       = '&0000000000425'
    MOVE_OR_WRITE = 'W'
  IMPORTING 
    SP            = lv_sp
  TABLES
    VALUTAB       = lt_valtab.

FM已经无异常执行了sy-subrc=0,但是lt_valtab表是空的...

【问题讨论】:

  • 我可以使用功能模块毫无问题地读取变体 - 您到底尝试了什么?另请注意,作业调度程序会自动删除这些变体 - 也许这是您的问题的一部分?
  • 请在我上面的问题中查看更新。
  • 我无法重现该行为。你确定 ZBC_TEST 有 PARAMETERS 或 SELECT-OPTIONS...?
  • 对不起,这是我的错。 ZBC_TEST 既没有屏幕参数也没有选择选项。我用其他报告检查了 RS_VARIANT_CONTENTS,FM 工作正常。谢谢你!
  • @Skalozub 请将您的评论转换为答案,因为“Stack Overflow 一直明确鼓励用户回答他们自己的问题”(参见 Can I answer my own question?

标签: abap


【解决方案1】:

功能模块工作正常:由于你的程序没有任何参数,所以返回值集为空。

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多