峯文さんの投稿
税務に投稿されました 続きを読む

概要

法人税等には、法人税の他、都道府県民税、市町村民税および利益に関連する金額を課税標準とする事業税が含まれます

税率

税金の種類東京都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%

主な仕組

会社は「収益」から「費用」を引いて「利益」を求めますが、税法上は「益金」から「損金」を引いて「所得」を算出します。この収益と益金、費用と損金はイコールではありません。
会社の経営状態を調べるには、正確な情報が必要です。そのため、決算では「収益」「費用」「利益」を求めます。対して法人税の計算の場合は、課税の公正さや国の税務政策を優先する性質上、会社が費用だと考えるものでも、税法上は費用にならないというものが出てくるのです。よって益金と収益、損金と費用は同じにはならないのです。

申告書の構成

損金不算入

損金不算入となるのは以下のものがあります。

  1. 交際費等

  2. 減価償却の超過額など
  3. 事前に届け出のない役員給与・過大な役員報酬など
  4. 法人税や法人住民税(租税公課)
    別表五(二)租税公課の納付状況等に関する明細書
  5. 一定以上の寄付金

納税充当金

法人税の申告書の別表5⑴や別表5⑵には、「納税充当金」という文言が頻繁に出てきます。

ここの納税充当金とは、納税に用いるお金のことであり、簿記や会計用語にある「未払法人税」に該当します。

納税充当金の処理方法は下記の二つがあります。

繰入

納税充当金を繰り入れるとは

別表5⑵に繰入額と取崩額という欄があります。

損金経理により納税充当金に繰り入れるとは、会計的に言い換えると「法人税等を、相手勘定科目を未払法人税等として計上する」ということになります。

仕訳すると

法人税・住民税及び事業税 ××× / 未払法人税等 ×××

取り崩し

納税充当金を取り崩しにより納付するとは、会計的に言い換えると「未払法人税等を反対(借方)に仕訳して法人税等を納付する」ということになります。

仕訳で表すと

未払法人税等 ××× / 現金 ×××

BASISに投稿されました 続きを読む

このトピックでは、リポジトリ情報が格納される各システムテーブルを抜粋して説明します。

技術名称説明主要項目
TADIRリポジトリオブジェクトのディレクトリPGMIDプログラムID
OBJECTオブジェクトタイプ
OBJ_NAMEオブジェクト名称
SRCSYSTEM マスタシステム
DEVCLASSパッケージ
MASTERLANGマスタ言語
COMPONENTソフトウェアコンポーネント
技術名称説明主要項目
TAPLPアプリケーションディレクトリAPPL アプリケーションカテゴリ名
KTEXT アプリケーション短文テキスト
技術名称説明主要項目
DD02L DBテーブルTABNAME テーブル名
TABCLASS テーブルカテゴリ
BUFFERED バッファリング
CONTFLAG 出荷クラス
DD08LDBテーブル 外部キーTABNAME テーブル名
FIELDNAME 項目名
CHECKTABLE チェックテーブル
FRKART 依存度
DD05SDBテーブル 外部キー 項目TABNAME テーブル名
FIELDNAME 項目名
PRIMPOS 位置
FORTABLE外部キーテーブル
FORKEY外部キー項目
DD09LDBテーブル 技術設定TABNAME テーブル名
TABKATサイズカテゴリ
TABARTデータクラス
PUFFERUNGバッファタイプ
TRANSPFLAG透過フラグ
BUFALLOWバッファ可能
DD12LDBテーブル 二次索引SQLTABテーブル名
INDEXNAME索引 ID
DD17SDBテーブル 二次索引 項目SQLTABテーブル名
INDEXNAME索引 ID
POSITIONテーブル位置
FIELDNAME項目名
DESCFLAG降順
DD03LDBテーブル 項目TABNAME テーブル名
FIELDNAME項目名
POSITIONテーブル位置
KEYFLAGキー項目
MANDATORY必須項目
ROLLNAMEデータエレメント
CHECKTABLEチェックテーブル
INTTYPE ABAP データ型
DATATYPEデータ型
DD35LSAPテーブル項目 検索ヘルプ割当TABNAME テーブル名
FIELDNAME項目名
SHLPNAME検索ヘルプ名
DD36SSAPテーブル項目 検索ヘルプパラメータ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バッファ同期化のパラメータ
技術名称説明主要項目
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リリース日付
D020SDynpro 内容PROGプログラム名
DNUM  Dynpro番号
TYPE  Dynproタイプ 
FNUM 
DGRP
D021TDynpro キーワードテキストPROGプログラム名
LANG言語
FLDN項目名
DTXT画面のキーワードテキスト
VARIDバリアント一覧REPORTレポート名
VARIANTバリアント
VARIS選択画面へのバリアント割当REPORTレポート名
DYNNR Dynpro 番号
VARIANTバリアント
D342LGUIステータスPROGNAME プログラム名称
STATUS GUI ステータス
TYPEロードタイプ
D347TGUI表題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 トランザクションコード
SHDTVクライアント依存トランザクションバリアントTCODE トランザクションコード
TCVARIANT トランザクションバリアント
SHDTVCIUクライアント非依存トランザクションバリアントTCVARIANT トランザクションバリアント
TCODE トランザクションコード
SHDTVCIクライアント非依存トランザクションバリアントTCODE トランザクションコード
TCVARIANT トランザクションバリアント
TSTCトランザクションコードTCODEトランザクションコード
PGMNAプログラム
DYPNO Dynpro
--
技術名称説明主要項目
WDY_COMPONENTWeb Dynpro: ComponentCOMPONENT_NAMEコンポーネント名称
VERSIONプログラムステータス
TYPEタイプ
MODULE‗POOL_NAMEモジュールプール名
技術名称説明主要項目
MODSAP拡張プロジェクト(カスタマEXIT)NAME拡張プロジェクト名称
構成要素TYPタイプ
MEMBER拡張名称
DEVCLASSパッケージ
MODACT拡張実装(カスタマEXIT)NAME拡張名
TYP構成要素タイプ
MEMBER拡張
BADI_SPOTBAdi定義BADI‗NAME BAdi定義名称
ENHSPOTNAME拡張スポット名称
ENHOBJ拡張オブジェクトENHNAME拡張実装
VERSIONバージョン
OBJ_TYPオブジェクトタイプ
OBJ_NAMEオブジェクト名称

BASISに投稿されました 続きを読む

このトピックでは、移送に関わるシステムテーブルを抜粋して説明します。

概要

