Loading

『Intra-mart』管理に役立つ便利なクエリ集~ユーザ管理編~

intra-mart_user_admin

NTT Dataが提供するシステム共通基盤(PaaS)のIntra-mart。Intra-martのユーザ管理に利用できる便利なクエリを集めました。クエリを活用して、ユーザメンテナンスにお役立て下さい(。・ω・。)

Intra-mart管理に役立つ便利なクエリ集~ユーザ管理編~

0. 環境

  • Package : WebPlatform /AppFramework Version7.2x
  • DataBase : SQL Server

※WebPlatformとバージョンは昔のものですが、基本的なDB構造に違いはないと。。信じてます(ノд・。)

1. Intra-martユーザ x 組織 x 役職情報一覧取得クエリ

Intra-martに登録しているユーザをベースに、そのユーザの組織・役職情報を一覧で取得します。削除ユーザ、廃止組織は含まず、有効なデータのみ取得しています。

SELECT
  a.user_cd 'ユーザコード'
  , a.user_name 'ユーザ名'
  , b.company_cd '会社コード'
  , d.department_name '会社名'
  , b.department_cd '組織コード'
  , c.department_name '組織名'
  , b.department_main '主管フラグ'
  , e.post_cd '役職コード'
  , f.post_name '役職名'
FROM
  imm_user a
  LEFT JOIN imm_department_ath b --# ユーザx組織紐付けテーブル
    ON
      b.user_cd = a.user_cd
      AND GETDATE() BETWEEN b.start_date AND b.end_date
      AND b.delete_flag = '0'
  LEFT JOIN imm_department c --# 組織テーブル(組織名取得用)
    ON
      c.company_cd = b.company_cd
      AND c.department_set_cd = b.department_set_cd
      AND c.department_cd = b.department_cd
      AND GETDATE() BETWEEN c.start_date AND c.end_date
      AND c.delete_flag = '0' 
  LEFT JOIN imm_department d --# 組織テーブル(会社名取得用)
    ON
      d.company_cd = b.company_cd
      AND d.department_set_cd = b.department_set_cd
      AND d.department_cd = b.company_cd --# 会社名取得用
      AND GETDATE() BETWEEN d.start_date AND d.end_date
      AND d.delete_flag = '0' 
  LEFT JOIN imm_department_post_ath e --# 組織x役職紐付けテーブル
    ON
      e.company_cd = b.company_cd
      AND e.department_set_cd = b.department_set_cd
      AND e.department_cd = b.department_cd
      AND e.user_cd = b.user_cd
      AND GETDATE() BETWEEN e.start_date AND e.end_date
      AND e.delete_flag = '0'
  LEFT JOIN imm_company_post f --# 会社x役職紐付けテーブル
    ON
      f.company_cd = e.company_cd
      AND f.department_set_cd = e.department_set_cd
      AND f.post_cd = e.post_cd
      AND GETDATE() BETWEEN f.start_date AND f.end_date
      AND f.delete_flag = '0' 
WHERE
  GETDATE() BETWEEN a.start_date AND a.end_date --# 現在有効期間内のユーザのみを対象とする
  AND a.delete_flag = '0' --# 削除されていないユーザのみを対象とする
ORDER BY
  a.user_cd ASC;

2. Intra-martユーザ x ロール紐付け一覧取得クエリ

Intra-martに登録されているユーザをベースに、各ユーザが保持するロールの一覧を取得します。

SELECT
	a.user_id
	, c.user_name AS user_name
	, a.role_id
	, b.display_name
FROM
	b_m_account_role_b a
	LEFT JOIN b_m_role_i b
		ON
			a.role_id = b.role_id --# ロールは期間化されないため時系列比較不要
			AND b.locale_id = 'ja'
	LEFT JOIN imm_user c
		ON
			c.user_cd = a.user_id
			AND GETDATE() BETWEEN c.start_date AND c.end_date
			AND c.delete_flag = '0'
WHERE
	CONVERT(NVARCHAR, GETDATE(), 111) + '|00:00:00' BETWEEN valid_start_date AND valid_end_date
	AND c.user_name IS NOT NULL --# 削除済みユーザは対象から除去

