[SAP Abap] X-DOC: SE18/19 - SAP 第 4 世代の概念理解の強化

1、Tコード

SE18: ビジネス アドイン: 定義 (拡張ポイント定義/ビュー)。拡張オプションの表示と保守に使用されます。
ここに画像の説明を挿入します
SE19: ビジネス アドイン: 実装 (拡張実装)、拡張ポイントに基づいて拡張実装を作成および維持します。
ここに画像の説明を挿入します

2. コンセプト

(1) Enhancement Spot (拡張コンテナ) は、拡張オプションを整理するために使用されます。Spot には複数の拡張オプションを含めることができます。通常、1 つのプログラムには 1 つの Spot を構築できます。
(2) 拡張オプション(点と断面の 2 種類の拡張オプションを含む) 1 つのプログラムで複数のオプションを作成できます。
(3) 拡張実装ポイント。拡張実装コードを挿入するために ABAP プログラムで定義された場所。
(4) 拡張実装セクション。ABAP プログラム内で定義され、コードが拡張実装によって置き換えられる領域。
ここに画像の説明を挿入します

3. 充実したオプションタイプ

(1) 明示的な拡張オプション:
ENHANCEMENT-POINT/SECTION zen_name SPOTS zspots_name STATIC.
明示的な拡張オプションは拡張ポイントによって管理され、事前にソース コードに挿入し、拡張実装を通じて拡張する必要があります。
(2) 暗黙的な拡張オプション
暗黙的な拡張オプションは、拡張フレームワークによって提供され、開発者が特別な準備をする必要がなく、コンテナ (拡張ポイント) に属する必要もありません。
これらは、拡張実装によっても強化されます。

4.実装タイプの強化

(1) 静的形式 (宣言) : 暗黙的な拡張を実装する際の宣言タイプに相当する拡張オプションに STATIC を追加し、一般的にデータ宣言の拡張に使用されます。拡張実装が配置されているパッケージのスイッチ状態がオンおよびスタンバイの場合、コードが実行され、ENHANCEMENT-SECTION 内のデータ宣言を再定義できます。
(2) 動的形式 (コード) : 拡張オプションは STATIC を追加せず、暗黙的な拡張を実装する際のコード タイプに対応し、一般に実行可能コードの拡張に使用されます。コードは、拡張実装が配置されているパッケージのスイッチ状態がオンの場合にのみ実行されます。ENHANCEMENT-SECTION のデータ宣言は静的グローバル変数であるため、置き換えることはできません。
2 つの違い:
拡張実装でスイッチが設定されていない場合、コードは実行されますが、静的形式の方が効率的です。
静的 SECTION を使用するとデータ宣言が変更され、予期しない問題が発生する可能性があるため、使用はお勧めしません。
ここに画像の説明を挿入します

5. 運用方法の充実

参考: [SAP Abap] SAP 第 4 世代の拡張開発 DEMO
拡張デモ:

REPORT yz_demo_enhancement_4g.

WRITE: / 'BEGIN,来自主程序'.
SKIP.

" 静态增强点
ENHANCEMENT-POINT YPOINT1 SPOTS YSPOTS1 STATIC .
*$*$-Start: YPOINT1-----------------------------------------------------------------------------$*$*
ENHANCEMENT 1  YEH001.    "active version
  data: gv_po1(10) VALUE 'Test1'.
  write: / '增强点1-静态YPOINT1实施:' && gv_po1.
ENDENHANCEMENT.
ENHANCEMENT 2  YEH002.    "active version
*
  write: / '增强点1-静态YPOINT1实施2:' && gv_po1.
ENDENHANCEMENT.
*$*$-End:   YPOINT1-----------------------------------------------------------------------------$*$*

SKIP.
" 动态增强点
ENHANCEMENT-POINT YPOINT2 SPOTS YSPOTS1 .
*$*$-Start: YPOINT2-----------------------------------------------------------------------------$*$*
ENHANCEMENT 2  YEH001.    "active version
  write: / '增强点2-YPOINT2实施,获取YPOINT1中的变量:' && gv_po1.
  data: gv_po2(10) VALUE 'Test2'.
  write: / '增强点2-YPOINT2实施:' && gv_po2.
ENDENHANCEMENT.
*$*$-End:   YPOINT2-----------------------------------------------------------------------------$*$*

SKIP.
" 静态增强段(数据能重定义)
ENHANCEMENT-SECTION YSECTION1 SPOTS YSPOTS1 STATIC .
  DATA: gv_sec1(10) VALUE 'SEC1'.
  WRITE: / 'YSECTION1预留代码:' && gv_sec1. " 实施后代码被替代
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION1---------------------------------------------------------------------------$*$*
ENHANCEMENT 3  YEH001.    "active version
  DATA: gv_sec1 type d VALUE '20230517'.  " 变更数据定义
  WRITE: / '增强段1-静态YSECTION1实施:' && gv_sec1.
  write: / '增强段1-静态YSECTION1实施,获取YPOINT1中的变量:' && gv_po1.
ENDENHANCEMENT.
*$*$-End:   YSECTION1---------------------------------------------------------------------------$*$*

SKIP.
WRITE: / '主程序-获取YSECTION1中的变量:' && gv_sec1.
SKIP.

" 静态增强段(数据不能重定义)
ENHANCEMENT-SECTION YSECTION2 SPOTS YSPOTS1 .
  DATA: gv_sec2(10) VALUE 'SEC2'.               "此处变量在其定义后全局可用
  WRITE: / 'YSECTION2预留代码:' && gv_sec2.     " 实施后代码被替代,不再执行
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION2---------------------------------------------------------------------------$*$*
ENHANCEMENT 4  YEH001.    "active version
  "DATA: gv_sec2(10) VALUE 'SEC2'.              "不能重定义
  "WRITE: / 'YSECTION2预留代码:' && gv_sec2.  "不能获取被替换代码中的变量
  write: / '增强段2-YSECTION2实施:不能重定义变量'.
  write: / '增强段2-YSECTION2实施,获取YPOINT2中的变量:' && gv_po2.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Enhancement Exit YSECTION2, Enhancement YEH001, End                                                                                               A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  YEH003S.    "active version
*
  write: / '增强段2-YSECTION2实施,来自静态隐式增强'.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDENHANCEMENT.
ENHANCEMENT 1  YEH002.    "active version
  WRITE: / '增强实施2 YEH002:不能获取被替代代码中的变量'. " 仅此第一个实施生效
ENDENHANCEMENT.
*$*$-End:   YSECTION2---------------------------------------------------------------------------$*$*

SKIP.
WRITE: / '主程序-获取YSECTION2中的变量:' && gv_sec2.     "可以获取

SKIP.
WRITE: / 'END,来自主程序'.

6. 強化オプションと強化実装関係

拡張ポイントには、作成順に上から下にソートされた複数の拡張実装コードを含めることができ、実行順序にも同じことが当てはまります。拡張セグメントには、作成順に上から下にソートされた複数の拡張実装を含めることができます
。 , ただし、最初の 1 つだけです実装が有効になります。
拡張実装は複数の拡張ポイント/セクションにまたがることができます。コード ブロックは実装の順序で表示されます: ENHANCEMENT 1、2、3、...、それらはすべて同じに属します実装と同時に有効になり、それらのコードには特定のロジックを含めることができます。

7. 実装に関する提案を強化する

関連する機能は 1 つの実装で実装できますが、無関係な機能は個別に実装することをお勧めします。

オリジナル記事、転載の際は出典を明記してください - X-Files

Supongo que te gusta

Origin blog.csdn.net/XLevon/article/details/130743020
Recomendado
Clasificación