以下の表でテーブル一覧を示します。

No.カテゴリ技術名称名称説明
1システム構成TCETRAL移送レイヤ移送レイヤの情報を格納
2TCERELE移送レイヤの詳細-
3TMSCDOM移送ドメイン移送ドメインの情報を格納
4TMSCDES宛先宛先の情報を格納
5TMSCNFS移送グループ移送ドメインの情報を格納
6TMSCSYSシステムシステムの情報を格納
7変更管理E070依頼/タスクのヘッダ依頼/タスクのヘッダ情報を格納
8E070A依頼の属性依頼の属性情報を格納
9E070C依頼/タスクのソース/対象クライアント依頼/タスクのソースクライアントを格納
10E070L依頼/タスクの番号割当用索引最後に割り当てれた番号を格納
11E071依頼/タスクの明細変更されたオブジェクト情報を格納
12E071K依頼/タスクのキーエントリテーブルデータの場合のキー情報を格納
13TTOBJECTS翻訳関連に応じた移送オブジェクト-
14移送管理TSYIMPSTAT移送依頼インポートステータス-
15TMSBUFREQ移送バッファの移送依頼-

 TCETRALテーブル 

移送レイヤ、移送レイヤの情報を格納

 項目一覧 

No.PK技術名称名称説明
1VERSIONバージョン-
2TRANSLAYER移送レイヤ-

 TMSCDOMテーブル 

移送ドメイン、移送ドメインの情報を格納

 項目一覧 

No.PK技術名称名称説明
1DOMNAM移送ドメイン-
2 DOMCTLドメインコントローラ-

 TMSCDESテーブル 

宛先、宛先の情報を格納

 項目一覧 

No.PK技術名称名称説明
1RFCDESRFC宛先-
2LIMBOフラグ-
3 RFCTYPE接続タイプ-
4 RFCLIBFLG負荷分散-
5 RFCHOST対象ホスト-
6 RFCSERVサービス-
7 RFCCLIENTクライアント-
8 RFCUSERユーザ-
9 RFCAUTHパスワード-
10 DOMNAM移送ドメイン-

 TMSCNFSテーブル 

移送グループ、移送ドメインの情報を格納

 項目一覧 

No.PK技術名称名称説明
1DOMNAM移送ドメイン-
2NFSGRP移送グループ-

 TMSCSYSテーブル 

システム、システムの情報を格納

 項目一覧 

No.PK技術名称名称説明
1DOMNAM移送ドメイン-
2SYSNAMシステム名-
3LIMBOフラグ-
4 NFSGRP移送グループ-
5 DESADMRFC宛先-
6 INSTNOインストール番号-

E070テーブル

依頼/タスクのヘッダ

 項目一覧 

No.PK技術名称名称説明
1TRKORR依頼/タスク番号-
2 TRFUNCTIONタイプ依頼の場合、K(ワークベンチ依頼)やW(カスタマイジング依頼)といった分類が格納されます
3 TRSTATUSステータスD(修正可能)、R(リリース済)などがあります
4 TARSYSTEM移送対象-
5 KORRDEVカテゴリCUST(クライアント依存)、(クライアント非依存)があります
6 AS4USER所有者-
7 STRKORR上位移送-

 E070Lテーブル 

CTS: 依頼/タスクの番号割当用索引

 項目一覧 

No.PK技術名称名称説明
1LASTNUM識別-
2 TRKORR移送/タスク番号-

E070Lには何番から採番すれば良いのかという情報を保持しています。 開発機を何らかの理由で過去の状態に戻すと、移送依頼番号も、また若い番号から採番されてしまいます。 例えば、KDA0900100 まで採番された状態に戻ると、KDA0900100 から KDA0900200 までは2回繰り返されることになってしまい、それらの移送依頼をリリースしようとすると、移送ディレクトリに存在する過去の移送ファイルと重複してしまうため、エラーになってしまいます。 このような「移送依頼番号の重複」を回避するためには、移送依頼番号の情報を管理しているテーブル E070L の内容を移送依頼番号が重複しないような大きい番号に編集してあげればOKです。 ただ、このテーブルは編集不可に設定されているため、T-cd:SE16 では編集できません。 データベースレベルで直接 SQL を実行して編集します。 update E070L SET TRKORR = 'KDA0900300' WHERE LASTNUM = 'TRKORR';

E071テーブル

依頼/タスクのオブジェクトエントリ

 項目一覧 

No.PK技術名称名称説明
1TRKORR依頼/タスク番号-
2AS4POS明細行番号-
3 PGMIDプログラムID-
4 OBJECTオブジェクトタイプ-
5 OBJ_NAMEオブジェクト名-
6 LOCKFLAGロックステータス-

BASISに投稿されました 続きを読む

このトピックでは、権限に関わるシステムテーブルを抜粋して説明します。

概要 

カテゴリ技術名称名称説明
ユーザUSR01ユーザマスタレコード基本属性を定義
USR02ユーザログオンデータユーザログオンデータを定義
USR03ユーザアドレスデータユーザアドレスデータを定義
USR04ユーザ権限ユーザに割り当てられた権限プロファイル情報を格納
USR05ユーザマスタパラメータIDユーザパラメータ値を格納
USR21ユーザ名アドレスキーの割当ユーザのアドレスキー値を格納
ADR2電話番号 (アドレス管理)ユーザの電話番号を格納
ADR3FAX 番号 (アドレス管理)ユーザの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で照会・更新
USOBXUSOBTのチェック用テーブル-
USOBT_Cトランザクション>権限オブジェクト(カスタマ)-
USOBX_CUSOBT_Cのチェック用テーブル-

USR01テーブル

ユーザマスタレコード

 項目一覧 

No.PK技術名称名称説明
1BNAMEユーザユーザID
2 STCOD開始メニュー-
3 SPLD出力デバイス-
4 DATFM日付書式-
5 DCPFMISOコード-
6 LANGU言語-

 USR02テーブル 

ユーザログオンデータ

 項目一覧 

No.PK技術名称名称説明
1BNAMEユーザユーザID
2 BCODE初期パスワード-
3 USTYPユーザタイプ-

 USR04テーブル 

ユーザ権限

 項目一覧 

No.PK技術名称名称説明
1BNAMEユーザユーザID
2 NRPROプロファイル数-
3 PROFSプロファイル名リスト-

 USR05テーブル 

ユーザパラメータ

 項目一覧 

No.PK技術名称名称説明
1BNAMEユーザユーザID
2 PARIDパラメータID-
3 PARVAパラメータ値-

