如何解码VARI-CLUSTD数据

时间:2017-09-07 11:16:35

标签: sap abap

我需要从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表为空......

1 个答案:

答案 0 :(得分:1)

功能模块工作正常:由于您的程序没有任何参数,因此返回的值设置为空。