3. Intra-martユーザ x パブリックグループ紐付け一覧取得クエリ

Intra-martに登録されているユーザベースに、ユーザが保持するパブリックグループ・役割の一覧を取得します。

SELECT
	ipga.public_group_cd 'PGコード'
	, ipg.public_group_name 'PG名称'
	, ipgra.role_cd '役割コード'
	, ipgr.role_name '役割名称'
	, ipga.user_cd 'ユーザコード'
	, imu.user_name 'ユーザ名'
FROM
	imm_public_grp_ath ipga --# パブグル紐付け
	LEFT JOIN imm_public_grp ipg
		ON
			ipg.public_group_cd  = ipga.public_group_cd
			AND ipg.delete_flag = '0'
			AND GETDATE() BETWEEN ipg.start_date AND ipg.end_date
	LEFT JOIN imm_public_grp_role_ath ipgra
		ON
			ipgra.public_group_cd = ipg.public_group_cd
			AND ipgra.user_cd = ipga.user_cd
			AND ipgra.delete_flag = '0'
			AND GETDATE() BETWEEN ipgra.start_date AND ipgra.end_date
	LEFT JOIN imm_public_grp_role ipgr
		ON
			ipgr.role_cd = ipgra.role_cd
			AND ipgr.public_group_set_cd = ipgra.public_group_set_cd
			AND ipgr.delete_flag = '0'
			AND GETDATE() BETWEEN ipgr.start_date AND ipgr.end_date
	LEFT JOIN imm_user imu
		ON
			imu.user_cd = ipga.user_cd
			AND GETDATE() BETWEEN imu.start_date AND imu.end_date
			AND imu.delete_flag = '0'
WHERE
	ipga.delete_flag = '0'
	AND GETDATE() BETWEEN ipga.start_date AND ipga.end_date
	AND imu.user_name IS NOT NULL --# 削除済みユーザは対象から除去

4. Intra-martロール内包情報取得クエリ

Intra-martに登録されているロール情報を一覧で取得します。ロールは階層(2階層)を保持しているため、親階層、小階層を取得しています。

SELECT 
	a.role_id
	, b.child_role_id
	, a.category
FROM
	b_m_role_b a
	LEFT JOIN b_m_role_inclusion_b b
		ON
			b.parent_role_id = a.role_id

5. Intra-martパブリックグループと役割一覧取得クエリ

Intra-martに登録されているパブリックグループの情報を一覧で取得します。各パブリックグループには役割が登録されているため、パブリックグループと役割を一覧で取得します。

SELECT
	ipg.public_group_cd 'PGコード'
	, ipg.public_group_name 'PG名称'
	, ipgr.role_cd '役割コード'
	, ipgr.role_name '役割名称'
FROM
	imm_public_grp ipg
	LEFT JOIN imm_public_grp_role ipgr
		ON
			ipgr.public_group_set_cd = ipg.public_group_set_cd
			AND GETDATE() BETWEEN ipgr.start_date AND ipgr.end_date
WHERE
	GETDATE() BETWEEN ipg.start_date AND ipg.end_date;

ふぇにば|PhoEniBiR

投稿者プロフィール

わくわくしてて偉い系VTuver ふぇにば です。
少しでもお役に立てておりましたら嬉しいです(。・ω・。)

関連記事

  1. [SAP] SAP標準トランザクションコード一覧まとめ

    2016.09.16
  2. [SAP] SAP標準テーブル一覧まとめ

    2016.06.06
  3. [SAP] SD 販売管理 トランザクションコード・テーブル

    2019.07.15
  4. [SAP] MM 在庫購買管理 トランザクションコード・テーブル

    2019.07.15
  5. [SAP] よく使うABAPコード断片集(逆引き辞書)

    2016.10.19
  6. [SAP] IDOC系 トランザクションコード・テーブル

    2019.07.15

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. ChatGPT × StableDiffusion
  2. ChatGPT VS コンサルタント
  3. 注目したい5つのテクノロジートレンド2023
  4. ChatGPTで遊ぶ おもしろい使い方まとめ
PAGE TOP