定義可能なパラメータ名はTPARAテーブルに定義されます。

AGR_DEFINEテーブル

ロール定義 

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール名称-
2 TEXTテキスト-

 AGR_FLAGSテーブル 

ロール属性

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール名称-
2FLAG_TYPE属性タイプ-
3 FLAG_VALUE属性値-

 AGR_HIERテーブル 

ロールメユー構造 AGR_HIERT

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール名称-
2OBJECT_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技術名称名称説明
1AGR_NAMEロール-
2COUNTERカウンタID-
3 PROFILEプロファイル-
4 GENERATED生成済-
5 PSTATEバージョン-

 AGR_1250テーブル

ロール権限データ(ヘッダ)

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール-
2COUNTERカウンタID-
3 OBJECT権限オブジェクト-
4 AUTH権限値-
5 MODIFIEDオブジェクトステータス-

 AGR_1251テーブル

ロール権限データ(項目値明細)

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール-
2COUNTERカウンタID-
3 OBJECT権限オブジェクト-
4 AUTH権限値-
5 FIELD項目名-
6 LOW-
7 HIGH-

 AGR_1252テーブル

ロール権限データ(組織要素) ロールが関連付ける組織(販売組織、購買組織、会社コードなど)の情報を格納します。 利用可能な組織の変数名がUSVARに定義されます。

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール-
2COUNTERカウンタID-
3 VARBL組織変数名-
4 LOW-
5 HIGH-

AGR_USERSテーブル

ユーザへのロール割当

 項目一覧 

No.PK技術名称名称説明
1AGR_NAMEロール-
2UNAMEユーザ-
3FROM_DAT開始日付-
4TO_DAT終了日付-
5 COL_FLAG集合ロールからの割当-

TOBCテーブル

権限クラス 

 項目一覧 

No.PK技術名称名称説明
1OCLSS権限クラス-

 TOBJテーブル 

権限オブジェクト

 項目一覧 

No.PK技術名称名称説明
1OBJCT権限オブジェクト名称-
2 FIEL1~FIEL0項目名-
3 OCLSS権限クラス-

 TACTZテーブル 

権限オブジェクトごとの有効アクティビティ

 項目一覧 

No.PK技術名称名称説明
1BROBJ権限オブジェクト名-
2ACTVTアクティビティ-

UST10Cテーブル

複合権限プロファイル

 項目一覧 

No.PK技術名称名称説明
1PROFN複合プロファイル-
2AKTPSバージョン-
3SUBPROF単一プロファイル-

UST10Sテーブル

単一権限プロファイル

 項目一覧 

No.PK技術名称名称説明
1PROFNプロファイル-
2AKTPSバージョン-
3 OBJCT権限オブジェクト-
4 AUTHユーザマスタ:権限名-

UST12テーブル

権限プロフィル権限値

 項目一覧 

No.PK技術名称名称説明
1OBJCT権限オブジェクト-
2AUTHユーザマスタ:権限名-
3AKTPSバージョン-
4FIELD権限項目-
5VON権限項目値-
6BIS権限項目値-

USR10テーブル

ユーザマスタ権限プロファイル

 項目一覧 

No.PK技術名称名称説明
1PROFNプロファイル名-
2AKTPSバージョン-
3 TYPタイプ-
4 NRAUTプロファイル/権限の数-
5 AUTHS権限-

USR12テーブル

ユーザマスタ権限値

 項目一覧 

No.PK技術名称名称説明
1OBJCT権限オブジェクト-
2AUTHユーザマスタ:権限名-
3AKTPSバージョン-
4 VALS権限値-

BASISに投稿されました 続きを読む

このトピックで例をあげてロールの設計と実装を説明します。

グループ各会社が同じクライアントIDでSAPシステムを共有しています。

BASISに投稿されました 続きを読む

このトピックでは、NetWeaver ABAPの権限チェックの実装を取り上げて説明します。

権限のチェックは、プログラムレベルのチェックとシステムレベルのチェックと2種類があります。

プログラムレベルのチェック

プログラムレベルでのチェックは、プログラムでAUTHORITY-CHECKを明示的に組み込む必要があります。 AUTHORITY-CHECK によって、ユーザに指定されたプロファイルが検索され、AUTHORITY-CHECKに指定された権限オブジェクトの権限をユーザが持っているかどうかが確認されます。検索された権限のいずれかが必要な値に一致する場合は、チェックは成功です。

システムレベルのチェック

システムレベルのチェックは、個別にプログラミングする必要がなく、システムより自動的に実施される権限チェックです。トランザクションやレポートプログラムが起動する際に、ユーザが該当機能を実行できる権限をもっているかどうかをシステムよりチェックされます。

トランザクション起動時

トランザクションが起動する際に、システムから以下のチェックは順に実施されます。

  1. トランザクションコードは有効か
    テーブルTSTCチェック
  2. トランザクションがシステム管理者によってロックされているか
    テーブルTSTCチェック
  3. S_TCODE権限チェック 
    ユーザが実行できるトランザクションコード一覧に該当トランザクションコードがはいっていないかをチェックされます。
  4. 追加権限チェック
    SE93で該当トランザクションに追加権限が割り当てられた場合、それがチェックされます。
  5. 割当権限チェック
    SU24で該当トランザクションに権限オブジェクトを割り当て且つチェックフラグを設定された場合、それがチェックされます

レポートクラスの開始

レポートに権限クラスを割り当てることによって、追加権限チェックを実行することができます。

RFC汎用モジュールの呼出

RFC汎用モジュールがRFCクライアントプログラムまたは他のシステムによって呼び出されると、呼び出されたシステムの権限オブジェクトS_RFC の権限チェックが実行されます。

権限設計は、業務運用でどこかの場面で何かの権限制御をかけなければならないという要件から始まります。 例として、「販売伝票一覧を出力するレポート処理で、ログオンユーザが権限を持っていない販売エリアの伝票を出力しない」という権限制御を取り上げます。

権限オブジェクトの定義

権限オブジェクトV_VBAK_VKOは、例の権限制御を実現できる標準権限オブジェクトです。

権限クラス権限オブジェクト権限項目
SDV_VBAK_VKOVKORG(販売組織)
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.

BASISに投稿されました 続きを読む

ユーザ

ユーザ毎に設定・保持されるデータは、ユーザマスタレコードと呼ばれます。

ユーザの基本データ

