如何读取自动创建的变体

How to read automatically-created variants

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

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

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.

但是 returns 对 & 变体没有任何影响。看起来 & 变体的值存储在与 FM RS_VARIANT_CONTENTS 使用的格式不同的格式中。

有什么方法可以为 & 变体值找到合适的 format/data 结构吗?

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

MANDT    RELID   REPORT     VARIANT         SRTF2
200      VB      ZBC_TEST   &0000000000425  0

因此,&0000000000425 变体存在于 VARI table 中。 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.

调频已经执行,无一例外sy-subrc=0,但是lt_valtabtable为空...

功能模块运行正常:由于您的程序没有任何参数,返回值集合为空。