2017-09-07 1 views
0

は私が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テーブルが空である...

+0

私は、機能モジュールを使用して問題なくバリアントを読むことができますか?また、これらのバリアントはジョブスケジューラによって自動的に削除されることに注意してください。これはおそらく問題の一部です。 – vwegert

+0

上記の私の質問のアップデートをご覧ください。 – Skalozub

+1

私はその動作を再現することはできません。 ZBC_TESTにPARAMETERSまたはSELECT-OPTIONS ...が指定されていることを確認しますか? – vwegert

答えて

1

機能モジュールが正しく動作している:あなたので、プログラムにパラメータがない場合、戻り値のセットは空です。あなたが正確に何をしようとしなかった -

関連する問題