ユーザの基本データには、アドレスデータ、ログオンデータ、デフォルトデータがあります。

  • アドレス 
    姓・名や、職務、文書、連絡方法などの情報が含められます。
  • ログオンデータ 
    パスワードや有効期限などの情報が含められます。
  • デフォルト
    ログオン言語や、書式(数値、日付、時刻)、スプール制御などの情報が含められます。

ユーザパラメータ

ユーザパラメータによって、SAP項目に初期値が指定されます。項目を指定すると、初期値が自動的に表示されます。項目定義によって、そのエントリをユーザ入力値に置き換えることもできます。 例として以下のユーザパラメータを取り上げます。

  • BUK
    会社コード
  • EKO
    購買組織
  • WRK
    プラント

設定可能なパラメータはすべてシステムテーブルTPARAに登録されています。

ユーザとロール

ユーザに単一又は集合ロールを割り当てることができます。ユーザに複数ロールが割り当てられた場合は、結果は論理和になります。

ユーザと権限プロファイル

ユーザにマニュアル権限プロファイルを割り当てることができます。ユーザに複数権限プロファイルが割り当てられた場合は、結果は論理和になります。

ロールはユーザをグループ化する手段を提供します。 ロールは権限を割当する単位とするほか、ユーザメニュー構成を定義する単位にもなります。 ロールは、部署や役職に基づいてを設計することが多い。

ロールの分類

ロールには単一ロールと集合ロールがあります。 単一ロールには、ユーザの権限データとログオンメニューが含まれます。 集合ロールには、任意の数の単一ロールが含まれます。

ロールと権限

単一ロールの権限データから権限プロファイルが自動生成されます。ここの権限プロファイルは生成済権限プロファイルと呼ばれます。

標準機能から以下の権限管理ツールが提供されておいます。

  • SU01 ユーザ管理
    ユーザデータの登録、変更
  • PFCG ロール更新
    ロールの登録、変更
  • SUIM ユーザ情報システム

BASISに投稿されました 続きを読む

このトピックでは、NetWeaver ABAP(ECC)の権限制御のコンセプトや概要を取り上げて説明します。

権限とは

権限とは、システムのユーザに、ある範囲のことを正当に行うことができるものとして与えられている能力、またその能力が及ぶ範囲のことです。

ユーザに付与される権限には、以下の情報が定められます。

  • 対象
    権限でアクセス可能な対象(リソースや処理など)を定義します。
  • 範囲
    対象に対してアクセス可能な範囲を定義します。例えば、対象がファイルなら、読み取りができるかどうか、書き込めるかどうか、アクセスされる範囲を制御できます。
  • 期間
    権限の有効期間を指定します。

権限制御とは

権限制御とは、システムが、各ユーザに対して、事前に付与された権限に従って、処理の実行やアクセスの範囲を制御することです。

権限制御は、通常、OSやデータベース、アプリケーションなど各分野でそれぞれ実施されます。

  • OS
    アプリケーション、サービス、ファイルといったリソースのアクセス権限をユーザ・グループ毎に制御します。
  • データベース
    テーブル、ビューといったデータベースオブジェクト単位で、ユーザ・グループ毎にデータの照会、更新、作成、削除の権限を制御します。
  • アプリケーション
    アプリケーション側で必要に応じてビジネスレベルの権限制御を行います。

データベース側では、テーブルレベルのアクセス制御が仕組みに組み込まれているのは普通ですが、テーブルをさらに行レベルのアクセス制御をかけることは通常サポートされません。

例えば、各支店の売上データが格納されたテーブルがあるとします。各支店の従業員が所属支店のデータしか参照できないというセキュリティ要件はよくあるものですが、データベース側でカーバできないため、アプリケーション側で何らかの対応をしなければなりません。

NetWeaver ABAPは、アプリケーションレベルで独自の権限仕組みを導入ことにより、上記のビジネス要件に統合化したソリューションを提供します。

NetWeaver ABAPの権限制御を利用することにより、以下の機能を実現することができます。

  • ユーザ(グループ)毎に各機能の実行可否を制御
    例えば、経理部の人を購買システムの機能を実行できないように権限制御をかけることができます。
  • ユーザ(グループ)毎にアクセスデータ範囲を制御
    例として取り上げられた支店毎の制御をかけることができます。

NetWeaver ABAPの権限制御は以下の特徴があります。

  • できることの積み上げ
    できることのみを定義でき、できないことの定義はできません。これはシンプルという利点もありますが、膨大になりがち、管理が大変になるというデメリットがあります。
  • 言語レベルでサポート
    権限チェックするためのコマンド(authority-check) がABAP言語に組み込まれています。

Netweaver ABAPの権限コンセプトの構成要素は開発局面と運用局面に分けて整理することができます。

  • 開発局面
    プログラムを実装する際に、機能のセキュリティ要件を元に、実行時にどうな権限チェックをかけないといけないかを設計して、そのロジックをプログラムに組み込んでおく必要があります。 
    このような権限チェックの内容と方法を定義するのは権限オブジェクトという構成要素になります。
    権限オブジェクトはコア要素であり、システムにより一元管理されます。
  • 運用局面
    システムを構築する際に、 運用要件を元に、システムの利用者がどんな人いるか、どういうふうに権限をわけないといけないかを設計しておく必要があります。
    このような権限割当の単位を定義するのは権限プロファイルという構成要素になります。
    権限プロファイルに関連機能の権限オブジェクトの権限値が含められますので、機能にどんな権限オブジェクトがあるかを把握しておかなければなりません。
    ECC標準機能ではすでに数千の権限オブジェクトが組み込まれていますので、権限オブジェクトの把握は相当大変な作業になると想像できます。

権限オブジェクト

権限オブジェクトとは、権限制御でチェックしなければならない項目及びチェック方法を示す要素です。 権限オブジェクトの上位要素としては権限クラス、下位要素としては権限項目があります。

  • 権限クラス
    権限クラスは、権限オブジェクトの論理的な組合せで、たとえばアプリケーション(財務会計、人事管理など) に対応します。
  • 権限項目
    権限項目は、権限オブジェクトに構成する項目です。ABAPディクショナリで保存されたデータエレメントトに接続されています。

権限オブジェクトは、AND で結合された項目を 10 個までグループ゚化します。

権限オブジェクトが事前にプログラムロジックに組み込まれており、実行時に 実行可能なアクション(データの照会や登録、変更など)及び処理可能なデータの範囲を制御します。

権限

