[シリーズ] ABAPのSAPのABAPの交換およびキャリブレーション

いいえ公共ん: SAP技術
著者: Matinal
オリジナルソース: http://www.cnblogs.com/SAPmatinal/
 

 

序文

私たちは、私の公共の数に焦点を当てることができ、より良いレイアウトの数の国民は、より快適に読みます。

ボディパーツ

翻訳するのが面倒、以下を参照してください。

I.は、作成活性化および検証及び置換輸送


取引がチェックまたは代入機能を使用する必要があります。1.?
GGB0検証メンテナンス
GGB1代入メンテナンス
GCVZルールメンテナンス
検証/置換のGGB4アクションの選択は、例えば、アプリケーション分野、すべてのメッセージの使用または置換フィールドの活性化の
利用者のための付属のGCX2の定義は終了し


FI検証のOB28アクティベー
FI置換のOBBHアクティベーションを
売上会計置換のコストのOBBZアクティベーション(FIエリア内)
OKC7の活性化COの検証
COのOKC9活性化は置換


検証:GCT9交通
GCT0交通:置換を
 
式エディタを使用する場合2.私のアカウントに何をしなければなりませんか?
a)の検証GGB0
あなたが例えば呼出ポイントの最初の検証、作成した場合の財務会計-ドキュメントヘッダ」を、あなたはメッセージクラスを定義する必要があります。これは、この呼出ポイントのためのすべての検証のために有効です。


いないすべてのフィールドは、「FIでの完全なドキュメント」は、例えば、特定の呼出ポイントの検証のために使用することができます。そこにいくつかの行があると、チェックが行われるべき行には明確ではないためです。あなたはここでしか数値フィールドを使用することができます。(413956注)
この呼出ポイントの詳細検査を必要とする場合は、ユーザExitを使用する必要があります。
b)の置換GGB1
あなたが置換、例えば「財務会計文書ラインアイテム」を作成した場合、唯一の特定のフィールドを置換することを認可されています。異なるアプリケーション間で発生する問題は、文書や矛盾に発生する可能性があるためです。
あなたは、置換のための複数のフィールドを解放することができますが、深刻な問題が結果として発生する可能性がありますので、これは重要になる場合があります。
あなたが変形例として、以下の変更を考える必要がある理由は、(170183注)である:
GB01テーブルは、テーブルのフィールドがまたはその呼出点に置き換えることができない可能かについての情報が含まれています。
あなたは「」にBEXCLUDEフィールドを変更して、フィールドを置換することができます。


例:FIの「完全なドキュメントの呼出ポイント
デフォルトに従い、いかなるフィールドは、この呼出ポイント上での置換のために解放されません。あなたは、次のエントリでこれを見ることができます:


BOOLCLASSするClassType BCLTAB BCLFIELD BEXCLUDEは
015 S BKPF * X
015 S BSEG * X




BOOLCLASS -ブールクラスを指定します。これは、例えば、それぞれの場合において、アプリケーションエリアと呼出点で決定される:
008 -ドキュメントヘッダ(FI)
009 -ラインアイテム(FI)
015 -完全な文書(FI)
016 -会計売上原価
100 -ドキュメントヘッダ(CO )
フィールドが検証した場合(B)で使用することができればするClassType指定し、置換(S)または両方
BCLTAB -使用されるテーブル
BLCFIELDを-この表のフィールド
BEXCLUDE - 「使用可能」または使用することができない「X」を。


前述したように、あなたが変更してこの変更を同一視すべきです。この変更の結果として発生する問題は、「標準」のサポートで取り扱うことができません。
 
検証または置換を活性化するとき3.私のアカウントに何をしなければなりませんか?
次の2つの方法で検証し、置換を有効にすることができます。
活性化レベル:1 -アクティブ
2 -アクティブ、「バッチ入力」処理時以外


財務会計(FI)で活性化は、会社コード固有であるため、検証または置換は、クロスの場合には、両方の会社コードで活性化されなければなりません-companyコード取引。
 
検証または置換を輸送する場合4.私のアカウントに何をしなければなりませんか?
検証または置換が輸送される際に通常、唯一のテーブルエントリが輸送されます。これが問題を引き起こす可能性がありますので、生成されたソースコードは、輸送すべきではありません。RGUGBR00レポートが開始されたときに、ターゲットシステムへのインポート後、ソースコードが自動的に生成されます。


あなたが検証/置換を削除したい、と個別にそれぞれのシステムでこれを行うにはしたくない場合は注意840981.で説明したように、進ん
 
 
II。検証または置換でユーザー出口を使用して


