SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Accessing RFCs Dynamically

プロセス

SAP ACOを介した動的RFCアクセスは、ACOを使用するプログラムのクライアント側でABAPのコード開発によって完全に実行されます。

ファクトリメソッドを使用することから始めます。

CL_ACO_DESTINATION_MANAGER=>GET_DESTINATION  exporting    DESTINATION_NAME type RFCDEST  returning        value(DESTINATION) type ref to IF_ACO_DESTINATION.         

宛先の指定

メタデータを取得するために、システムへの宛先を指定する必要があります。後でリモート関数を呼び出すときに、関数と関連するディクショナリオブジェクトが同一である限り、同じ宛先または別の宛先を使用できます。

このメソッドは、宛先オブジェクト・インターフェースIF_ACO_DESTINATIONへの参照を返します。宛先オブジェクトから、メソッドGET_REPOSITORYを使用してリポジトリオブジェクトを取得します。

methods GET_REPOSITORY    returning      value(REPOSITORY) type ref to IF_ACO_REPOSITORY    raising      CX_ACO_EXCEPTION .      

リポジトリに返されるタイプインタフェースIF_ACO_REPOSITORYの参照により、機能オブジェクトを要求することができます。

methods GET_FUNCTION    importing      FUNCTION_NAME type RS38L_FNAM      CHECK_TIMESTAMP type ABAP_BOOL default ABAP_TRUE      BYPASSING_BUFFER type ABAP_BOOL optional      CLASSIC_EXCEPTIONS type ABAP_BOOL optional      ASYNCHRONOUS_TASK type ABAP_BOOL optional      RECEIVE_RESULT type ABAP_BOOL optional      KEEP_TASK type ABAP_BOOL optional    returning      value(FUNCTION) type ref to IF_ACO_FUNCTION    raising      CX_ACO_EXCEPTION .       

  • FUNCTION_NAMEで、リモート対応汎用モジュールの名称を指定する必要があります。

  • パラメータCHECK_TIMESTAMPを使用して、パフォーマンスを向上させることができます。通常、SAP ACOは、GET_FUNCTIONを呼び出すたびに、キャッシュされたリポジトリ情報のタイムスタンプをリモートリポジトリ情報と比較します。前回の呼び出し以降、リモート関数が非互換的に変更されていないことがわかっている場合は、パラメータをABAP_FALSEに設定することができます。

  • BYPASSING_BUFFERは、通常、ABAP_TRUEに設定しないでください。これはテスト目的でのみ使用され、パフォーマンスを大幅に低下させます。

  • CLASSIC_EXCEPTIONSを使用すると、受信する例外のタイプ(クラシック例外またはクラスベースの例外)を区別できます。(注:クラスベースの例外はすべてのリリースで使用できるわけではないため、一部のリリースではこのオプションが省略されています)。

  • パラメーターASYNCHRONOUS_TASKは、関数を同期的に呼び出すか非同期的に呼び出すかを指定するために使用されます。

  • 非同期の場合にのみ、パラメーターRECEIVE_RESULTを入力するのが理にかなっていますこのパラメータがABAP_TRUEに設定されている場合、結果を取得するために非同期タスクの終了時に呼び出されるクラスを指定するように後で要求されます。

  • さらに、パラメーターKEEP_TASKを設定して、同じコンテキストでさらに非同期呼び出しを呼び出した後もタスクを保持することができます。詳細については、非同期RFCのドキュメントをお読みください。

IF_ACO_FUNCTION

IF_ACO_FUNCTIONは、関数を実行し、パラメータ/例外のメタデータと値を設定および取得するための主要なエントリポイントです。

メソッドEXECUTEは、指定された宛先DESTINATIONでリモート関数を呼び出します。非同期の場合、TASKでタスク名を追加で指定する必要があります。

GET_FUNCTION中にRECEIVE_RESULTを指定した場合は、結果ハンドラークラスのクラスインスタンスを渡すことも要求されます。後で、別のセクションで、結果ハンドラークラスを構築する方法について説明します。

methods EXECUTE    importing      DESTINATION type ref to IF_ACO_DESTINATION optional      TASK type ACO_TASK_ID optional      RESULT_CLASS type ref to CL_ACO_RECEIVE_RESULT optional .         

