我需要从VARI-CLUSTD字段中读取变量值。
VARI是一个集群表。数据可以通过FM RS_VARIANT_CONTENTS进行解码,但我需要读取自动创建的变量的数据。变体的名称以符号'&'开头(例如,& 0000000000425)。一旦您安排se80 / se38中的任何后台作业或任何交易而不选择任何现有变体,就会创建变体。
RS_VARIANT_CONTENTS适用于正常变体(可通过SE38 / SE80查看),但不适用于自动创建(以'&'开头)。我查看了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使用的格式不同。有没有办法为&找到合适的格式/数据结构?变种值?
UPD:我有ZBC_TEST计划。我已将该计划作为期刊工作安排。我在VARI表中看到了一条记录:
MANDT RELID REPORT VARIANT SRTF2
200 VB ZBC_TEST &0000000000425 0
因此,& 0000000000425变体存在于VARI表中。 VARI-CLSUTD字段对于记录不为空。我打电话给FM:
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表为空......
答案 0 :(得分:1)
功能模块工作正常:由于您的程序没有任何参数,因此返回的值设置为空。