、私は検証および置換のためのユーザー出口を維持することができます。1.?
検証および置換のための出口は、お好みのインクルードに格納されています。
以下は、デフォルトでは例として提供されています
RGGBR000ヴァル/サブ:出口のルールについて
RGGBS000ヴァル/サブ:置換のために終了しますが、
あなたは一例ZGGBR000のために、顧客の名前空間にこれらをコピーしてください。
選択した名前の長さが8つの文字を超えてはなりません。名前は、ソースコードで生成され、そのため特定の行の長さが結果として超過することができるからです。
また、これはパフォーマンスを向上させることができ、クライアントごとに別々のインクルードを作成することができます。


あなたのインクルードが使用されるトランザクションGCX2では、あなたがして定義する必要があります。これを行うには、お使いの関連するアプリケーション領域にフォームプールとして含めるの名前を入力します。
 
2.どのように私は、ユーザー出口を作成する必要がありますか?
正しい終了カテゴリ(EXITS-PARAM)とのFORMルーチンGET_EXIT_TITLESでユーザー出口を定義します。あなたはこのモデルとして既存のサンプルエントリを使用することができます。


次のようにFORMルーチンGET_EXIT_TITLESに必要なの出口タイプが編成されています
。・C_EXIT_PARAM_NONEないパラメータ
以外の戻り値(B_TRUEまたはB_FALSE)から、検証のための任意のパラメータを必要としません。あなたがフィールドを代用したくない場合は、代わりにこのパラメータを使用します(「唯一の出口」を選択します)。


しかし、あなたがして心配した構造を識別するために(ない実際の形で)formpoolでTABLE文を使用する必要があります。
・C_EXIT_PARAM_FIELD Aフィールドをパラメータとして転送され
ますが、唯一の代わりにこのタイプを使用します。正確に一つのフィールドが代入されます。代わりに、一定の値を割り当てるの置換維持に、このタイプのユーザー出口を入力します。
・C_EXIT_PARAM_CLASS A完全な型をパラメータとして転送されます
マトリックスの検証/置換(「唯一の出口」)。この出口タイプのみFI及びLCで、例えば、完全な文書と呼出点の場合に使用することができます。あなたは、他の呼出ポイントにこの出口のカテゴリを使用することはできません。転送タイプは、クラスのすべての情報が含まれています。例えば、文書のヘッダとFIエリア内のすべての対応するラインアイテムを使用することです。


FORMルーチンGET_EXIT_TITLESでは、内部テーブル必要な値に出口のNAMEおよびTEXTフィールドを変更します。


モデルとしてのサンプルのルーチンのいずれかを使用して、選択した名前にこれらをコピーします。あなたは今、あなたは、このフォームルーチンに必要な機能を実装することができます。
あなたはユーザー出口の作成が完了したら、あなたの検証または置換でそれを使用することができます。


ユーザー出口を実装する場合3.私のアカウントに何をしなければなりませんか?
いいえダイアログボックスは、警告メッセージ、情報メッセージとエラーメッセージが出るに発行されないことができず、「COMMIT WORKを」することができます拒否されること。これは、例えば、バッチ処理を中断したり、文書に問題が掲載される原因になります。あなたは、出口でのフィールドの内容に重大な誤りを見つけた場合は、トランザクションが終了していることを確認します終了メッセージ(AまたはX)を、送信してください。


「CALL TRANSACTIONのを...」「... LEAVE(TO)SCREEN」は、例えば、出口は直接残ることになり任意のABAPコマンドを使用するか、「SUBMIT ...」またはしないでください


終了では、呼び出し置換、検証やルールのブールクラスに属する唯一の構造体のフィールドを使用します。他の構造体のフィールドが満たされていないまたは置換、検証やルールの通話の呼出ポイントに適切に充填されていません。


このフィールドは、ブールクラスに置換することができる場合は、フィールドの内容への変更は、代替出口で行うことができます。あなたは、代替メンテナンス中「のエントリを追加」機能を選択することにより、このようなフィールドを表示することができます。


で置換出口の含まれ、あなたは、MODIFYコマンドを使用するINSERTや、BSEGまたはBKPFとして内部的に使用される構造で削除してはいけません。それらはTABLES文で定義されているので、これらの構造は、データベース・テーブルとして内部的に解釈されます。あなたは上記のコマンドを使用する場合、結果として、データベースレコードは、書かれて削除または変更されています。これは、文書処理に深刻な矛盾と問題を引き起こす可能性があります。


あなたは出口の種類C_EXIT_PARAM_CLASSにフィールドの内容を変更したい場合は、(例えば、BOLL_DATA-BSEGのための)内部テーブルBOOL_DATAの変更を行う必要があります。
 
 
III。問題の分析


