このトピックは土地に関する用語をサマリーしました。(編集中)
土地の用途
用語 | 説明 |
---|---|
地目(ちもく) | 土地の種類(用途)を表す分類であり、不動産登記法により登記所(法務局)が、土地の現況及び利用目的で判断し登記されます。 現在は全部で23区分あり、主なのは宅地、田、畑、山林、雑種地の5区分があり、そのほかには牧場、原野、塩田、鉱泉地、池沼、墓地、境内地、運河用地、水道用地、用悪水路、ため池、堤、井溝、保安林、公衆用道路、公園、鉄道用地、学校用地があります。 |
宅地(たくち) | 建物の敷地及びその維持若しくは効用を果たすために必要な土地。 |
田(た) | 農耕地で用水を利用して耕作する土地。 |
畑(はたけ) | 農耕地で用水を利用しないで耕作する土地 |
山林(さんりん) | 耕作の方法によらないで竹木の生育する土地 |
雑種地(ざっしゅち) | どの地目にもあてはまらない土地。 |
農地(のうち) | 耕作の目的に供される土地。 地目の田と畑が纏めて農地と呼ばれます。農地では、基本的に農地法が適用されることになります。 |
土地の地域地区
用語 | 説明 |
---|---|
都市計画区域 | 市計画法という法律によって、都道府県知事や国土交通大臣が指定するエリア。 都市計画法(法第7条)により、都市計画区域は市街化区域と市街化調整区域に区域区分されています。 都市計画区域の他には、「都市計画区域外」と「準都市計画区域」があります。 |
市街化区域 | 既に市街地を形成している区域と概ね10年以内に優先的かつ計画的に市街化を図る区域であり、都市の発展動向等を勘案して市街地として積極的に整備する区域。 |
市街化調整区域 | 市街化を抑制すべき区域。 原則として用途地域を定めず、農林漁業用の建築物等や一定の要件等を備えた開発行為以外は許可されません。 |
土地の形状
用語 | 説明 |
---|---|
地形(じがた) | 土地の形や傾斜などの状態のこと。 |
整形地(せいけいち) | 長方形や正方形などのように、ある程度形が整っている土地。 |
不整形地(ふせいけいち) | きれいな正方形や長方形の形状をした土地(「整形地」)以外の土地。 |
土地の価格
用語 | 説明。 |
---|---|
基準地価(きじゅんちか) | 各都道府県内から選んだ全国2万ヶ所以上の基準地の標準価格。 土利用計画法(1974年制定)に基づき、1m2(林地は10アール)あたりの評価額を1ヶ所につき1人以上の不動産鑑定士が鑑定評価し、毎年7月1日現在の標準価格として都道府県知事が9月下旬に公表しています。 |
公示地価(こうじちか) | 土地の取引において広く指標とされる「都市計画区域内の土地」の1平方メートルあたりの価格。 公示地価は毎年1月1日時点の土地の価格を国土交通省土地鑑定委員会の評価により決定し、毎年3月下旬に公表されます。 |
路線価(ろせんか) | 道路に面した宅地の1㎡あたりの土地の価格。 路線価には「相続税路線価」と「固定資産税路線価」という2つがあり、それぞれにどれくらいの税金がかかるかを求めるのに使われる指標となります。ちなみに、単に「路線価」とだけ記されている場合には「相続税路線価」のことが多いです |
実勢価格(じっせいかかく) 時価(じか) | 実際に市場で取引されたときの価格。 |
概要
法人税等には、法人税の他、都道府県民税、市町村民税および利益に関連する金額を課税標準とする事業税が含まれます
税率
税金の種類 | 東京都23区内の場合 | その他都道府県の場合 | ||||
---|---|---|---|---|---|---|
400万円以下 | 400-800万円 | 800万円超 | 400万円以下 | 400-800万円 | 800万円超 | |
法人税 | 15.00% | 15.00% | 23.90% | 15.00% | 15.00% | 23.90% |
地方法人税 | 0.66% | 0.66% | 1.05% | 0.66% | 0.66% | 1.05% |
法人法人税 | - | - | - | - | - | - |
都民税 | 1.94% | 1.94% | 3.08% | - | - | - |
道府県民税 | - | - | - | 0.48% | 0.48% | 0.76% |
市町村税 | - | - | - | 1.46% | 1.46% | 2.32% |
法人事業税 | 3.40% | 5.10% | 6.70% | 3.40% | 5.10% | 6.70% |
地方法人特別税 | 1.46% | 2.20% | 2.89% | 1.46% | 2.20% | 2.89% |
合計 | 22.46% | 24.90% | 37.62% | 22.46% | 24.90% | 37.62% |
法定実効税率 | 21.42% | 23.20% | 34.34% | 21.42% | 23.20% | 34.34% |
主な仕組
会社は「収益」から「費用」を引いて「利益」を求めますが、税法上は「益金」から「損金」を引いて「所得」を算出します。この収益と益金、費用と損金はイコールではありません。
会社の経営状態を調べるには、正確な情報が必要です。そのため、決算では「収益」「費用」「利益」を求めます。対して法人税の計算の場合は、課税の公正さや国の税務政策を優先する性質上、会社が費用だと考えるものでも、税法上は費用にならないというものが出てくるのです。よって益金と収益、損金と費用は同じにはならないのです。
申告書の構成
損金不算入
損金不算入となるのは以下のものがあります。
- 交際費等
- 減価償却の超過額など
- 事前に届け出のない役員給与・過大な役員報酬など
- 法人税や法人住民税(租税公課)
別表五(二)租税公課の納付状況等に関する明細書 - 一定以上の寄付金
納税充当金
法人税の申告書の別表5⑴や別表5⑵には、「納税充当金」という文言が頻繁に出てきます。
ここの納税充当金とは、納税に用いるお金のことであり、簿記や会計用語にある「未払法人税」に該当します。
納税充当金の処理方法は下記の二つがあります。
繰入
納税充当金を繰り入れるとは
別表5⑵に繰入額と取崩額という欄があります。
損金経理により納税充当金に繰り入れるとは、会計的に言い換えると「法人税等を、相手勘定科目を未払法人税等として計上する」ということになります。
仕訳すると
法人税・住民税及び事業税 ××× / 未払法人税等 ×××
取り崩し
納税充当金を取り崩しにより納付するとは、会計的に言い換えると「未払法人税等を反対(借方)に仕訳して法人税等を納付する」ということになります。
仕訳で表すと
未払法人税等 ××× / 現金 ×××
このトピックでは、リポジトリ情報が格納される各システムテーブルを抜粋して説明します。
リポジトリ管理
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
TADIR | リポジトリオブジェクトのディレクトリ | PGMIDプログラムID OBJECTオブジェクトタイプ OBJ_NAMEオブジェクト名称 SRCSYSTEM マスタシステム DEVCLASSパッケージ MASTERLANGマスタ言語 COMPONENTソフトウェアコンポーネント |
ABAPアプリケーション
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
TAPLP | アプリケーションディレクトリ | APPL アプリケーションカテゴリ名 KTEXT アプリケーション短文テキスト |
ABAPディクショナリ
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
DD02L | DBテーブル | TABNAME テーブル名 TABCLASS テーブルカテゴリ BUFFERED バッファリング CONTFLAG 出荷クラス | |
DD08L | DBテーブル 外部キー | TABNAME テーブル名 FIELDNAME 項目名 CHECKTABLE チェックテーブル FRKART 依存度 | |
DD05S | DBテーブル 外部キー 項目 | TABNAME テーブル名 FIELDNAME 項目名 PRIMPOS 位置 FORTABLE外部キーテーブル FORKEY外部キー項目 | |
DD09L | DBテーブル 技術設定 | TABNAME テーブル名 TABKATサイズカテゴリ TABARTデータクラス PUFFERUNGバッファタイプ TRANSPFLAG透過フラグ BUFALLOWバッファ可能 | |
DD12L | DBテーブル 二次索引 | SQLTABテーブル名 INDEXNAME索引 ID | |
DD17S | DBテーブル 二次索引 項目 | SQLTABテーブル名 INDEXNAME索引 ID POSITIONテーブル位置 FIELDNAME項目名 DESCFLAG降順 | |
DD03L | DBテーブル 項目 | TABNAME テーブル名 FIELDNAME項目名 POSITIONテーブル位置 KEYFLAGキー項目 MANDATORY必須項目 ROLLNAMEデータエレメント CHECKTABLEチェックテーブル INTTYPE ABAP データ型 DATATYPEデータ型 | |
DD35L | SAPテーブル項目 検索ヘルプ割当 | TABNAME テーブル名 FIELDNAME項目名 SHLPNAME検索ヘルプ名 | |
DD36S | SAPテーブル項目 検索ヘルプパラメータ | TABNAME テーブル名 FIELDNAME項目名 SHLPFIELD検索ヘルプ Para SHTYPE割当タイプ SHTABLE割当テーブル SHFIELD割当項目 | |
DARTT | 技術設定 データクラス | ||
DGKAT | 技術設定 サイズカテゴリ | ||
DD25L | テーブルビュー | VIEWNAMEビュー名 ROOTTAB一次テーブル VIEWCLASSビュータイプ CUSTOMAUTH出荷クラス VIEWGRANT更新ステータス GLOBALFLAGテーブル更新 | |
DD26S | テーブルビュー 基本・結合テーブル | VIEWNAMEビュー名 TABNAME基本テーブル OBJPOS反復グループ位置 | |
DD27S | テーブルビュー項目 | VIEWNAMEビュー名 OBJPOS反復グループ位置 VIEWFIELDビュー項目 TABNAME基本テーブル FIELDNAME基本項目 KEYFLAGキー項目 ROLLNAMEデータエレメント RDONLY更新フラグ | |
DD28S | テーブルビュー 選択条件 | CONDNAME選択条件 ID POSITION反復グループ位置 TABNAMEテーブル名 FIELDNAME項目名 NEGATION否定 OPERATOR演算子 CONSTANTS定数 CONTLINE継続行フラグ AND_OR | |
DD29L | テーブルビューとマッチコードIDの選択条件 | CONDNAME選択条件 ID VIEWNAMEビュー名 LINE_CNT反復グループ位置 | |
DD01L | ドメイン | DOMNAME ドメイン名 AS4LOCAL有効化ステータス DATATYPE データ型 LENG 長さ DECIMALS 小数点以下桁数 ENTITYTAB 値テーブル CONVEXIT 変換ルーチン | |
DD07L | ドメイン値 | DOMNAME ドメイン名 AS4LOCAL有効化ステータス VALPOS ドメイン値キー DOMVALUE_L ドメインの値:下限/単一値 DOMVALUE_H ドメインの値:上限 | |
DD30L | 検索ヘルプ | SHLPNAME検索ヘルプ名 SELMETHOD選択メソッド SELMTYPE選択カテゴリ SELMEXIT検索ヘルプ Exit | |
DD32S | 検索ヘルプ 項目 | SHLPNAME検索ヘルプ名 FIELDNAME検索ヘルプ Para FLPOSITION検索ヘルプ項目位置 ROLLNAMEデータエレメント SHLPINPUT IMPORT param. SHLPOUTPUT EXPORT param. SHLPSELPOS 選択位置 SHLPSELDIS 選択表示 DATATYPE データ型 | |
DD31S | 複合検索ヘルプ 割当 | SHLPNAME検索ヘルプ名 SUBSHLP検索ヘルプ VIASHLP検索ヘルプ (親) | |
DD33S | 検索ヘルプ 項目割当 | SHLPNAME検索ヘルプ名 FIELDNAME検索ヘルプ Para SUBSHLP検索ヘルプ SUBFIELD参照パラメータ | |
DD25L | ロックオブジェクト | ||
DD26S | ロックオブジェクト 二次テーブル | ||
DD27S | ロックオブジェクト 項目 | ||
DDLOG | バッファ同期 | ||
DDSYN | バッファ同期化のパラメータ |
ABAPプログラム
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
REPOSRC | レポートソースコード | PROGNAMEプログラム名 CLASPGM クラス SUBCプログラム Type APPL Application SECU権限グループ DATA Source Code | |
TLIBG | 汎用グループ | ||
TFDIR | 汎用モジュール | FUNCNAME汎用モジュール PNAMEプログラム名 FMODEモード UTASK更新 | |
FUPARAREF | 汎用モジュール(パラメータ) | FUNCNAME汎用モジュール PARAMETERパラメータ名 PARAMTYPEパラメータ Type STRUCTURE関連する型 DEFAULTVALデフォルト値 OPTIONALオプション params | |
ENLFDIR | 汎用モジュール(追加属性) | FUNCNAME汎用モジュール AREA汎用グループ ACTIVE有効 GENERATED生成済 FREEDATEリリース日付 | |
D020S | Dynpro 内容 | PROGプログラム名 DNUM Dynpro番号 TYPE Dynproタイプ FNUM DGRP | |
D021T | Dynpro キーワードテキスト | PROGプログラム名 LANG言語 FLDN項目名 DTXT画面のキーワードテキスト | |
VARID | バリアント一覧 | REPORTレポート名 VARIANTバリアント | |
VARIS | 選択画面へのバリアント割当 | REPORTレポート名 DYNNR Dynpro 番号 VARIANTバリアント | |
D342L | GUIステータス | PROGNAME プログラム名称 STATUS GUI ステータス TYPEロードタイプ | |
D347T | GUI表題 | PROGNAMEプログラム名称 SPRSL言語 OBJ_CODE表題番号 | |
SEOCLASS | クラス/インタフェース | CLSNAME クラス名称 CLSTYPEクラスタイプ UUID | |
SEOCLASSDF | クラス/インタフェース定義 | CLSNAME クラス名称 VERSIONバージョン CATEGORYカテゴリ EXPOSURE可視性 STATEステータス RELEASEリリース CLSEMBED埋込可能 CLSABSTRCT抽象 CLSFINAL 最終クラス | |
SEOCOMPO | クラス/インタフェースコンポーネント | CLSNAME クラス名称 CMPNAMEコンポーネント CMPTYPEコンポーネントタイプ MTDTYPEメソッドタイプ | |
SEOCOMPODF | クラス/インタフェースコンポーネント定義 | CLSNAME クラス名称 CMPNAMEコンポーネント VERSIONバージョン EXPOSURE可視性 STATEステータス | |
SEOFRIENDS | クラス/インタフェース フレンド属性 | CLSNAME クラス名称 REFCLSNAME参照クラス名称 FRIENDTYPEフレンドタイプ VERSIONバージョン STATEステータス | |
SEOIMPLREL | クラス/インタフェース 属性(参照型定義) | CLSNAME クラス名称 CMPNAMEコンポーネント VERSIONバージョン REFCLSNAME参照クラス名称 IRLTYPE関係タイプ | |
SEOMETAREL | クラス/インタフェース スーパークラス・インタフェース定義 | CLSNAME クラス名称 REFCLSNAME参照クラス名称 VERSIONバージョン STATEステータスステータス RELTYPEクラス間の関係タイプ RELNAME関係タイプ名 | |
SEOREDEF | クラス/インタフェース 定義のオーバーライド) | CLSNAME クラス名称 REFCLSNAME参照クラス名称 VERSIONバージョン MTDNAMEメソッド名称 MTDABSTRCT抽象 MTDFINAL Final ATTVALUE初期値 | |
SEOSUBCO | クラス/インタフェース サブコンポーネント | CLSNAME クラス名称 CMPNAMEコンポーネント SCONAMEサブコンポーネント CMPTYPEコンポーネントタイプ MTDTYPEメソッドタイプ | |
SEOSUBCODF | クラス/インタフェース サブコンポーネント定義 | CLSNAME クラス名称 CMPNAMEコンポーネント SCONAMEサブコンポーネント VERSIONバージョン LOCKEDロック PARDECLTYP宣言レベル PARPASSTYP引渡しタイプ TYPTYPE型指定 | |
SEOTYPEPLS | クラス/インタフェース データ型グループ割当 | CLSNAME クラス名称 TYPEGROUPタイプグループ | |
SHDSVCI | 画面バリアント | SCVARIANT画面バリアント PROGNAMEプログラム DYNPRO Dynpro番号 | |
SHDSVFVCI | 画面バリアント: 項目内容 | SCVARIANT画面バリアント FIELDNAME項目名 STEPLステップループ行 FIELDVALUE項目値 -- | |
SHDTVU | クライアント依存トランザクションバリアント | TCVARIANT トランザクションバリアント TCODE トランザクションコード | |
クライアント依存トランザクションバリアント | TCODE トランザクションコード TCVARIANT トランザクションバリアント | ||
SHDTVCIU | クライアント非依存トランザクションバリアント | TCVARIANT トランザクションバリアント TCODE トランザクションコード | |
クライアント非依存トランザクションバリアント | TCODE トランザクションコード TCVARIANT トランザクションバリアント | ||
TSTC | トランザクションコード | TCODEトランザクションコード PGMNAプログラム DYPNO Dynpro | |
- | - |
WebDynproプログラム
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
WDY_COMPONENT | Web Dynpro: Component | COMPONENT_NAMEコンポーネント名称 VERSIONプログラムステータス TYPEタイプ MODULE‗POOL_NAMEモジュールプール名 |
拡張
技術名称 | 説明 | 主要項目 | |
---|---|---|---|
MODSAP | 拡張プロジェクト(カスタマEXIT) | NAME拡張プロジェクト名称 構成要素TYPタイプ MEMBER拡張名称 DEVCLASSパッケージ | |
MODACT | 拡張実装(カスタマEXIT) | NAME拡張名 TYP構成要素タイプ MEMBER拡張 | |
BADI_SPOT | BAdi定義 | BADI‗NAME BAdi定義名称 ENHSPOTNAME拡張スポット名称 | |
ENHOBJ | 拡張オブジェクト | ENHNAME拡張実装 VERSIONバージョン OBJ_TYPオブジェクトタイプ OBJ_NAMEオブジェクト名称 |
このトピックでは、移送に関わるシステムテーブルを抜粋して説明します。
概要
以下の表でテーブル一覧を示します。
No. | カテゴリ | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | システム構成 | TCETRAL | 移送レイヤ | 移送レイヤの情報を格納 |
2 | TCERELE | 移送レイヤの詳細 | - | |
3 | TMSCDOM | 移送ドメイン | 移送ドメインの情報を格納 | |
4 | TMSCDES | 宛先 | 宛先の情報を格納 | |
5 | TMSCNFS | 移送グループ | 移送ドメインの情報を格納 | |
6 | TMSCSYS | システム | システムの情報を格納 | |
7 | 変更管理 | E070 | 依頼/タスクのヘッダ | 依頼/タスクのヘッダ情報を格納 |
8 | E070A | 依頼の属性 | 依頼の属性情報を格納 | |
9 | E070C | 依頼/タスクのソース/対象クライアント | 依頼/タスクのソースクライアントを格納 | |
10 | E070L | 依頼/タスクの番号割当用索引 | 最後に割り当てれた番号を格納 | |
11 | E071 | 依頼/タスクの明細 | 変更されたオブジェクト情報を格納 | |
12 | E071K | 依頼/タスクのキーエントリ | テーブルデータの場合のキー情報を格納 | |
13 | TTOBJECTS | 翻訳関連に応じた移送オブジェクト | - | |
14 | 移送管理 | TSYIMPSTAT | 移送依頼インポートステータス | - |
15 | TMSBUFREQ | 移送バッファの移送依頼 | - |
詳細(システム構成)
TCETRALテーブル
移送レイヤ、移送レイヤの情報を格納
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | VERSION | バージョン | - |
2 | ○ | TRANSLAYER | 移送レイヤ | - |
TMSCDOMテーブル
移送ドメイン、移送ドメインの情報を格納
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | DOMNAM | 移送ドメイン | - |
2 | DOMCTL | ドメインコントローラ | - |
TMSCDESテーブル
宛先、宛先の情報を格納
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | RFCDES | RFC宛先 | - |
2 | ○ | LIMBO | フラグ | - |
3 | RFCTYPE | 接続タイプ | - | |
4 | RFCLIBFLG | 負荷分散 | - | |
5 | RFCHOST | 対象ホスト | - | |
6 | RFCSERV | サービス | - | |
7 | RFCCLIENT | クライアント | - | |
8 | RFCUSER | ユーザ | - | |
9 | RFCAUTH | パスワード | - | |
10 | DOMNAM | 移送ドメイン | - |
TMSCNFSテーブル
移送グループ、移送ドメインの情報を格納
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | DOMNAM | 移送ドメイン | - |
2 | ○ | NFSGRP | 移送グループ | - |
TMSCSYSテーブル
システム、システムの情報を格納
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | DOMNAM | 移送ドメイン | - |
2 | ○ | SYSNAM | システム名 | - |
3 | ○ | LIMBO | フラグ | - |
4 | NFSGRP | 移送グループ | - | |
5 | DESADM | RFC宛先 | - | |
6 | INSTNO | インストール番号 | - |
詳細(移送系)
E070テーブル
依頼/タスクのヘッダ
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | TRKORR | 依頼/タスク番号 | - |
2 | TRFUNCTION | タイプ | 依頼の場合、K(ワークベンチ依頼)やW(カスタマイジング依頼)といった分類が格納されます | |
3 | TRSTATUS | ステータス | D(修正可能)、R(リリース済)などがあります | |
4 | TARSYSTEM | 移送対象 | - | |
5 | KORRDEV | カテゴリ | CUST(クライアント依存)、(クライアント非依存)があります | |
6 | AS4USER | 所有者 | - | |
7 | STRKORR | 上位移送 | - |
E070Lテーブル
CTS: 依頼/タスクの番号割当用索引
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | LASTNUM | 識別 | - |
2 | TRKORR | 移送/タスク番号 | - |
E070Lには何番から採番すれば良いのかという情報を保持しています。 開発機を何らかの理由で過去の状態に戻すと、移送依頼番号も、また若い番号から採番されてしまいます。 例えば、KDA0900100 まで採番された状態に戻ると、KDA0900100 から KDA0900200 までは2回繰り返されることになってしまい、それらの移送依頼をリリースしようとすると、移送ディレクトリに存在する過去の移送ファイルと重複してしまうため、エラーになってしまいます。 このような「移送依頼番号の重複」を回避するためには、移送依頼番号の情報を管理しているテーブル E070L の内容を移送依頼番号が重複しないような大きい番号に編集してあげればOKです。 ただ、このテーブルは編集不可に設定されているため、T-cd:SE16 では編集できません。 データベースレベルで直接 SQL を実行して編集します。 update E070L SET TRKORR = 'KDA0900300' WHERE LASTNUM = 'TRKORR';
E071テーブル
依頼/タスクのオブジェクトエントリ
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | TRKORR | 依頼/タスク番号 | - |
2 | ○ | AS4POS | 明細行番号 | - |
3 | PGMID | プログラムID | - | |
4 | OBJECT | オブジェクトタイプ | - | |
5 | OBJ_NAME | オブジェクト名 | - | |
6 | LOCKFLAG | ロックステータス | - |
このトピックでは、権限に関わるシステムテーブルを抜粋して説明します。
概要
カテゴリ | 技術名称 | 名称 | 説明 |
---|---|---|---|
ユーザ | USR01 | ユーザマスタレコード | 基本属性を定義 |
USR02 | ユーザログオンデータ | ユーザログオンデータを定義 | |
USR03 | ユーザアドレスデータ | ユーザアドレスデータを定義 | |
USR04 | ユーザ権限 | ユーザに割り当てられた権限プロファイル情報を格納 | |
USR05 | ユーザマスタパラメータID | ユーザパラメータ値を格納 | |
USR21 | ユーザ名アドレスキーの割当 | ユーザのアドレスキー値を格納 | |
ADR2 | 電話番号 (アドレス管理) | ユーザの電話番号を格納 | |
ADR3 | FAX 番号 (アドレス管理) | ユーザのFAX番号を格納 | |
ADR6 | 電子メールアドレス | ユーザの電子メールアドレスを格納 | |
ロール | AGR_AGRS | 集合ロール内のロール | - |
AGR_DEFINE | ロール定義 | - | |
AGR_FLAGS | ロール属性 | - | |
AGR_HIER | ロールメユー構造 | - | |
AGR_1016 | ロールプロファイル | - | |
AGR_1250 | ロール権限データ(ヘッダ) | - | |
AGR_1251 | ロール権限データ(項目値明細) | - | |
AGR_1252 | ロール権限データ(組織要素) | - | |
権限オブジェクト | TOBC | 権限クラス | 権限クラスを定義 |
TOBJ | 権限オブジェクト | 権限オブジェクトと権限オブジェクトの項目構成を定義 | |
TACTZ | 権限オブジェクトごとの有効アクティビティ | 権限オブジェクトごとの有効アクティビティ | |
権限プロファイル | UST10C | 複合権限プロファイル | 含められている単一ロールを定義 |
UST10S | 単一権限プロファイル | 権限プロファイルの権限名を定義 | |
UST12 | 権限プロフィル権限値 | 権限オブジェクト別に権限プロファイル毎の各権限項目値を格納 | |
権限(ユーザ) | USR10 | ユーザマスタ権限プロファイル | - |
USR12 | ユーザマスタ権限値 | - | |
USR16 | ユーザ権限用変数の値 | - | |
権限(トランザクション) | TSTCA | トランザクションコード権限の値 | SE93で照会・更新 |
USOBT | トランザクション>権限オブジェクト | SU22/SU24で照会・更新 | |
USOBX | USOBTのチェック用テーブル | - | |
USOBT_C | トランザクション>権限オブジェクト(カスタマ) | - | |
USOBX_C | USOBT_Cのチェック用テーブル | - |
詳細(ユーザ系)
USR01テーブル
ユーザマスタレコード
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | BNAME | ユーザ | ユーザID |
2 | STCOD | 開始メニュー | - | |
3 | SPLD | 出力デバイス | - | |
4 | DATFM | 日付書式 | - | |
5 | DCPFM | ISOコード | - | |
6 | LANGU | 言語 | - |
USR02テーブル
ユーザログオンデータ
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | BNAME | ユーザ | ユーザID |
2 | BCODE | 初期パスワード | - | |
3 | USTYP | ユーザタイプ | - |
USR04テーブル
ユーザ権限
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | BNAME | ユーザ | ユーザID |
2 | NRPRO | プロファイル数 | - | |
3 | PROFS | プロファイル名リスト | - |
USR05テーブル
ユーザパラメータ
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | BNAME | ユーザ | ユーザID |
2 | PARID | パラメータID | - | |
3 | PARVA | パラメータ値 | - |
定義可能なパラメータ名はTPARAテーブルに定義されます。
詳細(ロール)
AGR_DEFINEテーブル
ロール定義
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール名称 | - |
2 | TEXT | テキスト | - |
AGR_FLAGSテーブル
ロール属性
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール名称 | - |
2 | ○ | FLAG_TYPE | 属性タイプ | - |
3 | FLAG_VALUE | 属性値 | - |
AGR_HIERテーブル
ロールメユー構造 AGR_HIERT
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール名称 | - |
2 | ○ | OBJECT_ID | メニューID | - |
3 | FOLDER | 親メニューID | - | |
4 | SORT_ORDER | ソート順番 | - | |
5 | MENU_LEVEL | メニューレベル | - | |
6 | SAP_GUID | 一意 ID | - | |
7 | ATTRIBUTES | 親メニューID | - | |
8 | SOURCE_AGR | 色 | - | |
9 | ICON | メニューエントリアイコン | - | |
10 | APPL_ALIAS | メニューエントリテキスト | - |
AGR_1016テーブル
ロールプロファイル名称
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール | - |
2 | ○ | COUNTER | カウンタID | - |
3 | PROFILE | プロファイル | - | |
4 | GENERATED | 生成済 | - | |
5 | PSTATE | バージョン | - |
AGR_1250テーブル
ロール権限データ(ヘッダ)
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール | - |
2 | ○ | COUNTER | カウンタID | - |
3 | OBJECT | 権限オブジェクト | - | |
4 | AUTH | 権限値 | - | |
5 | MODIFIED | オブジェクトステータス | - |
AGR_1251テーブル
ロール権限データ(項目値明細)
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール | - |
2 | ○ | COUNTER | カウンタID | - |
3 | OBJECT | 権限オブジェクト | - | |
4 | AUTH | 権限値 | - | |
5 | FIELD | 項目名 | - | |
6 | LOW | 値 | - | |
7 | HIGH | 値 | - |
AGR_1252テーブル
ロール権限データ(組織要素) ロールが関連付ける組織(販売組織、購買組織、会社コードなど)の情報を格納します。 利用可能な組織の変数名がUSVARに定義されます。
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール | - |
2 | ○ | COUNTER | カウンタID | - |
3 | VARBL | 組織変数名 | - | |
4 | LOW | 値 | - | |
5 | HIGH | 値 | - |
AGR_USERSテーブル
ユーザへのロール割当
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | AGR_NAME | ロール | - |
2 | ○ | UNAME | ユーザ | - |
3 | ○ | FROM_DAT | 開始日付 | - |
4 | ○ | TO_DAT | 終了日付 | - |
5 | COL_FLAG | 集合ロールからの割当 | - |
詳細(権限オブジェクト系)
TOBCテーブル
権限クラス
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | OCLSS | 権限クラス | - |
TOBJテーブル
権限オブジェクト
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | OBJCT | 権限オブジェクト名称 | - |
2 | FIEL1~FIEL0 | 項目名 | - | |
3 | OCLSS | 権限クラス | - |
TACTZテーブル
権限オブジェクトごとの有効アクティビティ
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | BROBJ | 権限オブジェクト名 | - |
2 | ○ | ACTVT | アクティビティ | - |
詳細(権限プロファイル系)
UST10Cテーブル
複合権限プロファイル
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | PROFN | 複合プロファイル | - |
2 | ○ | AKTPS | バージョン | - |
3 | ○ | SUBPROF | 単一プロファイル | - |
UST10Sテーブル
単一権限プロファイル
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | PROFN | プロファイル | - |
2 | ○ | AKTPS | バージョン | - |
3 | OBJCT | 権限オブジェクト | - | |
4 | AUTH | ユーザマスタ:権限名 | - |
UST12テーブル
権限プロフィル権限値
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | OBJCT | 権限オブジェクト | - |
2 | ○ | AUTH | ユーザマスタ:権限名 | - |
3 | ○ | AKTPS | バージョン | - |
4 | ○ | FIELD | 権限項目 | - |
5 | ○ | VON | 権限項目値 | - |
6 | ○ | BIS | 権限項目値 | - |
詳細(権限(ユーザ)系)
USR10テーブル
ユーザマスタ権限プロファイル
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | PROFN | プロファイル名 | - |
2 | ○ | AKTPS | バージョン | - |
3 | TYP | タイプ | - | |
4 | NRAUT | プロファイル/権限の数 | - | |
5 | AUTHS | 権限 | - |
USR12テーブル
ユーザマスタ権限値
項目一覧
No. | PK | 技術名称 | 名称 | 説明 |
---|---|---|---|---|
1 | ○ | OBJCT | 権限オブジェクト | - |
2 | ○ | AUTH | ユーザマスタ:権限名 | - |
3 | ○ | AKTPS | バージョン | - |
4 | VALS | 権限値 | - |
このトピックでは、NetWeaver ABAPの権限チェックの実装を取り上げて説明します。
権限チェックのタイミング
権限のチェックは、プログラムレベルのチェックとシステムレベルのチェックと2種類があります。
プログラムレベルのチェック
プログラムレベルでのチェックは、プログラムでAUTHORITY-CHECKを明示的に組み込む必要があります。 AUTHORITY-CHECK によって、ユーザに指定されたプロファイルが検索され、AUTHORITY-CHECKに指定された権限オブジェクトの権限をユーザが持っているかどうかが確認されます。検索された権限のいずれかが必要な値に一致する場合は、チェックは成功です。
システムレベルのチェック
システムレベルのチェックは、個別にプログラミングする必要がなく、システムより自動的に実施される権限チェックです。トランザクションやレポートプログラムが起動する際に、ユーザが該当機能を実行できる権限をもっているかどうかをシステムよりチェックされます。
トランザクション起動時
トランザクションが起動する際に、システムから以下のチェックは順に実施されます。
- トランザクションコードは有効か
テーブルTSTCチェック - トランザクションがシステム管理者によってロックされているか
テーブルTSTCチェック - S_TCODE権限チェック
ユーザが実行できるトランザクションコード一覧に該当トランザクションコードがはいっていないかをチェックされます。 - 追加権限チェック
SE93で該当トランザクションに追加権限が割り当てられた場合、それがチェックされます。 - 割当権限チェック
SU24で該当トランザクションに権限オブジェクトを割り当て且つチェックフラグを設定された場合、それがチェックされます
レポートクラスの開始
レポートに権限クラスを割り当てることによって、追加権限チェックを実行することができます。
RFC汎用モジュールの呼出
RFC汎用モジュールがRFCクライアントプログラムまたは他のシステムによって呼び出されると、呼び出されたシステムの権限オブジェクトS_RFC の権限チェックが実行されます。
権限チェックのカスタマ実装
権限設計は、業務運用でどこかの場面で何かの権限制御をかけなければならないという要件から始まります。 例として、「販売伝票一覧を出力するレポート処理で、ログオンユーザが権限を持っていない販売エリアの伝票を出力しない」という権限制御を取り上げます。
権限オブジェクトの定義
権限オブジェクトV_VBAK_VKOは、例の権限制御を実現できる標準権限オブジェクトです。
権限クラス | 権限オブジェクト | 権限項目 |
---|---|---|
SD | V_VBAK_VKO | VKORG(販売組織) |
VTWEG(流通チャネル) | ||
SPART(製品部門) | ||
ACTVT(アクティビティ) |
権限チェックの実装
以下の権限チェック処理で、ユーザが権限を持っていない販売エリアのデータが出力対象にならないように制御しております。
LOOP AT T_VBAK INTO L_VBAK. AUTHORITY-CHECK OBJECT 'V_VBAK_VKO' ID 'VKORG' FIELD L_VBAK-VKORG ID 'VTWEG' FIELD L_VBAK-VTWEG ID 'SPART' FIELD L_VBAK-SPART ID 'ACTVT' FIELD '03'. IF NOT SY-SUBRC IS INITIAL. DELETE T_VBAK. ENDIF.
ENDLOOP.
ユーザ
ユーザ毎に設定・保持されるデータは、ユーザマスタレコードと呼ばれます。
ユーザの基本データ
ユーザの基本データには、アドレスデータ、ログオンデータ、デフォルトデータがあります。
- アドレス
姓・名や、職務、文書、連絡方法などの情報が含められます。 - ログオンデータ
パスワードや有効期限などの情報が含められます。 - デフォルト
ログオン言語や、書式(数値、日付、時刻)、スプール制御などの情報が含められます。
ユーザパラメータ
ユーザパラメータによって、SAP項目に初期値が指定されます。項目を指定すると、初期値が自動的に表示されます。項目定義によって、そのエントリをユーザ入力値に置き換えることもできます。 例として以下のユーザパラメータを取り上げます。
- BUK
会社コード - EKO
購買組織 - WRK
プラント
設定可能なパラメータはすべてシステムテーブルTPARAに登録されています。
ユーザとロール
ユーザに単一又は集合ロールを割り当てることができます。ユーザに複数ロールが割り当てられた場合は、結果は論理和になります。
ユーザと権限プロファイル
ユーザにマニュアル権限プロファイルを割り当てることができます。ユーザに複数権限プロファイルが割り当てられた場合は、結果は論理和になります。
ロール
ロールはユーザをグループ化する手段を提供します。 ロールは権限を割当する単位とするほか、ユーザメニュー構成を定義する単位にもなります。 ロールは、部署や役職に基づいてを設計することが多い。
ロールの分類
ロールには単一ロールと集合ロールがあります。 単一ロールには、ユーザの権限データとログオンメニューが含まれます。 集合ロールには、任意の数の単一ロールが含まれます。
ロールと権限
単一ロールの権限データから権限プロファイルが自動生成されます。ここの権限プロファイルは生成済権限プロファイルと呼ばれます。
ツール
標準機能から以下の権限管理ツールが提供されておいます。
- SU01 ユーザ管理
ユーザデータの登録、変更 - PFCG ロール更新
ロールの登録、変更 - SUIM ユーザ情報システム
このトピックでは、NetWeaver ABAP(ECC)の権限制御のコンセプトや概要を取り上げて説明します。
前書き
権限とは
権限とは、システムのユーザに、ある範囲のことを正当に行うことができるものとして与えられている能力、またその能力が及ぶ範囲のことです。
ユーザに付与される権限には、以下の情報が定められます。
- 対象
権限でアクセス可能な対象(リソースや処理など)を定義します。 - 範囲
対象に対してアクセス可能な範囲を定義します。例えば、対象がファイルなら、読み取りができるかどうか、書き込めるかどうか、アクセスされる範囲を制御できます。 - 期間
権限の有効期間を指定します。
権限制御とは
権限制御とは、システムが、各ユーザに対して、事前に付与された権限に従って、処理の実行やアクセスの範囲を制御することです。
権限制御は、通常、OSやデータベース、アプリケーションなど各分野でそれぞれ実施されます。
- OS
アプリケーション、サービス、ファイルといったリソースのアクセス権限をユーザ・グループ毎に制御します。 - データベース
テーブル、ビューといったデータベースオブジェクト単位で、ユーザ・グループ毎にデータの照会、更新、作成、削除の権限を制御します。 - アプリケーション
アプリケーション側で必要に応じてビジネスレベルの権限制御を行います。
目的と機能
データベース側では、テーブルレベルのアクセス制御が仕組みに組み込まれているのは普通ですが、テーブルをさらに行レベルのアクセス制御をかけることは通常サポートされません。
例えば、各支店の売上データが格納されたテーブルがあるとします。各支店の従業員が所属支店のデータしか参照できないというセキュリティ要件はよくあるものですが、データベース側でカーバできないため、アプリケーション側で何らかの対応をしなければなりません。
NetWeaver ABAPは、アプリケーションレベルで独自の権限仕組みを導入ことにより、上記のビジネス要件に統合化したソリューションを提供します。
NetWeaver ABAPの権限制御を利用することにより、以下の機能を実現することができます。
- ユーザ(グループ)毎に各機能の実行可否を制御
例えば、経理部の人を購買システムの機能を実行できないように権限制御をかけることができます。 - ユーザ(グループ)毎にアクセスデータ範囲を制御
例として取り上げられた支店毎の制御をかけることができます。
特徴
NetWeaver ABAPの権限制御は以下の特徴があります。
- できることの積み上げ
できることのみを定義でき、できないことの定義はできません。これはシンプルという利点もありますが、膨大になりがち、管理が大変になるというデメリットがあります。 - 言語レベルでサポート
権限チェックするためのコマンド(authority-check) がABAP言語に組み込まれています。
構成要素
Netweaver ABAPの権限コンセプトの構成要素は開発局面と運用局面に分けて整理することができます。
- 開発局面
プログラムを実装する際に、機能のセキュリティ要件を元に、実行時にどうな権限チェックをかけないといけないかを設計して、そのロジックをプログラムに組み込んでおく必要があります。
このような権限チェックの内容と方法を定義するのは権限オブジェクトという構成要素になります。
権限オブジェクトはコア要素であり、システムにより一元管理されます。 - 運用局面
システムを構築する際に、 運用要件を元に、システムの利用者がどんな人いるか、どういうふうに権限をわけないといけないかを設計しておく必要があります。
このような権限割当の単位を定義するのは権限プロファイルという構成要素になります。
権限プロファイルに関連機能の権限オブジェクトの権限値が含められますので、機能にどんな権限オブジェクトがあるかを把握しておかなければなりません。
ECC標準機能ではすでに数千の権限オブジェクトが組み込まれていますので、権限オブジェクトの把握は相当大変な作業になると想像できます。
権限オブジェクト
権限オブジェクトとは、権限制御でチェックしなければならない項目及びチェック方法を示す要素です。 権限オブジェクトの上位要素としては権限クラス、下位要素としては権限項目があります。
- 権限クラス
権限クラスは、権限オブジェクトの論理的な組合せで、たとえばアプリケーション(財務会計、人事管理など) に対応します。 - 権限項目
権限項目は、権限オブジェクトに構成する項目です。ABAPディクショナリで保存されたデータエレメントトに接続されています。
権限オブジェクトは、AND で結合された項目を 10 個までグループ゚化します。
権限オブジェクトが事前にプログラムロジックに組み込まれており、実行時に 実行可能なアクション(データの照会や登録、変更など)及び処理可能なデータの範囲を制御します。
権限
権限とは、権限オブジェクトの定義、すなわち、権限オブジェクトの各権限項目の許容値を組合せたものです。 権限により、権限オブジェクト項目値のセットにもとづいて、ECCシステムで特定のアクティビティを実行することができます。 権限を使用することで、権限オブジェクトの項目に対して任意の数の指定値または値範囲を項目に対して指定することができます。また、すべての値を許可したり、空の項目を許容値として許可したりすることもできます。 権限を変更すると、その権限を含む権限プロファイルを持つすべてのユーザが影響を受けます。
権限プロファイル
権限プロファイルとは、権限の集合で、ユーザにまとめて権限を割り当てる単位です。権限プロファイルは下記3種類があります。
- 生成済権限プロファイル
生成済権限プロファイルは、ロールからロールの権限データで自動生成される権限プロファイルです。 - マニュアル権限プロファイル
マニュアル権限プロファイルとは、 ロールを使わずに明示的に作成される権限プロファイルです - 複合プロファイル
複合プロファイルには、任意の数の権限プロファイルが含まれます。
各要素の関係
ロールの利用
ロールは厳密的に権限コンセプトの構成要素ではないですが、内部的に生成済権限プロファイルを自動生成するため、権限プロファイルとして利用することができます。 さらに、ロールはユーザメニュ構成を定義する単位にもなりますので、実際のシステム運用ではロールを利用してユーザの権限を管理するはほとんどです。
ロールは、ユーザをグルーピングする手段として、部署や役職に基づいて設計することが多い。
このトピックでは、NetWeaver ABAP Platformの変更管理システム(Change Management System,CMS)の仕組みを取り上げて説明します。 変更管理システムと移送管理システムを合わせて、CTS(Change Transport Systemo)と呼ばれています。
バージョン管理
リポジトリオブジェクトは変更履歴に対してバージョン管理ができます。
バージョンの種類
バージョンは開発データベース(リポジトリ)上のバージョンとバージョンデータベース上の履歴バージョンと2種類と大別されます。
開発データベース上のバージョン
開発データベース上では、MAXで「有効」と「修正」と2バージョンが存在います。
- 有効バージョン
有効バージョンは現在のSAP環境に有効になっているバージョンというもので、端末に問わず、プログラムを実行する際に、このバージョンが利用されます。 - 修正バージョン
修正バージョンは現在修正中のステータスが格納されます。
有効化すると、修正バージョンのステータスを持って有効バージョンが上書きされると同時に、修正バージョンが削除されます。 有効化した後に、再修正が発生しない限り、開発データベースに有効バージョンのみで、修正バージョンが存在しない状態になります。 修正バージョンでもすべてのユーザに見えます。
バージョンデータベース上のバージョン
バージョンデータベース上のバージョンは以下のようなものがあります。
カテゴリ | 内容説明 |
---|---|
““ | 依頼がリリースされた時点で登録されたバージョン |
I | インポート中に登録されたバージョン |
S | システム依頼 ( 修正または仮修正に取り込む前のバックアップコピー用など)により登録されたバージョン |
U | 任意の時点で ( 中間バージョンとして) ユーザ依頼により登録されたバージョン。依頼がリリースされるとこれらのバージョンは削除され、“ “ バージョンと置換されます。 |
バージョンの登録
バージョンの登録はシステムによる自動登録とユーザによるマニュアル登録の2種類があります。
- システムによる自動登録
バージョン管理の目的はリポジトリオブジェクトのすべての変更履歴を記録することです。 そのため以下のようなタイミングで自動的にバージョンが登録されます。- リポジトリオブジェクトが変更される前
変更されたそれぞれのオブジェクトが変更依頼に入力された時点 バージョン管理の最新バージョンが有効でなければ、このオブジェクトのバージョンは、オブジェクトが変更される前にバージョン管理に保存されます。 このようなバックアップバージョンはバージョン概要に「 S 」 または 「 I 」で示されます。 - 変更依頼のリリース時
変更されたオブジェクトのある変更依頼をリリースすると、バージョンが登録されます。 依頼番号は関連バージョンのバージョン概要に表示されます。
- ユーザによるマニュアル登録
自動的に登録されたバージョン以外にも、任意の時点で仮バージョンを登録することもできます。 それには、リポジトリオブジェクト更新トランザクションの バージョン登録機能を使用します。 また、これらの仮バージョンを使用して、仮バージョンが有効化された後でもオブジェクトの前バージョンを復元することもできます。 依頼がリリースされると、仮バージョンは削除され、その時点で有効なバージョンと置換されます。
バージョンの照会、使用
バージョン管理機能は、オブジェクトナビゲータ ( SE80 )、移送オーガナイザ(SE01)といったトランザクションに組み込まれており、それを利用して下記のようなことができます。
- バージョンの一覧表示
- 指定バージョンの内容表示
- 指定された二つバージョンの比較
変更依頼
ローカルオブジェクトは変更履歴が取られない以外に、リポジトリオブジェクトの変更は全て変更依頼に記録されます。 変更依頼は依頼と略称することができ、必ずしも移送依頼に限ることがありません。
依頼タイプ
依頼は依頼タイプによって下記のように分類することができます。
- ローカル変更依頼
ローカル変更依頼のリリースは、移送ファイルが作成されないため、移送は不可能です。 - 移送可能変更依頼(ワークベンチ依頼)
リポジトリオブジェクトを変更すると、ワークベンチ依頼を指定するためのクエリウィンドウが表示されます。変更依頼にオブジェクトを割り当てている場合は、変更のみを保存することができます。
通常、ワークベンチ依頼とそのタスクは、全クライアントのリポジトリオブジェクトとカスタマイジングへの変更の記録に使用されます。ただし、クライアント依存カスタマイジングを取り込むこともできます。
リポジトリオブジェクトへの変更を移送するかどうかは、そのオブジェクトのパッケージの現行 SAP システムからの移送ルートが定義されているかどうかによって決まります。このシステム設定から、変更依頼が移送可能か、また変更依頼がどの対象システムに移送されるかが自動的に判断されます。 - 移送可能変更依頼(カスタマイジング依頼)
カスタマイジング依頼では、1クライアント(依頼のソースクライアント) で行われたクライアント依存のカスタマイジング設定が記録されます。
クライアントのカスタマイジング作業での変更の自動記録は、クライアントごとに クライアント制御を使用して有効化または無効化することができます。自動記録が有効な場合は、カスタマイジング設定を変更するとクエリウィンドウが表示され、カスタマイジング依頼を指定するように要求されます。
カスタマイジング依頼が移送されるかどうかは、ワークベンチ変更依頼と同様に、入力されるオブジェクトには 依存しません。 SAP システム ( 拡張移送制御を使用する場合はクライアント) のカスタマイジング依頼は、システム設定に応じてすべて移送可能またはすべてローカルになります。変更依頼が移送可能かどうか、移送可能な場合はどの対象システムに移動するかは、 標準移送レイヤ によって自動的に判断されます。ただし、この設定はマニュアルで変更できます。
依頼ステータス
修正可能かどうか、リリース済みかどうかによって、依頼ステータスが下記の二つに分けられます。
- 修正可能(未リリース)
- リリース済(修正不可)
タスク
タスクは依頼の下位要素であり、ユーザ名で表されます。 タスクタイプは下記の二つがあります。
- 修正
- 仮修正
依頼の作成
SE01で移送オーガナイザで新たな移送依頼を登録することができます。 なお、プログラム改修などの場合、既存の依頼を選択や新たな依頼を作成するウィザードが提示される場合もあります。
依頼へのオブジェクトの取り込み
依頼へのオブジェクトの取り込みは以下のようなパターンがあります。
- 完全自動
変更は自動的に依頼に記録されます。 プログラムやテーブル構造などの変更はこのパターンに分類されます。 - マニュアル
オブジェクトを変更するトランザクションの一つの機能として動作します。 以下のようなオブジェクトはこのパターンに分類されます。- テーブルデータ SE16 データブラウザ画面で「テーブルエントリ→エントリ転送」機能を利用
- 翻訳 SLXT
- ロール PPFG
- 完全マニュアル
変更対象オブジェクトのオブジェクトディレクトリを指定、全てのオブジェクトはこの方法で依頼に記録することができます。
ツール
- SE01 移送オーガナイザ
以下の機能が含められています。- 依頼の登録、削除、マージ、属性変更、リリース及び一覧照会など
オブジェクトの編集により、依頼を登録することもできます - タスクの登録、削除、属性変更、リリース及び一覧照会など
オブジェクトの編集により、依頼にタスクを登録することもできます - オブジェクトの追加、削除、バージョンの照会など
オブジェクトの編集により、自動的に追加されることがあります。
- SE03 移送オーガナイザツール
このトピックでは、NetWeaver ABAP Platformの移送管理システム(Transport Management System,TMS)の仕組みを取り上げて説明します。
移送管理システムの構成
移送ドメイン
移送ドメイン(transport domain)は、移送を一元管理するすべてのABAPシステムで構成されます。移送ドメイン内では、すべてのシステムに一意のシステムIDを設定し、これらのシステムから1つのシステムのみが移送ドメインコントローラとして指定されます。 デフォルトの移送ドメイン名は DOMAIN_<SID> (<SID> はドメインコントローラのシステムID) で設定されます。 また、移送ドメインには、1つ以上の移送グループが含まれます。
移送ドメインコントローラ
移送ドメインコントローラ(transport domain controller)は、移送ルートや RFC 接続の設定など、移送ドメイン全体に関する設定を管理します。 通常は、本稼動システムまたは品質保証システムをドメインコントローラとして設定します。ドメインコントローラのシステム負荷は小さく、負荷が増えるのは TMS 設定変更時のわずかな時間だけです。 ドメインコントローラとしての役割をもつ ABAPシステムが稼動していないと、TMS 設定を変更することはできません。
移送グループ
移送グループとは、共通移送ディレクトリを共有する1つ以上のシステムで構成されるものです。
移送ディレクトリ
移送ディレクトリとは、移送データのファイルを保管するために移送グループで使用する共通ディレクトリのことです。 移送グループはこのディレクトリを使用して、すべてのエクスポートとインポートし、すべての移送はこのディレクトリで実行する必要があります。
移送ディレクトリのモデルサブディレクトリ構成は以下にようになります。 共通移送ディレクトリのサブディレクトリ
- bin
tpとTMSの設定ファイル - buffer
各システムの移送バッファ - data
エクスポートされたデータ - cofiles
コマンドファイルまたは移送依頼情報ファイル - log
移送ログ、トレースファイル、統計。 - tmp
一時データとログファイル - actlog
全タスクと全依頼のアクションログ - sapnames
各SAPユーザの移送依頼に属する情報 - EPS
SAPサポートパッケージのダウンロードディレクトリ
移送ルート
移送ルート(Transport Route)は、ランドスケープを構成するSAPシステム(「開発システム」「検証システム」「本稼働システム」)間の移送順序を指定したものです。移送ルートは、コンソリデーションルートまたはデリバリルートのいずれかのタイプです。
標準的な3 システムランドスケープの移送ルートは以下のとおりです。
- コンソリデーションルート
コンソリデーションルートは、開発システムと品質保証システムを接続します。。 自動的に作成される移送レイヤの名称は、Z<SID> (<SID> は開発システムのシステム ID)となります。 - デリバリルートは
デリバリルートは、品質保証システムと本稼動システムの間に作成されます。
開発システムでは、コンソリデーションルートに対応する (標準) 移送レイヤとリンクしているパッケージのオブジェクトに変更を加えた場合、その変更は変更依頼に記録され、品質保証システムを経て本稼動システムに移送されます。
SAP社が提供するオブジェクト(=標準オブジェクトと呼ぶ)への変更は、変更依頼に「仮修正」属性のタスクとして記録されます。この場合、移送レイヤとして“SAP”を使用することを除いて、他のオブジェクトの場合と同じ方法で移送することができます。
移送レイヤ
移送レイヤは、リポジトリオブジェクトの開発/変更を実施するシステムおよび、該当オブジェクトの移送先システム(品質保証システムや本運用システムなど)を定義します。
リポジトリオブジェクトは特定の「パッケージ」に属し、「パッケージ」に「移送レイヤ」が割り当てられます。
同じABAPシステムで開発され、同じ移送ルートで移送された開発プロジェクトは、すべてまとめられて 1 つの移送レイヤ となります。
オブジェクトの移送属性
各リポジトリオブジェクトのオブジェクトタイプには、以下のようなさまざまな移送属性があります。
クライアント非依存オブジェクト
リポジトリオブジェクトおよびクライアント非依存カスタマイジングオブジェクトがあります。
各リポジトリオブジェクトには、 オブジェクト・ディレクトリ・エントリがあります。移送属性もその中に登録されます。
パッケージ
オブジェクトを登録する時に、パッケージを指定するように要求されます。パッケージは移送レイヤに割り当てられます。 TMSで、現在のシステムからのコンソリデーションルートが移送レイヤに定義されていると、オブジェクトは移送可能な変更依頼のタスクに記録されます。 TMSで、現在のシステムからのコンソリデーションルートが移送レイヤに定義されていない場合、オブジェクトは ローカルな変更依頼に属するタスクに記録されます。
変更依頼が移送可能な場合、依頼の対象はオブジェクトのコンソリデーション対象と同じです。
マスタシステム
オブジェクトのマスタシステムは、そのオブジェクトが登録されたオリジナルシステムであり、開発と修正のためのオブジェクトの編集もこのシステムで行います。
オブジェクトは、1 つのシステムにのみオリジナルが存在します。 SAPから提供されたオブジェクト の場合は、オリジナルのシステムはSAP側に保存されています。カスタマシステムにおけるSAP標準のオブジェクトはすべてコピーとなります。この原則は、開発システム、およびそれに続くすべてのシステムにも適用されます。
独自のアプリケーションを作成する場合には、作成するオブジェクトは、その開発システムに存在するものがオリジナルになります。 開発したものを変更依頼に割り当てる場合には、タイプを開発/修正となります。 この依頼によって、開発システムから次のシステムへオブジェクトが移送されます。
オリジナルに対して変更を加えることを修正といいます。 これらの変更は、タスクのタイプが開発/修正である変更依頼に記録されます。 コピー(オリジナルシステム以外のオブジェクト) に対して変更を加えると、その変更は、 仮修正のタスクに記録されます。 SAP オブジェクトに対する仮修正は、モディフィケーションと呼ば れます。
クライアント依存オブジェクト
カスタマイジングオブジェクトのみです。
クライアント依存のカスタマイジングオブジェクトは、 カスタマイジング依頼に属するタスクに記録されます。 TMSで、現在のシステムからのコンソリデーションルートが現在のシステムまたはクライアントの標準移送レイヤに定義されている場合、オブジェクトは 移送可能なカスタマイジング依頼に属するタスクに記録されます。
TMSで、現在のシステムからのコンソリデーションルートがシステムまたは現在のクライアントの標準移送レイヤに定義されていない場合、オブジェクトは移送対象のないカスタマイジング依頼のタスクに記録されます。
移送処理
移送単位
NetWeaver ABAP Platformにおける変更はすべて依頼/タスクにより管理されます。変更が移送可能な場合に、依頼は変更の移送(リリース)単位となります。タスクは依頼よりも下位レベルに位置し、依頼のなかではユーザ名で表されます。
移送の流れ
前述の移送管理システムのモデル構成を例として移送の流れを説明します。
- 開発機DEVで依頼をリリース
依頼の各タスクがリリースされたら、依頼自体もリリース可能になります。
依頼がリリースされたら、移送分が移送ディレクトリにExportされます。 - 品証機QTSTに移送をインポート
- 移送を移送グループ1の移送ディレクトリから移送グループ2の移送ディレクトリにコピー
- 品証機QAS2に移送をインポート
- 本番機PRODに移送をインポート
ツール
- STMS 移送管理システム
移送管理システム機能には以下の機能が含められています。- 移送ドメインにおけるSAPシステムの役割の定義
- 移送ルートの設定
- 移送ツールプログラム(tp)のパラメータプロファイルの設定
- 移送ドメイン内のすべてのSAPシステムのインポートキューの表示
- 品質保証システム(QA)の品質保証/承認手続の定義
- インポートキューにある移送依頼のインポートのスケジュール
- 共通移送ディレクトリを使用しない、システム間の移送の実行
- SE01 移送オーガナイザ(拡張ビュー)
移送オーガナイザも変更オーガナイザもこの一つのトランザクションに統合されています。 - SE03 移送オーガナイザツール
このトピックでは、NetWeaver ABAPリリース7.0 (SAP NetWeaver 2004s)以降から導入された新しいテクニックの拡張フレームワークを取り上げてそれぞれ説明します。
拡張フレームワークとは
拡張フレームワーク(Enhancement Framework)とは、、従来の拡張テクニック(カスタマExitやクラシックBAdiなど)をオブジェクト指向の手法で改良したフレームワークです。 拡張フレームワークでサポートされる拡張仕組は、「BAdiによるオブジェクトプラグイン」と「Enhancement Optionによるソースコードプラグイン」に大別します。 ここのBAdiは従来のクラシックBAdiと区別して、新規BAdiと呼ばれます。クラシックBAdiから新規BAdiに自動的に変換することができます。
拡張フレームワークの構成
拡張フレームワークを構成しているコンポーネントには下記のようなものがあります。 •Enhacement Spot •Enhancement Implementaion •Enhancement Option
Enhacement Spot
Enhacement Spotは、拡張が実装できる位置を管理します。 オブジェクトプラグインとしてのEnhacement Spotは明示的に作成しなければならないほか、ソースコードプラグインとしてのEnhacement Spotは、Enhancement Optionを作成する際に一緒に作成されます。 オブジェクトプラグインEnhacement Spotの例ソースコードプラグインEnhacement Spotの例
Enhancement Implementaion
Enhancement Implementaionは、拡張実装を表します。オブジェクトプラグインとしてのBAdiによる拡張実装と、ソースコードプラグインとしてのEnhancement Optionによる拡張実装とも含められます。
Enhancement Option
ソースコードプラグイン を記述する位置はEnhancement Option によって管理されています。 Enhancement Option には、「ソース中の位置」「拡張タイプ(動的/静的、Point/Section)」などの属性があります。
Enhancement Option には、明示的なものと暗黙的なものがあります。 暗黙的なものとは、すべてのリポジトリオブジェクトにあらかじめ組み込まれたもので、Enhancement Spot を必要としません。 明示的なものとは、開発者が独自に作成するもので、Enhacement Point文やEnhancement Section文などを使用し、明示的に作成位置を指定します。 Enhancement Point は「挿入型」の拡張で、指定した行位置に拡張コードが挿入されます。 Enhancement Section は「置換型」の拡張で、指定した行範囲のコードが拡張コードで置換されます。
拡張の定義
拡張をサポートさせるには、拡張できるようにさせたいソースコードに事前に拡張の仕掛けを組み込む必要があります。 拡張フレームワークには以下三つの拡張方法が用意されています。
- BAdiによる拡張
- 明示的Enhancement Optionによる拡張
- 暗黙的Enhancement Optionによる拡張
「暗黙的Enhancement Optionによる拡張」は、サブルーチンや、汎用モジュールといったリポジトリオブジェクトのソース実装の開始及び終了の場所に全て予め組み込まれていますので、個別定義する必要がありません。
BADIによる拡張仕掛けを作成
以下の手順で、BADIによる拡張仕掛けを作成することができます。
- クラスビルダでBAdi用インタフェースを作成
- Enhancement Spotを作成
SE80を利用します - Enhancement Spot Defineを作成
SE80を利用します
Create BAdiを選択し、先ほど作成済のBAdi用インタフェースを指定 - 拡張するソースコードにGET BADI、CALL BADIを実装
明示的Enhancement Optionによる拡張仕掛けを作成
以下の手順で、明示的Enhancement Optionによる拡張仕掛けを作成することができます。
- 拡張するソースコードにEnhancement-Point文又はEnhancement-Sectionを記述
- 保存してウィザードに従いEnhancement Optionを作成
Enhancement Optionを管理するEnhancement Spotも同時に作成
主な手順
準備
オブジェクトキーの入手
対象となるオブジェクトの修正にはオブジェクトキーと呼ばれる特殊な キーワードが必要となります。
オブジェクト修正
SE37やSE38、SE11などを利用して、オブジェクトを修正します。
このとき表示されるオブジェクト名を OSS で登録し、その結果取得された アクセスキーを入力します。 これはシステム(インストール)が異なると同じバージョンでも値が変わり ますので、毎回取得する必要があります。 また確認メッセージが表示されます。
移送
参考
カスタマ開発に利用できる標準機能の抜粋を以下の表で示します。 おもに以下のように分類することができます。
- ABAPディクショナリ
- コーディング
- テスト
- バッチインプット
- JOB
- 分析
- 外部OSコマンド
- 帳票/レポート系
Trcd | 機能 | 目的 | |
---|---|---|---|
GRR3 | レポートペインタ照会 | レポートペインタを照会、テスト実行できる。(登録がGRR1,変更がGRR2) | |
SAAB | 有効化可能なブレークポイント | 関連性のあるプログラムのテストをまとめて実行するために定義できる。 | |
SAMT | ABAP プログラム一括処理 | パッケージ(旧名称:開発クラス)の登録をすることができる | |
SCOV | ABAP カバレージアナライザ | - | |
SCI | コードインスペクタ | コーディング規約(独自設定可能)チェックや、代表的なパフォーマンスに問題がある記述方法などのチェックをすることができる | |
SCII | コードインスペクタ: インスペクション | コードインスペクタを手っ取り早く使いたいときはコチラ | |
SE21 | パッケージビルダ | パッケージ(旧名称:開発クラス)の登録をすることができる | |
SE24 | クラスビルダ | - | |
SE30 | 実行時間分析 | 分析ツール | |
SE33 | 汎用モジュールビルダ | - | |
SE37 | 汎用モジュールビルダ | - | |
SE38 | ABAPエディタ | - | |
SE39 | ABAP画面分割エディタ- | - | |
SE41 | メニューペインタ | - | |
SE43 | 分野メニュー | - | |
SE51 | スクリーンペインタ | - | |
SE55 | 拡張テーブル更新モジュール生成 | - | |
SE63 | 翻訳 | 未翻訳の部分や翻訳が間違っている場合、また独自のテキストに変更したい場合、翻訳機能を使用する。ただし、翻訳した後にサポートパッケージやnoteなどを適用した場合、標準の文字列に戻ってしまう場合もある。翻訳したテキストを移送したい場合、プログラム:RSLTEXPOから移送依頼を作成する(RSLTEXPOのウィザードを使用した場合、移送する対象のテキスト~移送依頼作成~エクスポートまで自動的におこなうので注意) | |
SE71 | フォームペインタ | SAPSCRIPTで帳票のフォームを作成できる。 | |
SE80 | ABAPワークベンチ | プログラムIDに関係するオブジェクトをまとめて管理できる | |
SE81 | アプリケーション階層:照会 | - | |
SE84 | リポジトリ情報システム | - | |
SE91 | メッセージ更新 | メッセージ更新 プログラムなどで使用/出力する定型メッセージを設定する。1つのメッセージクラスに1000個のメッセージが設定可能。 | |
SE93 | トランザクション更新 | トランザクションコードを登録/変更することができる | |
SFP | フォームビルダ | Adobe Acrobat(PDF)を使用したインタラクティブフォーム(Interactive forms )やPDF-Based Printを定義することができる。 | |
SHD0 | トランザクション/画面バリアント | トランザクションバリアントの管理 | |
SHDB | トランザクションレコーダ | 別名:バッチインプットレコーダ。トランザクションを実行する動作を記録し、バッチインプットセッションやプログラムを作ることができる。 | |
SM35 | バッチインプット:セッション一覧 | 記録したバッチインプットセクションを管理。実行/エラー照会など管理できる | |
SM35P | バッチインプット:ログ一覧 | - | |
smartforms | smartforms | - | |
SMAT | ABAPプログラムセット処理 | 関連性のあるプログラムのテストをまとめて実行することができる。拡張構文チェックなどをプログラムセット(条件を指定したグループ)でまとめてチェックすることができる | |
SNRO | 番号範囲オブジェクト更新 | 番号範囲オブジェクトの定義をすることができる | |
SQVI | クイックビューア | SAPクエリの個人用。INNER JOINレベルまでのテーブル結合が可能。SAPクエリのサブセット版のような位置付け | |
S_ALR_87101287 | - | ABAP言語コマンド検索のための統計プログラム分析 | |
RPR_ABAP_SOURCE_SCAN | ABAPレポートソーススキャン | 指定した文字列をプログラムから検索することができる | |
RSANAL00 | ABAPプログラム分析 | 変数の型変換や変数一覧、サブルーチン、使用している汎用モジュールやインクルードプログラム、参照しているテーブルなどを分析してくれる。1行が72文字を超える行があるとショートダンプが発生するため、4.6より後に使えることはあまりないかも | |
RSABAPSC | - | バージョン管理: オブジェクト一覧によるリモート比較 | |
RSVCAD11 | - | - |
ABAPプログラムはリポジトリオブジェクトであり、リポジトリ情報システムに登録されます。
ABAPプログラムの分類
ABAPプログラムは以下のタイプがあります。
- タイプ1:レポートプログラム(公式では実行可能プログラムと呼ばれている)
- タイプM:ダイアログプログラム(公式ではモジュールプールと呼ばれている)
- タイプF:汎用グループ、汎用モジュールのコンテナとして、汎用モジュールを実装できる唯一のプログラムタイプ
- タイプK:クラスプール、クラス定義のコンテナ
- タイプJ:インタフェースプール、インタフェース定義のコンテナ
- タイプS:サブルーチンプール、サブルーチン用のコードコンテナ
- タイプT:タイププール、型定義のコンテナ
- タイプI:インクルードプログラム
Dynpro画面を持つことができるのは、タイプ1、タイプM、タイプFの三つのみです。
プログラムタイプによってプログラムの基本的な技術属性が決まるため、プログラム作成時にタイプを設定する必要があります。
プログラムの実行
ABAPプログラムは直接実行可能プログラムと直接実行不可能プログラムに分類されます。Windowsアプリケーション開発の世界でこれに相当するのはEXEとDLLの分類になります。
直接実行可能プログラム
ABAPプログラムを直接実行するには、二つの方法があります。
- トランザクションコードによる実行
トランザクションコードにより実行可能なプログラムは、レポートプログラム(TYPE 1)、ダイアログプログラム(TYPE M)、汎用グループ(TYPE F)があります。
プログラムでは、CALL TRANSACTION やLEAVE TO TRANSACTIONといった命令を使ってトランザクションを起動することができます。
直接実行可能プログラムはアプリケーションプログラムとも呼ばれます。
直接実行不可能プログラム
直接実行不可能プログラムは、プログラミングでしか呼び出されることができません。タイプによって呼び出す命令はそれぞれです。
- CALL FUNCTION : 汎用モジュール
- CALL METHOD : クラスのメソッド
- PERFORM : サブルーチン
ABAPディクショナリは、データベーステーブルの他にアプリケーションの中に取り扱うデータも含め、SapECCシステムで使用されているすべてのデータ定義を一元的に管理するリポジトリです。 SAP標準だけでなく、ユーザ定義のデータ型もABAPディクショナリに登録されます。 ABAPディクショナリで管理されるオブジェクトタイプは大きく分けると、データ型定義、データベースオブジェクト及びツール関連の三つに分類することができます、その中に最も重要なのはそれぞれ以下のものがあります。
- データ型定義:オブジェクトのデータ定義はABAPディクショナリにのみ存在する
- ドメイン
- データエレメント
- 構造
- テーブルデータ
- データベースオブジェクト:オブジェクトのデータ定義は基盤となるデータベースにも自動登録される
- テーブル
- ビュー
- 索引
- ツール関連: Dynpro 項目の編集に使用されるツールも提供
- 検索ヘルプ
- ロックオブジェクト
ABAPディクショナリオブジェクトは、ABAPプログラムから参照できます。実行時にABAPプログラムがロードされる際に、動的にABAPディクショナリオブジェクトの定義を展開されます。
以下にて各オブジェクトタイプをそれぞれ説明します。
データ型定義
ドメイン
ドメインは項目の技術属性を定義するものであり、項目のデータ型と長さを指定することで項目の値範囲を記述します。 例として、「性別」のドメインの定義を次に示します。
- 参考サイト:SAP Portal Help--ドメイン
データエレメント
データエレメントは意味属性であり、同じ意味を持つデータ項目は同じデータエレメントに割り当てるべきです。
下記の例を利用して、データ項目、データエレメント、ドメインの関連関係を説明します。
No | テーブル | 項目 | データエレメント | ドメイン | 技術タイプ |
---|---|---|---|---|---|
1 | VBRK(請求書:ヘッダデータ) | VBELN(請求伝票) | VBELN_VF(請求伝票) | VBELN(販売管理伝票番号) | CHAR(10) |
2 | VBRP(請求伝票: 明細データ) | VBELN(請求伝票) | |||
3 | AUBEL(販売伝票) | VBELN_VA (販売伝票) | |||
4 | VBAK(販売伝票:ヘッダデータ) | VBELN(販売伝票) |
上記のテーブルに示された四つのデータ項目とも10文字の伝票番号であるため、同じドメインのVBELNを割り当てられます。但し同じ伝票番号といっても、請求伝票の伝票番号と受注伝票の伝票番号と二種類があるため、データエレメントは二つに分かれることになります。同じデータエレメントのデータ項目であれば結合検索できます。
構造
構造は複数のコンポーネント(項目)で構成されます。構造を構成するコンポーネント(項目)は、基本データ型の他に別の構造やテーブルデータ型を参照することができます。
- 参考サイト:SAP Portal Help--構造
テーブルデータ
テーブルデータ型は、ABAPにおける内部テーブルをグローバルで定義します。
- 参考サイト:SAP Portal Help--テーブルデータ
データベースオブジェクト
テーブル
テーブルタイプ
ABAPディクショナリのテーブルには、3種類のテーブルタイプが存在します。
- 透過テーブル
例:「VBRK」KNA1(得意先マスタ)など、殆どのテーブルです。
透過テーブルは名前の通り、ABAPディクショナリと同じ構造で、DBテーブルが登録されています。
クラスタテーブルとプールテーブルは、透過テーブルと違って以下の特徴が存在します。
- NativeSQLでは使用できません。
- Select文で、外部結合・内部結合できません。
- キー項目以外の項目は、ほとんどが文字列結合された状態で1項目に登録されています。
- 上記理由により、キー以外の項目を抽出条件とするとパフォーマンス悪化の要因になります。
クラスタテーブルかプールテーブルかによって、プライマリキーがかさなっている複数テーブルが存在する場合、そのデータの登録方法は異なります。
- クラスタテーブル
プライマリキーで内部結合された状態で複数テーブルがまとまって登録されています。 - プールテーブル
プライマリキーで内部結合せず単純に複数テーブルがまとまって登録されています。
出荷クラス
テーブルには出荷クラス属性をもっております。出荷クラスは、インストールやアップグレード、クライアントコピー、およびカスタマシステム間移送の際に、テーブルデータの移送を制御します。出荷クラスは、拡張テーブル更新でも使用されます。
以下の出荷クラスがあります。
出荷クラス | 説明 |
---|---|
A | アプリケーションテーブル (マスタ及びトランザクションデータ) |
C | カスタマテーブル。データを更新するのはカスタマのみです。 |
L | 一時データ保管用テーブル |
G | カスタマテーブル。SAP が新規データレコードを挿入する場合がありますが、既存データレコードは上書きまたは削除されません。カスタマ名称領域をテーブル TRESC で定義する必要があります |
E | システムテーブル。カスタマ入力のための独自の名称領域があります。カスタマ名称領域をテーブル TRESC で定義する必要があります |
S | システムテーブル。データ変更のステータスは、プログラム変更と同一です |
W | システムテーブル。データは独自の移送オブジェクト (たとえば、R3TR、PROG、R3TR TABL など) を使用して移送されます |
技術設定
ABAPディクショナリに透過テーブルを定義する際、技術設定を更新する必要があります。
- データクラス
データクラスは、テーブルを格納するデータベースの物理領域 (ORACLE では表領域と呼ばれます) を論理的に定義したものです。データクラスを正しく選択すれば、テーブルを ABAPディクショナリで有効化したときに、そのテーブルがデータベースの正しい領域に自動的に登録されます。
データクラスには、マスタデータ、トランザクションデータ、組織データ、およびシステムデータなどがあります。さらに、カスタマデータクラス (USER、USER1) と呼ばれるデータクラスもあります。これは、カスタマ開発に使用されます。データベースに特別な保管域を割り当てる必要があります。- マスタデータ
マスタデータは、ほとんど変更されることのないデータです。マスタデータの例としては、名称、住所、および電話番号など、住所のデータが挙げられます。 - トランザクションデータ
トランザクションデータは、頻繁に変更されるデータです。たとえば、倉庫の在庫品目は購買発注が登録されるたびに変更されるデータです。 - 組織データ
組織データは、システムの導入時にカスタマイジングで定義され、その後はほとんど変更されることのないデータです。たとえば、国コードなどです。 - システムデータ
システムデータは、SapECCシステム自体が必要とするデータです。たとえば、プログラムソースなどです。
- バッファリング
テーブルのレコードをバッファに入れるかを定義します。 - サイズカテゴリ
テーブルの予想レコード数はいくつかを定義します。 - ログ記録
データレコードへの変更ログを記録するかを定義します。
- 参考サイト:SAP Portal Help--テーブル
ビュー
ビューとは、1つ以上の実テーブル表から任意のデータを選択し、それらをカスタマイズして表した仮想テーブルのことです。
- 参考サイト:SAP Portal Help--ビュー
索引
索引は、いくつかの項目に縮小されたデータベースのコピーということができます。索引を使用すると、特定の検索条件を満たすデータレコードをテーブルから検索することができます。
- 参考サイト:SAP Portal Help--索引
ツール関連
検索ヘルプ
検索ヘルプは、入力ヘルプ (F4 ヘルプ) を定義するための ABAPディクショナリオブジェクトです。
- 参考サイト:SAP Portal Help--検索ヘルプ
ロックオブジェクト
DBトランザクションレベルの排他制御はデータベース管理システムが用意していますが、それとは別に、SapECCは、独自のロックオブジェクトに基づいてアプリケーションレベルの排他制御を実現しています。
ロックオブジェクトにはロックするテーブルとロックするレコードのキー項目情報が定義され、ロックオブジェクトを有効にすると、汎用モジュールENQUEUE_<ロックオブジェクト名>とDEQUEUE_<ロックオブジェクト名>がロックを設定 / 解除するためにその定義から生成されます。
ロック設定汎用モジュールから掛けられたロックの情報はロックテーブルに格納されます。ロックテーブルは、エンキューサーバのメインメモリに存在するテーブルであり、システム内の現在のロックを記録します。ロック設定汎用モジュールでロックを掛けようとする前に、まずロックテーブルを参照して同じロックが既に存在する場合、エラー終了したり、待ち状態にしたりすることによって、排他制御の仕組みを実現します。
リポジトリ情報システムには、プログラム、データベーステーブルの定義、共通データ型の定義などのすべての開発オブジェクトが含まれます。 このため、開発オブジェクトはリポジトリオブジェクトとも呼ばれます。 リポジトリオブジェクトはクライアントには依存しません。そのため、すべてのクライアントで照会と利用が可能です。
リポジトリに格納される全ての開発オブジェクトは、アプリケーションコンポーネント→パッケージ→開発オブジェクトというカテゴリ構造で管理されます。
アプリケーションコンポーネント
アプリケーションコンポーネントはアプリケーション階層にツリー構造で表示されます。SE81でアプリケーション階層を照会することができます。
上記の図から馴染みのSDやMMなどのアプリケーションコンポーネント名称を読み取ることができます。アプリケーションコンポーネントは公式名称ですが、実際には別名の「モジュール」のほうがよく使用されています。
パッケージ
パッケージはリポジトリオブジェクトをカテゴリ化で管理できるようにする仕組みです。SE21(パッケージビルダ)でパッケージを照会又は定義することができます。 パッケージとは、意味的に関連する開発オブジェクトのコンテナであり、以前の開発クラスにかわったものです。1つのパッケージに、異なる開発オブジェクト(プログラム、テーブル、Dynpro、汎用モジュール、クラスなど)を含めることができます。。パッケージの特徴は、プロパティのネスト、インタフェース、可視性、およびアクセス管理にあります。。 パッケージはパッケージビルダ(トランザクションSPAK)を使用して作成および管理される。また、オブジェクト変更の記録と移送は、パッケージへの割当を使用する移送/修正システム(CTS)によっても管理されます。 以下の図でパッケージMBを例として取り上げます。
リポジトリオブジェクト
リポジトリオブジェクトの分類
リポジトリオブジェクトは主に以下のような大分類があります。
- ビジネスオブジェクト
- ABAPディクショナリ
- プログラム
- クラス
- WebDynpro
オブジェクトディレクトリ
オブジェクトディレクトリは、全てのリポジトリオブジェクトに基本属性情報を管理します。
リポジトリ情報システムに格納される各リポジトリオブジェクトはその種類の抜粋を下記の表で示します。
カテゴリ | 完全オブジェクト | サブオブジェクト |
---|---|---|
総合 | DEVC(パッケージ) | - |
ABAPディクショナリ | TABL(テーブル) | TABD(テーブル定義) |
TABT(テーブルの技術属性) | ||
TTYD(テーブルデータ型定義) | ||
TTYX(テーブルデータ型定義のテキスト) | ||
INDX(テーブル索引) | ||
TABU(テーブル内容) | - | |
VIEW(ビュー) | VIED(ビュー定義) | |
VIET(ビュー技術属性) | ||
DTEL(データエレメント) | DTED(データエレメント定義) | |
DOMA(ドメイン) | DOMD(ドメイン定義) | |
SHLP(検索ヘルプ) | - | |
ENQU(ロックオブジェクト) | ENQD(ロックオブジェクト定義) | |
プログラム | PROG(プログラム) | REPS(レポートソースプログラム) |
REPT(レポートテキスト) | ||
VARI(レポートプログラムのシステムバリアント) | ||
VARX(レポートプログラムのアプリケーションバリアント) | ||
FUGR(汎用グループ) | FUGT(汎用グループテキスト) | |
FUNC(汎用モジュール) | ||
CLAS(クラス) | CLSD(クラス定義) | |
CINC(クラスインクルード) | ||
CPRI(クラスプライベットヘッダ) | ||
CPRO(クラス保護ヘッダ) | ||
CPUB(クラスパブリックヘッダ) | ||
METH(メソッド) | ||
INTF(インタフェース) | INTD(インタフェース) | |
STVI(トランザクションバリアント) | - | |
SCVI(画面バリアント) | - | |
ENHC(複合拡張実装) | - | |
ENHO(拡張実装) | - | |
ENHS(拡張スポット) | - | |
WDYN(WebDynproコンポネント) | WDYC(コントローラ) | |
WDYD(定義) | ||
WDYV(ビュー) |
このトピックでは、以下の特徴から、NetWeaver ABAP Platformのデータベース・テクノロジーを説明します。
- ビジネスロジックもデータベース化
- クライアントによる論理分割
- ダイアログを跨る作業論理単位
ビジネスロジックもデータベース化
NetWearver ABAP Platformでは、ビジネスデータのみではなく、ビジネスロジックが反映されたアプリケーション及びパラメータ設定情報そのものもデータベースで統合的に管理されます。 NetWearver ABAP Platformのデータベースにおけるテーブルは、出荷クラスによって以下のように分類されます。
出荷クラス | 主に格納されるデータ |
---|---|
システムテーブル | プログラムといった開発オブジェク等 |
制御ロジック | ロジック制御情報等 |
カスタマイジングテーブル | ビジネス設定情報等 |
アプリケーションテーブル | マスタやトランザクションといった業務データ等 |
クライアントによる論理分割
SapECCシステムはクライアントによって論理的に分けられます。 実体となる1つのシステム上に、自由に複数のクライアントを定義できて、仮想的に複数のシステムが存在しているかのように扱うことができるのです。 各クライアントには、独自のデータ環境があり、すなわち、クライアントごとに独自のアプリケーションデータと殆どの設定データがあります。 あるクライアントに属するデータは、他のクライアントのユーザからアクセスできないような仕組みになっています。この仕組みを実現するためには、以下のような仕掛けが掛けられています
- クライアント依存テーブルに全てクライアント番号を第1PKとして持たせる
- OpenSQLによるDBアクセス処理で対象クライアント制御条件を裏で自動的に付加する
クライアントは3桁の数字で識別されます、インストール時のデフォルトクライアントは以下の通りです。
クライアント番号 | 用途 |
---|---|
000 | SAP標準クライアント |
001 | ドイツ版のカスタマイズサンプル |
066 | アーリーウォッチ用クライアント |
ダイアログを跨る作業論理単位
普通の意味では、アプリケーションの動作のうち、「ある意味を持った一連の処理のまとまり」のことをトランザクションといいます。そして、トランザクション制御とはこの一つのトランザクション内でデータの整合性が保たれるようにすることです。
SapECCでは、正式的な名称として、この「ある意味を持った一連の処理のまとまり」を「トランザクション」ではなく、「作業論理単位(Logical Unit of Work、略するとLUW)」と呼んでいます。関連がありますが、SapECCの「トランザクション」は、トランザクションコードを使用して開始するアプリケーションプログラムのことと定義されています。
SapECCでは、DBMSが実装済のトランザクション制御の他に、業務レベルの作業論理単位制御をサポートしています。この二つの制御は、それぞれDB LUWとSAP LUWに呼ばれます。
DB LUW
DB LUW は、データが常に整合性を持つようにするために、OracleやMSSQLなどのDBMS(データベース管理システム)が使用するメカニズムです。DBMS側では、一般的にこのDB LUWを「トランザクション」と呼びます。
SAPのDB LUWは、以下のように動作します。
- DB LUWは一つのワークプロセスの中に完結しなければなりません
- ワークプロセスが正常又は異常終了する際に、コミットされていないDB更新に対して、暗黙的なデータベースコミット又はロールバックを行います
- プログラムが汎用モジュールDB_COMMITを呼び出して明示的にデータベースコミットを行うことができます。
- プログラムがSAP LUWの命令(COMMIT WORK、ROLLBACK WORK)を呼び出してSAP LUWを終了する同時に、DB LUWも終了します。
- 開始されるときや、前のDB LUW がコミット又はロールバックで終了するときに、新しいDB LUWが開始されます。
- DB LUW内で実行されるDB変更はでDBロックを起こします、そのDBロックはLUWの終了に伴い、自動的に解放されます。
SAP LUW
DB LUWはデータベースに対して分割できない連続したデータ上の操作であり、完全に終了するか、まったく実行しないかのいずれかにする必要があります。SAP LUWは、システムに対して分割できない業務処理であり、その業務処理全体を完了するか、あるいはまったく実行しないかのいずれかにする必要があります。SAP-LUW は通常、複数のダイアログステップや複数のDB LUW に及ぶことがあります。 同じSAP LUW で発生したDBデータ変更要求は、全て最後にデータベースに反映されることになります。
SAP LUWの終了
SAP LUWは、DB LUWのように暗黙的に終了することがありません。「COMMIT WORK」や「ROLLBACK WORK」命令を発行して、明示的に終了させる必要があります。
SAP LUWの原子性
一つのSAP LUWの中の各更新は複数のダイアログステップに跨って発行されることがよくありますが、発行時に即時に実行されるとすれば、別々のDB LUWのDBデータ操作になりますので、作業単位としての原子性が完全に崩れてしまうことになります。
NetWeaverABAPでは、それらの更新を即時実行せずに、「更新依頼」オブジェクトを登録しておきます。「commit work」命令でSAP LUWがコミットされる際に、登録された「更新依頼」を一つのDB LUWで実行することにより、作業単位としての原子性を維持します。
SAP LUWの単位
SAP LUW毎に、違う更新キーが割り当てられます、更新依頼はその更新キーと一緒に更新キューに登録されますので、それにより同じSAP LUWのものかどうかを判断できます。
アプリケーションプログラム( TYPE 1、TYPE M)はそれぞれ別のSAP LUWをもっています。但し、トランザクション(機能)ではなく、「ダイアログモジュール」として起動される場合は、呼び出し元のSAP LUWで実行されることになります。
SAP LUWとDB LUW
NetWeaverABAPではワークプロセスごとに、固定DB接続1 つが割り当てられています。そのDB接続でDB LUWが実行されますので、ワークプロセスは常に一つのDB LUWと結び付いております。
一方、SAP LUWは論理的な単位を提供しています、SAP LUWにおける各更新依頼は、結局、DB LUWによりデータの変更をデータベースに反映しないといけないですが、そのDB LUWは新たに生成されるものではなく、更新依頼が実行されるワークプロセスの固有のDB LUWとなります。そのDB LUWで発行された別の即時DB更新がもしあれば、同時にコミットされます、なお、エラーが発生する場合も、一緒にロールバックされることになります。