我需要读取自动创建的变体,以获取选择屏幕参数和其他选择标准。此类变体的名称以符号&
开头(例如,&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
表是空的...
函数模块正常工作:由于您的程序没有任何参数,因此返回的值集为空。