、私は問題を分析する前に1.私のアカウントに何をしなければなりませんか?
あなたが検証/置換を有する問題を分析する前に、生成されたソースコードが最新であることを確認してください。これを行うには、報告書「RGUGBR00」を使用することができます。
トランザクションSE38でこのレポートを呼び出します。あなたは、次の選択画面を受け取る:


アプリケーションエリア「」
アプリケーション呼出ポイント「」


「」メインプログラムを再生成します
「」テーブルファイルを生成
「を生成規則」
「」を生成検証
「」を生成置換
「」を生成セット
「」の生成規則を使用する
「」の生成します検証の使用
「」置換使用率を生成する
「」置換輸出ルーチンを生成します
「」



今すぐチェックまたは代入が作成されたアプリケーション領域とアプリケーション呼出ポイントのソースコードを更新。
これを行うには、たとえば、FIのためのアプリケーション領域、およびアプリケーションの呼出ポイント(0003 /完全な文書)を入力し、「すべてのクライアントに置換ルーチンを生成」と「トレースプログラムは呼び出しを生成]を除くすべての指標を設定します。その後、レポートを実行します。


ソースコードは、現在のステータスになりました。
 
2.検証と置換トレースは、どのように使用することができますか?
a)の検証トレース
あなたが検証を作成し、活性化しました。
あなたは今、トランザクションGGBOで、たとえば、トレースをアクティブにすることができます。「 - >トレースを有効にエクストラ」はこれを行うには、検証の上にカーソルを置いて選択します。
例:
あなたは「行の項目」呼出ポイントにFIの検証を作成しました。検証をテストするには、例えば、トランザクションFB01を実行します。トレースは、すぐに検証が実行されるように表示されます。あなたは今、たとえば、トレースに様々な構造の分野に含まれる値を異なるものを見ることができます。このことから、あなたは追加のチェックが必要かどうかを推測する、または問題の原因が何であるかを伝えることができます。
b)の置換トレースは
、あなたが検証を活性化させるのと同じ方法でトレースをアクティブにします。
例:
あなたが検証した場合にトレースをアクティブにとあなたは同じように置換を作成しました。置換のためのトレースを使用すると、置換前と同様に置換した後、フィールドの内容を表示できるように、追加の機能を有しています。そこでは、問題は、同じ方法で再現することができます。
 
3.どうやって問題を分析するためにデバッガを使用することができますか?
a)基本情報
GBTmmaa0:検証および置換が、この形式で作成されているためにすべてが含まれています。
MMは2桁のクライアントキーの略です。
次の例のように、2桁のクライアントに(> 099)3桁のクライアントを変換するG_CLIENT_ENCODE機能モジュールを使用することができます。クライアント100 - > AA
クライアント800 - > TQの
AAは、例えば、FIのために、アプリケーション領域の略- >財務会計
CO - >会計コスト
あなたは更新トランザクションでこの略語を見つけます。
したがって、GBTAAFI0は、FIの検証および置換のために、クライアント100に含めています。
B)を含み、検証及び置換、どのように「デバッグ」に関するヒントについては、フォームルーチンの構造


上記に含まれるものは、(サンプルはFI、クライアント800に含める)次のように構成されています


GBTTQFIAをINCLUDEに。「ルールは
GBTTQFIBがあります。」置換は
GBTTQFICが含まれています。「置換条件は
GBTTQFIDがあります。」検証は
GBTTQFIEが含まれています。「検証条件は
GBTTQFIFがあります。」検証チェックが
GBTTQFIIが含まれています。「アプリケーションルールは
GBTTQFIJが含まれています。」
GBTTQFIMが含まれています。「トレース/シミュレーションは
GBTTQFISが含まれています。」置換輸入ルーチン
C)検証のためのフォームルーチン名VAL01)で、次のサンプル構造(サンプル検証持つ:


FORM VAL_VAL01を。
G_BFOUND = B_TRUE。
DATA:D_BOOL LIKE COND、
LIKE D_BOOL、CHECK
NVALSEVEREST LIKE SY-SUBRCの値を-1。


G_STEP = '001'。
VALCOND_1VAL01 ## 001 PERFORM
CHANGINGの
CONDを。


COND = B_TRUE IF。
VALCHCK_2VAL01 ## 001 PERFORM
CHANGINGの
CHECKを。


CHECK = B_FALSE IF。
MESSAGE_OUTPUTを実行
使用した
... Nachrichtenparameterは「
CHANGING
NVALSEVERESTを。
ENDIF。
ENDIF。
ENDFORM。「VAL_VAL01の


ステートメントG_STEP = 『001』を実行するステップを示している。
ステップの前提条件は、フォームルーチンVALCOND _...、検証ステップをチェックし_...フォームルーチンVALCHCKに定義されている。


このステップを分析するには、作成する必要があります「CHECK = falseの場合は」これら二つのブレークポイントがそうすることで、あなたの前提条件やチェックはあなたが持っている問題を引き起こしているが、例えばチェックされるフィールドがないかどうかを判断することができます。コードの行にも文とを実行します。あなたが期待する価値含ま
D)の置換用フォームルーチンを次のサンプル構造(名前SUB01のサンプル置換)があります