メソッドRECEIVE_RESULTは、結果ハンドラークラスから呼び出す必要があります。結果ハンドラークラスを作成する方法については、別のセクションで後述します。

methods RECEIVE_RESULT .         

実行前または実行後に汎用モジュールのパラメータにアクセスするには、メソッドGET_PARAMETER_LISTから開始します。

methods GET_PARAMETER_LIST    importing      PARAMETER_CLASS type ACO_PARAM_TYPE optional    returning      value(PARAMETER_LIST) type ref to IF_ACO_PARAMETER_LIST .         

PARAMETER_CLASSとして、インポートの場合はI、エクスポートの場合はE、変更の場合はC、テーブルのパラメーターの場合はTを指定できます。

Method GET_EXCEPTION_LIST will return a list of possible exception names, if you specified CLASSIC_EXCEPTIONS during GET_FUNCTION.methods GET_EXCEPTION_LIST    exporting      EXCEPTION_LIST type POSSIBLE_EXCEPTIONS .         

メソッドGET_NAMEは、汎用モジュール名を返します。

methods GET_NAME    returning      value(FUNCTION_NAME) type RS38L_FNAM .         

GET_FUNCTION中にCLASSIC_EXCEPTIONSを指定しなかった場合、メソッドGET_EXCEPTIONは可能な例外名のリストを返します。

methods GET_EXCEPTION    returning      value(EXCEPTION) type ref to CX_STATIC_CHECK    raising      CX_ACO_INVALID_INPUT .         

GET_FUNCTION中にCLASSIC_EXCEPTIONSを指定した場合、メソッドGET_CLASSIC_EXCEPTIONは発生した例外を返します。

methods GET_CLASSIC_EXCEPTION    exporting      EXCEPTION type ABAP_EXCPNAME      MSGID type SYMSGID      MSGTY type SYMSGTY      MSGNO type SYMSGNO      MSGV1 type SYMSGV      MSGV2 type SYMSGV      MSGV3 type SYMSGV      MSGV4 type SYMSGV    raising      CX_ACO_INVALID_INPUT .         

複雑なデータ型を表す3つのインターフェイス

interface IF_ACO_PARAMETER_LISTinterface IF_ACO_STRUCTUREinterface IF_ACO_TABLE         

インターフェイスから継承IF_ACO_RECORD

IF_ACO_RECORD

IF_ACO_RECORD

インターフェイスIF_ACO_RECORDは、次のメソッドを提供します。

メソッドGET_VALUEは、指定されたコンポーネント名の値を返します。メソッドがパラメーターリストから呼び出される場合は、パラメーターの名前を指定します。メソッドが構造体に対して呼び出される場合は、フィールド名を指定する必要があります。テーブルの場合、パラメータ名は行を参照しているため、空にする必要があります。DATAで渡される変数は、パラメーター、フィールド、または行タイプに適合する必要があります。

methods GET_VALUE    importing      NAME type STRING optional    exporting      DATA type ANY    raising      CX_ACO_NAME_NOT_FOUND      CX_ACO_EXCEPTION .         

メソッドSET_VALUEは、GET_VALUEの反対です。コンテンツをそれぞれの変数に格納します。メソッドがパラメーターリストから呼び出される場合は、パラメーターの名前を指定します。メソッドが構造体に対して呼び出される場合は、フィールド名を指定する必要があります。テーブルの場合、パラメータ名は行を参照しているため、空にする必要があります。DATAで渡される変数は、パラメーター、フィールド、または行タイプに適合する必要があります。

methods SET_VALUE    importing      NAME type STRING optional      DATA type ANY    raising      CX_ACO_NAME_NOT_FOUND      CX_ACO_EXCEPTION .         

GET_VALUEとSET_VALUEは、構造化されたタイプではなく、単純なタイプに対してのみ機能します。複合型の場合、特別なメソッドが提供されます。

メソッドGET_TABLEは、イン​​ターフェースIF_ACO_TABLEへの参照を返します。パラメータNAMEには、パラメータまたはフィールド名を入力する必要があります。まれに、テーブルの線種が再びテーブルになる場合、GET_VALUEのようにNAMEも空になることがあります。

methods GET_TABLE    importing      NAME type STRING optional    returning      value(TABLE) type ref to IF_ACO_TABLE    raising      CX_ACO_NAME_NOT_FOUND      CX_ACO_EXCEPTION .         

