【发布时间】: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