。FORM SUB_SUB01を
。G_BFOUND = B_TRUE
DATA:。D_BOOL LIKE COND
G_CLASSID = '009'。
G_SUBST_PERFORMED = B_FALSE。


G_TAB_FLAG-BSEG <> B_TRUE IF。
READ_MASTER_DATAを実行
使用した
'BSEG'
G_BFOUNDを。
G_BFOUND = B_FALSE IF。
'BSEG' WITH MESSAGE E083。
ENDIF。
ENDIF。


G_STEP = '001'。
SUBCON_3SUB01 ## 001 PERFORM
CHANGINGの
CONDを。


COND = B_TRUE IF。
BSEG-SGTXTは= 'これはテストです'。"テキスト
G_SUBST_PERFORMED = B_TRUE。
ENDIF。
ENDFORM。" SUB_SUB01


検証のために上述したように、「G_STEP = 『001 IF COND = B_TRUE』ステップを示しており、置換の前提条件は、フォームルーチンSUBCONで定義され_....実際の置換は、内のステートメントによって行われます」 - > ENDIF」構造。これらのステートメントは、置換作成(フィールド割り当て、一定値、ユーザExit)の「タイプ」に応じて変化します。


置換では、あなたはまた、前提条件と「COND = B_TRUE IF」ステートメントで実行にブレークポイントを設定する必要があります。
 
検証および置換呼び出す4.汎用モジュール
検証を-機能モジュールG_VSR_VALIDATION_CALL
異なる構造/テーブルは、バリデーション、呼出点とアプリケーション領域の名前は、この機能モジュールに割り当てられています。
置換- G_VSR_SUBSTITUTION_CALL機能モジュール
の検証に転送パラメータもこの汎用モジュールに転送されます。しかし、構造/変更された値を含む表も返されます。


あなたは、両方の機能モジュールを分析するためにブレークポイントを設定することができます。そうすることで、あなたは、検証や置換が達成されたデータ、転送された、との値が返されるどのデータ見ることができました。
 
5.私はセットの使用時に考慮に入れる必要がありますか?
セットが検証または置換に使用される場合、ソースコードは、セットの値から生成されます。
生成されたソースコードが長いランタイムを招くためのセットは、特定のサイズである場合、パフォーマンスの問題が発生する可能性があります。
ランタイムエラーが発生することもあります。


次のように使用するセットのソースコードのサイズを小さくするには、先に進むことができます:


検証、置換またはルールに小さなセットを使用してください。そのためには、間隔にセット内のグループの単一の値(例えば、代わりに単一の値0001、0002および0003の、インターバル0001を使用- 0003)の


代わりに「SET IN」のは、(SET1 INまたはIN」ルールを使用しますSET2)」は、SET1とSET2は(SETからの値を含む、例えば、最上位階層レベルでsubhierarchies)。


セット階層内の単一の値または間隔の数を決定するための最も簡単な方法は、プログラムRGSEX000を実行することです。
セットの名前を入力し、プログラムを実行します。全て含まセット及び値/間隔が記載されていると、エントリのシーケンス番号は最初の列に含まれています。
 
6.なぜ開発システムでチェックまたは代入の作業を行いますが、輸送した後、別のシステムで動作しませんか?
あなたは、検証および置換がターゲット・システムで有効化されていることを確認してください。また、再度、ソースコードの再生を実行するために、レポートRGUGBR00を使用することができます。


置換の場合、別の原因があるかもしれません:
あなたは、SAPによってデフォルトとしてリリースされていないフィールドを代用してみてください。フィールドを代用するには、開発システムで表GB01を調整しています。しかし、これは、ターゲット・システムでは発生しませんでした。生成されたソースコードは正しく、値が代入で変更されましたが、変更は、エクスポートルーチンを経由して呼び出し元のアプリケーションに返されませんでした。
 
相关注:
42615注意- FIで置換を

おすすめ

転載: www.cnblogs.com/SAPmatinal/p/11183214.html