権限とは、権限オブジェクトの定義、すなわち、権限オブジェクトの各権限項目の許容値を組合せたものです。 権限により、権限オブジェクト項目値のセットにもとづいて、ECCシステムで特定のアクティビティを実行することができます。 権限を使用することで、権限オブジェクトの項目に対して任意の数の指定値または値範囲を項目に対して指定することができます。また、すべての値を許可したり、空の項目を許容値として許可したりすることもできます。 権限を変更すると、その権限を含む権限プロファイルを持つすべてのユーザが影響を受けます。

権限プロファイル

権限プロファイルとは、権限の集合で、ユーザにまとめて権限を割り当てる単位です。権限プロファイルは下記3種類があります。

  • 生成済権限プロファイル 
    生成済権限プロファイルは、ロールからロールの権限データで自動生成される権限プロファイルです。
  • マニュアル権限プロファイル
    マニュアル権限プロファイルとは、 ロールを使わずに明示的に作成される権限プロファイルです
  • 複合プロファイル
    複合プロファイルには、任意の数の権限プロファイルが含まれます。

各要素の関係

以下の図で権限コンセプトを構成する各要素の関係を示します。

ロールは厳密的に権限コンセプトの構成要素ではないですが、内部的に生成済権限プロファイルを自動生成するため、権限プロファイルとして利用することができます。 さらに、ロールはユーザメニュ構成を定義する単位にもなりますので、実際のシステム運用ではロールを利用してユーザの権限を管理するはほとんどです。

ロールは、ユーザをグルーピングする手段として、部署や役職に基づいて設計することが多い。

BASISに投稿されました 続きを読む

このトピックでは、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 移送オーガナイザツール

BASISに投稿されました 続きを読む

このトピックでは、NetWeaver ABAP Platformの移送管理システム(Transport Management System,TMS)の仕組みを取り上げて説明します。

移送管理システムの構成

以下の図で、移送管理システムのモデル構成を示します。

このモデルでは、3階層ランドスケープが一つのドメインと二つの移送グループで構成されます。次にその構成要素をそれぞれ取り上げて詳しく説明します。

移送ドメイン