メソッドGET_STRUCTUREは、イン​​ターフェースIF_ACO_STRUCTUREへの参照を返します。パラメータNAMEには、パラメータまたはフィールド名を入力する必要があります。メソッドがテーブルから呼び出される場合、GET_VALUEのようにNAMEも空になる可能性があります。

methods GET_STRUCTURE    importing      NAME type STRING optional    returning      value(STRUCTURE) type ref to IF_ACO_STRUCTURE    raising      CX_ACO_NAME_NOT_FOUND      CX_ACO_EXCEPTION .         

前述のGETメソッドとSETメソッドでは、タイプ定義またはメタデータを知っている必要があります。したがって、メソッドメソッドGET_META_DATAを使用することができます。他のメソッドと同様に、パラメータリストにアクセスするときはパラメータ名、構造体にアクセスするときはフィールド名、テーブルにアクセスするときは空の文字列を指定します。次の情報を受け取ります。

•TYPNAMEのデータディクショナリタイプ名

•ABAPTYPEの内部ABAPタイプ。

•IS_TABLE_OFがABAP_TRUEの場合、ABAPTYPEにはテーブルパラメータの行タイプが含まれます。

•LENGTHの文字、numc、またはパックタイプ(BCD)の場合の長さ。

•DECIMALSのパックタイプ(BCD)の10進文字の量

•DEFAULTはパラメータリストでのみ使用され、デフォルト値を指定します

•SHORTTEXTでは、パラメータまたはフィールド名の短いテキストが提供されます

•OPTIONALはパラメータリストでのみ使用され、パラメータがオプションかどうかを指定します

methods GET_META_DATA    importing      NAME type STRING    exporting      TYPNAME type TABNAME      ABAPTYPE type ABAPTYPE      IS_TABLE_OF type ABAP_BOOL      LENGTH type ILEN      DECIMALS type IDEC      DEFAULT type RS38L_DEFO      SHORTTEXT type PARAMTEXT      OPTIONAL type RS38L_OPTI    raising      CX_ACO_NAME_NOT_FOUND      CX_ACO_EXCEPTION .         

メソッドGET_META_DATAには、入力としてパラメーター名またはフィールド名が必要です。しかし、タイプについて何も知らない場合、あなたはどうしますか?この場合、メソッドGET_COMPONENTSを使用できます。このメソッドは、パラメータリストのすべてのパラメータまたはCOMPONENTSの構造体のすべてのフィールドを返します。

methods GET_COMPONENTS    returning      value(COMPONENTS) type ACO_LIST_COMPONENTS_MD    exceptions      CL_ACO_EXCEPTION .         

インターフェイスIF_ACO_TABLEは、IF_ACO_RECORDをインターフェイスするための追加のメソッドを提供します。メソッドAPPEND_ROWを使用して、最後に空の行を追加します。

methods APPEND_ROW    raising      CX_ACO_EXCEPTION .         

メソッドINSERT_ROWを使用して、指定された位置に追加の空の行を挿入します。

methods INSERT_ROW    importing      POS type I optional    raising      CX_ACO_EXCEPTION .         

メソッドDELETE_ROWを使用して、指定された位置の行を削除します。

methods DELETE_ROW    importing      POS type I optional    raising      CX_ACO_EXCEPTION .         

メソッドGET_ROW_COUNTは、テーブルの行数を提供します。

methods GET_ROW_COUNT    returning      value(ROW_COUNT) type I    raising      CX_ACO_EXCEPTION .         

メソッドSET_ROW_POSITIONは、現在の行を指定された位置に設定します。

methods SET_ROW_POSITION    importing      POS type I    raising      CX_ACO_EXCEPTION .         

メソッドGET_ROW_POSITIONは、現在の行の位置を読み取ります。

methods GET_ROW_POSITION    returning      value(POS) type I    raising      CX_ACO_EXCEPTION .         

メソッドNEXT_ROW、PREVIOUS_ROW、FIRST_ROW、およびLAST_ROWを使用して、テーブル内で行カーソルを移動できます。

methods NEXT_ROW.methods PREVIOUS_ROW.methods FIRST_ROW.methods LAST_ROW.         

メソッドCLEARは、テーブル全体を削除します。

methods CLEAR .         

タイトルとURLをコピーしました