• DESCRIBEFIELD


    実行時データ型識別、略語は RTTI です。プログラム実行時にデータ型を識別して処理を行う仕組みです。。

    DESCRIBE FIELD命令を使用

    DESCRIBE FIELD命令を使用して、変数のデータタイプを取得することができます。

    構文

    DESCRIBE FIELD obj TYPE typ.

    • obj 
      データ型を取得したいデータオブジェクト。通常の変数やフィールドシンポルなどを使用することができます。
    • typ 
      取得したデータ型が格納されるデータオブジェクト。

    データ型

    データ型は1 桁のIDで識別され、IDでは大文字と小文字が区別されます。

    IDデータ型
    b 基本タイプB:1バイト整数(内部用)
    C 基本タイプC:固定長テキスト項目
    D 基本タイプD:日付項目
    F 基本タイプF:浮動小数点数
    g 基本タイプSTRING:可変長文字順序
    h 内部テーブル
    i 基本タイプI:整数
    l データ参照
    N 基本タイプN:数値テキスト項目
    P 基本タイプP:パック数値
    r オブジェクト参照
    s 基本タイプS:2バイト整数(内部用)
    T 基本タイプT:時刻項目
    u フラット構造
    v ディープ構造
    X 基本タイプX:16進数
    y 基本タイプXSTRING:可変長バイト順序

    サンプルソース

    
    
    FORM PARSE_STRING_TO_STRUC USING U_STR TYPE STRING
    CHANGING C_STRUC. 
    CONSTANTS: 
    CONST_DT_DATE TYPE C VALUE 'D', 
    CONST_TAB TYPE STRING VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB. 
    
    DATA: 
    VL_STRINGS TYPE STRING_TABLE, 
    VL_STR TYPE STRING, 
    VL_DATE TYPE D, 
    VL_TYPE TYPE C. 
    FIELD-SYMBOLS: 
    TYPE ANY, 
    TYPE ANY. 
    
    
    SPLIT U_STR AT CONST_TAB INTO TABLE VL_STRINGS. 
    
    ASSIGN C_STRUC TO . 
    
    TRY.
    
    LOOP AT TG_STRING INTO VG_STRING. 
    ASSIGN COMPONENT SY-TABIX OF STRUCTURE TO . 
    
    DESCRIBE FIELD TYPE vl_type. 
    
    IF vl_type = CONST_DT_DATE. "日付型 
    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
    EXPORTING 
    date_external = VL_STR
    accept_initial_date = 'X' 
    IMPORTING 
    date_internal = vl_date 
    EXCEPTIONS 
    date_external_is_invalid = 1 
    OTHERS = 2. 
    
    IF sy-subrc = 0. 
    VL_STR = vl_date. 
    ENDIF. 
    ENDIF. 
    ENDIF. 
    MOVE VL_STR TO . 
    
    ENDLOOP. 
    
    CATCH CX_SY_CONVERSION_ERROR. 
    CLEAR: EX_AFDATA. 
    ENDTRY. 
    ENDFORM.
    

      

    RTTS関連クラスを使用

    CL_ABAP_TYPEDESCR

    
    
    | |--CL_ABAP_DATADESCR 
    | | 
    | |--CL_ABAP_ELEMDESCR 
    | |--CL_ABAP_REFDESCR 
    | |--CL_ABAP_COMPLEXDESCR
    | | 
    | |--CL_ABAP_STRUCTDESCR 
    | |--CL_ABAP_TABLEDESCR 

    |--CL_ABAP_OBJECTDESCR 
    | | 
    | |--CL_ABAP_CLASSDESCR 
    | |--CL_ABAP_INTFDESCR 

    データ型を判定

    型毎のメタ情報

    属性名意味基本型参照型構造型テーブル型クラス型インタフェース型
    absolute_name 型名称            
    type_kind 内部ABAPデータ型            
    length 内部長            
    decimals 小数桁数 P × × × × ×
    OUTPUT_LENGTH 出力長   × × × × ×
    STRUCT_KIND 構造タイプ × ×   × × ×
    COMPONENTS コンポーネント(name/type_kind/length/decimals)テーブル × ×   × × ×
    KEY テーブルキー × × ×   × ×
    INITIAL_SIZE テーブルの初期サイズ × × ×   × ×
    KEY_DEFKIND テーブルデータ型定義 × × ×   × ×
    HAS_UNIQUE_KEY 一意キー定義 × × ×   × ×
    TABLE_KIND テーブルカテゴリ × × ×   × ×
    CLASS_KIND クラスタイプ × × × ×   ×
    CREATE_VISIBILITY 可視性登録 × × × ×   ×
    INTF_KIND インタフェースタイプ × × × × ×  
  • 相关阅读:
    基于决策树和智能搜索系统
    基于神经网络的人工智能系统
    身边的人工智能&人工智能发展史
    Linux简介和环境的搭建
    回来啦
    顺序表
    方格计数
    2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?
    十三、排序算法
    十二、预处理
  • 原文地址:https://www.cnblogs.com/yjyongil/p/10558591.html
Copyright © 2020-2023  润新知