移送ドメイン(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における変更はすべて依頼/タスクにより管理されます。変更が移送可能な場合に、依頼は変更の移送(リリース)単位となります。タスクは依頼よりも下位レベルに位置し、依頼のなかではユーザ名で表されます。

移送の流れ

前述の移送管理システムのモデル構成を例として移送の流れを説明します。

  1. 開発機DEVで依頼をリリース
    依頼の各タスクがリリースされたら、依頼自体もリリース可能になります。
    依頼がリリースされたら、移送分が移送ディレクトリにExportされます。
  2. 品証機QTSTに移送をインポート
  3. 移送を移送グループ1の移送ディレクトリから移送グループ2の移送ディレクトリにコピー
  4. 品証機QAS2に移送をインポート
  5. 本番機PRODに移送をインポート
  • STMS 移送管理システム
    移送管理システム機能には以下の機能が含められています。
    • 移送ドメインにおけるSAPシステムの役割の定義
    • 移送ルートの設定
    • 移送ツールプログラム(tp)のパラメータプロファイルの設定
    • 移送ドメイン内のすべてのSAPシステムのインポートキューの表示
    • 品質保証システム(QA)の品質保証/承認手続の定義
    • インポートキューにある移送依頼のインポートのスケジュール
    • 共通移送ディレクトリを使用しない、システム間の移送の実行
  • SE01 移送オーガナイザ(拡張ビュー)
    移送オーガナイザも変更オーガナイザもこの一つのトランザクションに統合されています。
  • SE03 移送オーガナイザツール

BASISに投稿されました 続きを読む

このトピックでは、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 は「置換型」の拡張で、指定した行範囲のコードが拡張コードで置換されます。

拡張をサポートさせるには、拡張できるようにさせたいソースコードに事前に拡張の仕掛けを組み込む必要があります。 拡張フレームワークには以下三つの拡張方法が用意されています。

  1. BAdiによる拡張
  2. 明示的Enhancement Optionによる拡張
  3. 暗黙的Enhancement Optionによる拡張

「暗黙的Enhancement Optionによる拡張」は、サブルーチンや、汎用モジュールといったリポジトリオブジェクトのソース実装の開始及び終了の場所に全て予め組み込まれていますので、個別定義する必要がありません。

BADIによる拡張仕掛けを作成

以下の手順で、BADIによる拡張仕掛けを作成することができます。

  1. クラスビルダでBAdi用インタフェースを作成
  2. Enhancement Spotを作成
    SE80を利用します 
  3. Enhancement Spot Defineを作成
    SE80を利用します
    Create BAdiを選択し、先ほど作成済のBAdi用インタフェースを指定
  4. 拡張するソースコードにGET BADI、CALL BADIを実装

明示的Enhancement Optionによる拡張仕掛けを作成

以下の手順で、明示的Enhancement Optionによる拡張仕掛けを作成することができます。

  1. 拡張するソースコードにEnhancement-Point文又はEnhancement-Sectionを記述
  2. 保存してウィザードに従いEnhancement Optionを作成
    Enhancement Optionを管理するEnhancement Spotも同時に作成

BASISに投稿されました 続きを読む

主な手順

準備

オブジェクトキーの入手

対象となるオブジェクトの修正にはオブジェクトキーと呼ばれる特殊な キーワードが必要となります。

オブジェクト修正

SE37やSE38、SE11などを利用して、オブジェクトを修正します。

次のようにオブジェクトキー要求があります。

このとき表示されるオブジェクト名を OSS で登録し、その結果取得された アクセスキーを入力します。 これはシステム(インストール)が異なると同じバージョンでも値が変わり ますので、毎回取得する必要があります。 また確認メッセージが表示されます。

移送

BASISに投稿されました 続きを読む

カスタマ開発に利用できる標準機能の抜粋を以下の表で示します。 おもに以下のように分類することができます。

  • ABAPディクショナリ 
  • コーディング 
  • テスト 
  • バッチインプット 
  • JOB 
  • 分析 
  • 外部OSコマンド 
  • 帳票/レポート系 
Trcd機能目的
GRR3レポートペインタ照会レポートペインタを照会、テスト実行できる。(登録がGRR1,変更がGRR2)
SAAB有効化可能なブレークポイント関連性のあるプログラムのテストをまとめて実行するために定義できる。
SAMTABAP プログラム一括処理パッケージ(旧名称:開発クラス)の登録をすることができる
SCOVABAP カバレージアナライザ-
SCIコードインスペクタコーディング規約(独自設定可能)チェックや、代表的なパフォーマンスに問題がある記述方法などのチェックをすることができる
SCIIコードインスペクタ: インスペクションコードインスペクタを手っ取り早く使いたいときはコチラ
SE21パッケージビルダパッケージ(旧名称:開発クラス)の登録をすることができる
SE24クラスビルダ-
SE30実行時間分析分析ツール
SE33汎用モジュールビルダ-
SE37汎用モジュールビルダ-
SE38ABAPエディタ-
SE39ABAP画面分割エディタ--
SE41メニューペインタ-
SE43分野メニュー-
SE51スクリーンペインタ-
SE55拡張テーブル更新モジュール生成-
SE63翻訳未翻訳の部分や翻訳が間違っている場合、また独自のテキストに変更したい場合、翻訳機能を使用する。ただし、翻訳した後にサポートパッケージやnoteなどを適用した場合、標準の文字列に戻ってしまう場合もある。翻訳したテキストを移送したい場合、プログラム:RSLTEXPOから移送依頼を作成する(RSLTEXPOのウィザードを使用した場合、移送する対象のテキスト~移送依頼作成~エクスポートまで自動的におこなうので注意)
SE71フォームペインタSAPSCRIPTで帳票のフォームを作成できる。
SE80ABAPワークベンチプログラムIDに関係するオブジェクトをまとめて管理できる
SE81アプリケーション階層:照会-
SE84リポジトリ情報システム-
SE91メッセージ更新メッセージ更新 プログラムなどで使用/出力する定型メッセージを設定する。1つのメッセージクラスに1000個のメッセージが設定可能。
SE93トランザクション更新トランザクションコードを登録/変更することができる
SFPフォームビルダAdobe Acrobat(PDF)を使用したインタラクティブフォーム(Interactive forms )やPDF-Based Printを定義することができる。
SHD0トランザクション/画面バリアントトランザクションバリアントの管理
SHDBトランザクションレコーダ別名:バッチインプットレコーダ。トランザクションを実行する動作を記録し、バッチインプットセッションやプログラムを作ることができる。
SM35バッチインプット:セッション一覧記録したバッチインプットセクションを管理。実行/エラー照会など管理できる
SM35Pバッチインプット:ログ一覧-
smartformssmartforms-
SMATABAPプログラムセット処理関連性のあるプログラムのテストをまとめて実行することができる。拡張構文チェックなどをプログラムセット(条件を指定したグループ)でまとめてチェックすることができる
SNRO番号範囲オブジェクト更新番号範囲オブジェクトの定義をすることができる
SQVIクイックビューアSAPクエリの個人用。INNER JOINレベルまでのテーブル結合が可能。SAPクエリのサブセット版のような位置付け
S_ALR_87101287-ABAP言語コマンド検索のための統計プログラム分析
RPR_ABAP_SOURCE_SCANABAPレポートソーススキャン指定した文字列をプログラムから検索することができる
RSANAL00ABAPプログラム分析変数の型変換や変数一覧、サブルーチン、使用している汎用モジュールやインクルードプログラム、参照しているテーブルなどを分析してくれる。1行が72文字を超える行があるとショートダンプが発生するため、4.6より後に使えることはあまりないかも
RSABAPSC-バージョン管理: オブジェクト一覧によるリモート比較
RSVCAD11--

BASISに投稿されました 続きを読む

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といった命令を使ってトランザクションを起動することができます。
  • プログラム名による実行
    SA38又はSE38でプログラム名により実行可能なプログラムは、レポートプログラム(TYPE 1)のみになります。バックグランドでも実行できるのもこのタイプのみです。
    プログラムでは、SUBMIT命令を使ってレポートプログラムを起動することができます。

直接実行可能プログラムはアプリケーションプログラムとも呼ばれます。

直接実行不可能プログラム

直接実行不可能プログラムは、プログラミングでしか呼び出されることができません。タイプによって呼び出す命令はそれぞれです。

  • CALL FUNCTION : 汎用モジュール
  • CALL METHOD  : クラスのメソッド 
  • PERFORM : サブルーチン

BASISに投稿されました 続きを読む

ABAPディクショナリは、データベーステーブルの他にアプリケーションの中に取り扱うデータも含め、SapECCシステムで使用されているすべてのデータ定義を一元的に管理するリポジトリです。 SAP標準だけでなく、ユーザ定義のデータ型もABAPディクショナリに登録されます。 ABAPディクショナリで管理されるオブジェクトタイプは大きく分けると、データ型定義、データベースオブジェクト及びツール関連の三つに分類することができます、その中に最も重要なのはそれぞれ以下のものがあります。

  • データ型定義:オブジェクトのデータ定義はABAPディクショナリにのみ存在する
    • ドメイン
    • データエレメント
    • 構造
    • テーブルデータ
  • データベースオブジェクト:オブジェクトのデータ定義は基盤となるデータベースにも自動登録される
    • テーブル
    • ビュー
    • 索引
  • ツール関連: Dynpro 項目の編集に使用されるツールも提供
    • 検索ヘルプ
    • ロックオブジェクト

ABAPディクショナリオブジェクトは、ABAPプログラムから参照できます。実行時にABAPプログラムがロードされる際に、動的にABAPディクショナリオブジェクトの定義を展開されます。

以下にて各オブジェクトタイプをそれぞれ説明します。

ドメイン

ドメインは項目の技術属性を定義するものであり、項目のデータ型と長さを指定することで項目の値範囲を記述します。 例として、「性別」のドメインの定義を次に示します。

データエレメント

データエレメントは意味属性であり、同じ意味を持つデータ項目は同じデータエレメントに割り当てるべきです。

下記の例を利用して、データ項目、データエレメント、ドメインの関連関係を説明します。

Noテーブル項目データエレメントドメイン技術タイプ
1VBRK(請求書:ヘッダデータ)VBELN(請求伝票)VBELN_VF(請求伝票)VBELN(販売管理伝票番号)CHAR(10)
2VBRP(請求伝票: 明細データ)VBELN(請求伝票)
3AUBEL(販売伝票)VBELN_VA (販売伝票)
4VBAK(販売伝票:ヘッダデータ)VBELN(販売伝票)

上記のテーブルに示された四つのデータ項目とも10文字の伝票番号であるため、同じドメインのVBELNを割り当てられます。但し同じ伝票番号といっても、請求伝票の伝票番号と受注伝票の伝票番号と二種類があるため、データエレメントは二つに分かれることになります。同じデータエレメントのデータ項目であれば結合検索できます。

構造

構造は複数のコンポーネント(項目)で構成されます。構造を構成するコンポーネント(項目)は、基本データ型の他に別の構造やテーブルデータ型を参照することができます。

テーブルデータ

テーブルデータ型は、ABAPにおける内部テーブルをグローバルで定義します。

テーブル

テーブルタイプ

ABAPディクショナリのテーブルには、3種類のテーブルタイプが存在します。

  1. 透過テーブル
    例:「VBRK」KNA1(得意先マスタ)など、殆どのテーブルです。
    透過テーブルは名前の通り、ABAPディクショナリと同じ構造で、DBテーブルが登録されています。
  2. プールテーブル
    例:「Annn」条件マスタや「T001T」カスタマイズテーブルなどなど、テーブルプールに割り当てられたテーブルのことです。テーブルプールには、複数プールテーブルが格納され、DB上は、テーブルプールにデータが登録されています。
    複数のプールテーブルのデータが、どのようにテーブルプールに登録されているかというとプールテーブルの1行1行が、それぞれテーブルプールの1行となっていて、内部結合ではなく、単純に複数のテーブルがまとまっているだけです。

  3. クラスタテーブル
    クラスタテーブルとは、例:「BSEG」会計伝票明細のようにテーブルクラスタに割り当てられたテーブルのことです。テーブルクラスタには、複数クラスタテーブルが割り当てられ、DB上は、テーブルクラスタにデータが登録されています。

クラスタテーブルとプールテーブルは、透過テーブルと違って以下の特徴が存在します。

  • NativeSQLでは使用できません。
  • Select文で、外部結合・内部結合できません。
  • キー項目以外の項目は、ほとんどが文字列結合された状態で1項目に登録されています。
  • 上記理由により、キー以外の項目を抽出条件とするとパフォーマンス悪化の要因になります。

クラスタテーブルかプールテーブルかによって、プライマリキーがかさなっている複数テーブルが存在する場合、そのデータの登録方法は異なります。

  • クラスタテーブル 
    プライマリキーで内部結合された状態で複数テーブルがまとまって登録されています。
  • プールテーブル 
    プライマリキーで内部結合せず単純に複数テーブルがまとまって登録されています。

出荷クラス

テーブルには出荷クラス属性をもっております。出荷クラスは、インストールやアップグレード、クライアントコピー、およびカスタマシステム間移送の際に、テーブルデータの移送を制御します。出荷クラスは、拡張テーブル更新でも使用されます。

以下の出荷クラスがあります。

出荷クラス説明
Aアプリケーションテーブル (マスタ及びトランザクションデータ)
Cカスタマテーブル。データを更新するのはカスタマのみです。
L一時データ保管用テーブル
Gカスタマテーブル。SAP が新規データレコードを挿入する場合がありますが、既存データレコードは上書きまたは削除されません。カスタマ名称領域をテーブル TRESC で定義する必要があります
Eシステムテーブル。カスタマ入力のための独自の名称領域があります。カスタマ名称領域をテーブル TRESC で定義する必要があります
Sシステムテーブル。データ変更のステータスは、プログラム変更と同一です
Wシステムテーブル。データは独自の移送オブジェクト (たとえば、R3TR、PROG、R3TR TABL など) を使用して移送されます

技術設定

ABAPディクショナリに透過テーブルを定義する際、技術設定を更新する必要があります。

  • データクラス
    データクラスは、テーブルを格納するデータベースの物理領域 (ORACLE では表領域と呼ばれます) を論理的に定義したものです。データクラスを正しく選択すれば、テーブルを ABAPディクショナリで有効化したときに、そのテーブルがデータベースの正しい領域に自動的に登録されます。
    データクラスには、マスタデータ、トランザクションデータ、組織データ、およびシステムデータなどがあります。さらに、カスタマデータクラス (USER、USER1) と呼ばれるデータクラスもあります。これは、カスタマ開発に使用されます。データベースに特別な保管域を割り当てる必要があります。
    • マスタデータ 
      マスタデータは、ほとんど変更されることのないデータです。マスタデータの例としては、名称、住所、および電話番号など、住所のデータが挙げられます。
    • トランザクションデータ 
      トランザクションデータは、頻繁に変更されるデータです。たとえば、倉庫の在庫品目は購買発注が登録されるたびに変更されるデータです。
    • 組織データ
      組織データは、システムの導入時にカスタマイジングで定義され、その後はほとんど変更されることのないデータです。たとえば、国コードなどです。
    • システムデータ
      システムデータは、SapECCシステム自体が必要とするデータです。たとえば、プログラムソースなどです。
  • 􀂄バッファリング
    テーブルのレコードをバッファに入れるかを定義します。
  • サイズカテゴリ 
    テーブルの予想レコード数はいくつかを定義します。
  • ログ記録 
    データレコードへの変更ログを記録するかを定義します。

ビュー

ビューとは、1つ以上の実テーブル表から任意のデータを選択し、それらをカスタマイズして表した仮想テーブルのことです。

索引

索引は、いくつかの項目に縮小されたデータベースのコピーということができます。索引を使用すると、特定の検索条件を満たすデータレコードをテーブルから検索することができます。

検索ヘルプ

検索ヘルプは、入力ヘルプ (F4 ヘルプ) を定義するための ABAPディクショナリオブジェクトです。

ロックオブジェクト

DBトランザクションレベルの排他制御はデータベース管理システムが用意していますが、それとは別に、SapECCは、独自のロックオブジェクトに基づいてアプリケーションレベルの排他制御を実現しています。

ロックオブジェクトにはロックするテーブルとロックするレコードのキー項目情報が定義され、ロックオブジェクトを有効にすると、汎用モジュールENQUEUE_<ロックオブジェクト名>とDEQUEUE_<ロックオブジェクト名>がロックを設定 / 解除するためにその定義から生成されます。

ロック設定汎用モジュールから掛けられたロックの情報はロックテーブルに格納されます。ロックテーブルは、エンキューサーバのメインメモリに存在するテーブルであり、システム内の現在のロックを記録します。ロック設定汎用モジュールでロックを掛けようとする前に、まずロックテーブルを参照して同じロックが既に存在する場合、エラー終了したり、待ち状態にしたりすることによって、排他制御の仕組みを実現します。

BASISに投稿されました 続きを読む

リポジトリ情報システムには、プログラム、データベーステーブルの定義、共通データ型の定義などのすべての開発オブジェクトが含まれます。 このため、開発オブジェクトはリポジトリオブジェクトとも呼ばれます。 リポジトリオブジェクトはクライアントには依存しません。そのため、すべてのクライアントで照会と利用が可能です。

リポジトリに格納される全ての開発オブジェクトは、アプリケーションコンポーネント→パッケージ→開発オブジェクトというカテゴリ構造で管理されます。

アプリケーションコンポーネントはアプリケーション階層にツリー構造で表示されます。SE81でアプリケーション階層を照会することができます。

上記の図から馴染みのSDやMMなどのアプリケーションコンポーネント名称を読み取ることができます。アプリケーションコンポーネントは公式名称ですが、実際には別名の「モジュール」のほうがよく使用されています。

パッケージはリポジトリオブジェクトをカテゴリ化で管理できるようにする仕組みです。SE21(パッケージビルダ)でパッケージを照会又は定義することができます。 パッケージとは、意味的に関連する開発オブジェクトのコンテナであり、以前の開発クラスにかわったものです。1つのパッケージに、異なる開発オブジェクト(プログラム、テーブル、Dynpro、汎用モジュール、クラスなど)を含めることができます。。パッケージの特徴は、プロパティのネスト、インタフェース、可視性、およびアクセス管理にあります。。 パッケージはパッケージビルダ(トランザクションSPAK)を使用して作成および管理される。また、オブジェクト変更の記録と移送は、パッケージへの割当を使用する移送/修正システム(CTS)によっても管理されます。 以下の図でパッケージMBを例として取り上げます。

リポジトリオブジェクトはSE84(リポジトリ情報システム)で検索できます。

リポジトリオブジェクトの分類

リポジトリオブジェクトは主に以下のような大分類があります。

  • ビジネスオブジェクト
  • 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(ビュー)

BASISに投稿されました 続きを読む

このトピックでは、以下の特徴から、NetWeaver ABAP Platformのデータベース・テクノロジーを説明します。

  • ビジネスロジックもデータベース化
  • クライアントによる論理分割
  • ダイアログを跨る作業論理単位

NetWearver ABAP Platformでは、ビジネスデータのみではなく、ビジネスロジックが反映されたアプリケーション及びパラメータ設定情報そのものもデータベースで統合的に管理されます。 NetWearver ABAP Platformのデータベースにおけるテーブルは、出荷クラスによって以下のように分類されます。

出荷クラス主に格納されるデータ
システムテーブルプログラムといった開発オブジェク等
制御ロジックロジック制御情報等
カスタマイジングテーブルビジネス設定情報等
アプリケーションテーブルマスタやトランザクションといった業務データ等

SapECCシステムはクライアントによって論理的に分けられます。 実体となる1つのシステム上に、自由に複数のクライアントを定義できて、仮想的に複数のシステムが存在しているかのように扱うことができるのです。 各クライアントには、独自のデータ環境があり、すなわち、クライアントごとに独自のアプリケーションデータと殆どの設定データがあります。 あるクライアントに属するデータは、他のクライアントのユーザからアクセスできないような仕組みになっています。この仕組みを実現するためには、以下のような仕掛けが掛けられています

  • クライアント依存テーブルに全てクライアント番号を第1PKとして持たせる
  • OpenSQLによるDBアクセス処理で対象クライアント制御条件を裏で自動的に付加する

クライアントは3桁の数字で識別されます、インストール時のデフォルトクライアントは以下の通りです。

クライアント番号用途
000SAP標準クライアント
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更新がもしあれば、同時にコミットされます、なお、エラーが発生する場合も、一緒にロールバックされることになります。

BASISに投稿されました 続きを読む

このトピックでは、NetWeaver ABAP Platformのプレゼンテーション・テクノロジーを説明します。

ABAPプログラムの画面技術は、後からWEB対応のWebDynproも追加されましたが、従来からDynproを使ってきました。SapECCシステムで利用されている標準画面は、全てDynproで構成されています。 Dynpro画面はSapGUIウィンドウに表示されます。SapGUIは、SapECCシステムへのユーザインタフェースです。SapGUIはABAPアプリケーションサーバと通信し、ABAPアプリケーションからレスポンスされたプレゼンテーションを表示し、またユーザからの入力を処理し、そのアクションをABAPアプリケーションへリクエストします。

SapGUIウィンドウ

一般的な SapGUIウィンドウは以下のようなUIパーツから構成されます。

  • メニューバー
  • システム機能バー
  • 表題バー
  • アプリケーションバー
  • Dynpro領域
  • ステータスバー

下記の図でSapGUIウィンドウのレイアウト構成を示します。

Dynproの構成要素

Dynproは主に、Dynpro属性、画面レイアウト、エレメント一覧、PBO、PAIから構成されます。

  • Dynpro属性
    Dynproが持つ基本情報です。Dynpro番号、Dynproタイプ(標準・従属画面・ダイアログボックス・選択画面)、後続Dynproなどがあります。
  • 画面レイアウト
    画面のレイアウト情報です。各UIエレメントの位置やサイズを定義します。
  • エレメント一覧
    Dynproが持っている各UIエレメントの詳細です。
  • PBO
    Process Before Output、Dynpro画面が表示される前の処理を行う処理ブロックです。
  • PAI
    Process After Input、Dynpro画面が表示され、ユーザがアクションを行った後の処理を行う処理ブロックです。

NetWearver ABAP Platformは、ABAPアプリケーション内に独自のスプールリングおよび印刷システムを提供しています。これはすべての印刷機能への統一的なインタフェースとなっています。

プリンタとの接続形式

ABAPアプリケーションとプリンタの接続形式には以下の3つの方法があります。

  • アプリケーションサーバのローカル接続 (アクセス方法 L, C)
  • lpd hostを経由したリモート接続 (アクセス方法 U)
  • PC と SAPlpdを経由したリモート接続 (アクセス方法 U or P)

ABAPアプリケーションのスプール管理は「トランザクションコード:SPAD」から管理・定義が可能です。

印刷処理の流れ

SapECCにおける印刷は、以下のステップを使用します。 1.ユーザが生成された出力の印刷を要求すると、その要求はスプールシステムに送信されます。この処理は、スプール要求の生成と呼ばれます。 2.スプール要求は、プリンタと印刷形式の指定とともに、スプールデータベースに格納されます。 3.データを印刷するために、スプール・ワーク・プロセスが処理するスプール要求のための印刷要求が生成されます。 4.スプールワークプロセスは、印刷のためにデータを整形し、印刷要求をWindowsスプールシステムに渡します。 5.Windowsスプールシステムがプリンタキュー管理を引き継ぎ、データが適切な出力デバイスに渡され、印刷されるようにします。