は私がVARI-CLUSTDフィールドからバリアント値を読み取る必要があります。デコードする方法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プログラムを持っています。私はプログラムを定期的な仕事として予定しています。
MANDT RELID REPORT VARIANT SRTF2
200 VB ZBC_TEST &0000000000425 0
ので、& 0000000000425バリアントがVARIテーブルに存在する:私は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テーブルが空である...
私は、機能モジュールを使用して問題なくバリアントを読むことができますか?また、これらのバリアントはジョブスケジューラによって自動的に削除されることに注意してください。これはおそらく問題の一部です。 – vwegert
上記の私の質問のアップデートをご覧ください。 – Skalozub
私はその動作を再現することはできません。 ZBC_TESTにPARAMETERSまたはSELECT-OPTIONS ...が指定されていることを確認しますか? – vwegert