SAP_ABAP_プログラミングの基礎_データベース(CRUD)_SQLを開く/データの読み取り/データの追加/データの更新/データの追加または変更/データの削除/カーソルを使用したデータの読み取り/データクラスター

SAP ABAP コンサルタント (開発エンジニア) コンピテンシー モデル_Terry がエンタープライズ デジタル化について語るブログ - CSDN ブログ記事は 487 回閲覧されました。目標: SAP abap コンサルタントのコンピテンシー モデルのレビューに基づいて、約 1 年の経験を持つ abap に強力な燃料を提供し、すぐに 3 年の経験に成長させます。https://blog.csdn.net/java_zhong1990/article/details/132469977


普段は「建設現場でレンガを動かす」仕事をしていて、基本的なスキルを意識​​することがほとんどないのですが、やることが無いので手に取ってレビューしてみました! 

実際、プロジェクトで使用されることは非常に少ないため、プログラミングを学ぶ場合は、まずフレームワークを学び、その後詳細を学ぶ必要があります。、詳細を学ぶ必要が多すぎるためです。


JAVAをやっている友人は、現在プロジェクトでは基本的にMybtisを使用しており、初期の頃はHibernateフレームワークが使用されていましたが、現在ではデータベースを直接操作するためにJDBCが使用されることはほとんどありません。


ABAP ドメインで定義される CRUD には特別なことは何もなく、SQL ステートメントとほぼ同じです。


 もしあなたが「CRUD」スタイルを使ったら、あなたが人生を終えるとき、友達はどう思うでしょうか?


1 SQLを開く

(1) SY-SUBRC、SQL操作が成功したかどうか

(2) SY-DBCNT、行数に影響します


2 データの読み取り

SELECT <result> FROM <source> [INTO <target>] [WHERE <condition>]
[GROUP BY <fields>] [ORDER BY <sort_order>].

実際のケースでは、文法ではなく、例を見てください。

SELECT
        mara~zwlcms,
        mara~matnr, "物料描述
        mara~mtart, "物料类型
        mara~meins, "单位
        marc~werks,

        marc~ekgrp,
        marc~dismm,
        marc~dispo,
        marc~sfcpf,
        marc~fevor,

        mvke~vkorg,  "销售组织
        mbew~vprsv,  "价格控制
        mbew~mlast   "物料价格确定: 控制

    INTO CORRESPONDING FIELDS OF TABLE @gt_data
    FROM mara
    LEFT JOIN marc ON marc~matnr = mara~matnr
    LEFT JOIN mvke ON mvke~matnr = mara~matnr AND mvke~dwerk = marc~werks
    LEFT JOIN mbew ON mbew~matnr = mara~matnr AND mbew~bwkey = marc~werks

    WHERE

    mara~matnr     IN @so_matnr
    AND marc~werks IN @so_werks

    .

選択結果の定義 SELECT

(1) 複数行のすべてのデータを選択します: SELECT [DISTINCT] * ......ENDSELECT。

(2) 単一行内のすべてのデータを選択します: SELECT SINGLE [FOR UPDATE] * ...... WHERE <条件> ......

(3) 指定した列のデータをすべて選択します: SELECT [SINGLE [FOR UPDATE]] [DISTINCT] <s1><s2> .....

データテーブルをFROMから指定

(1) プログラムでデータベース テーブルを指定します。... FROM <dbtab> [CLIENT SPECIFIED] [BYPASSING BUFFER]
[ UP TO <n> ROWS ].... 

CLIENT SPECIFIED オプションは自動グループ処理をオフにするために使用され、BYPASSING BUFFER オプションを使用すると、
SAP テーブル バッファを読み取らずにデータベースを直接読み取ることができます

(2) 実行時にデータベーステーブルを指定する

......FROM (<dbtabname>) [クライアント指定] [バッファをバイパス]
[最大 <n> 行].. INTO <ターゲット> .....

この形式の FROM 句は、INTO 句と一緒にのみ使用できます。

対象領域を指定 INTO

(1) ワークスペースにデータを読み込みます SELECT ... INTO <wa> .....

(2) データを内部テーブル SELECT .....INTO TABLE <itab> に読み込みます。

(3)事前定義されたパッケージ サイズでデータを内部テーブルに読み込みます。   SELECT * .....INTO TABLE <itab> PACKAGE SIZE <n>....

(4) 内部テーブル SELECT .....  APPENDING  TABLE <itab>....にデータ行を追加します。

(5) データをコンポーネントごとに読み込む 

<wa> の対応するフィールドに ... を選択します .....

テーブル <itab> の対応するフィールドに ... を選択します .....

SELECT ... テーブル <itab> の対応するフィールドを追加 ......

読み取り行を選択 WHERE

(1) プログラム内で行選択の条件を指定.... WHERE <条件>....

(2) 論理リンク演算子を使用して条件を結合する


3 データを追加する

単一行 INSERT INTO <dbtab> [CLIENT SPECIFIED] VALUES <wa> を追加します。

複数の行を追加する 

テーブル <itab> [重複キーの受け入れ] から <dbtab> [クライアント指定] を挿入します。


4 データを更新する

単一行を更新する 

UPDATE <dbtab> [CLIENT SPECIFIED] FROM <wa>。ワークスペース <wa> の内容は、
<wa> と同じ主キーを持つデータベース テーブル <dbtab> の行を上書きします。

ワークスペース <wa> が指定されていません。
ただし、テーブル ワークスペース <dbtab> の内容は、同じ主キーを持つデータベース テーブルの行を上書きします。

<dbtab> を更新します [クライアント指定]。

複数の行を更新する 

UPDATE <dbtab> [クライアント指定] SET <S1> ..<Sn> [WHERE <条件>]。

内部テーブルを使用して複数の行を更新する

テーブル <itab> から <dbtab> [クライアント指定] を更新します。

UPDATE (<dbtabname>) [クライアント指定] テーブル <itab> から。


5 データの追加または変更

単一行を挿入

<dbtab> [クライアント指定] [<wa> から] を変更します。

MODIFY (<dbtabname>) [クライアント指定] [<wa> から]。

複数の行を挿入する

テーブル <itab> から <dbtab> [クライアント指定] を変更します。

テーブル <itab> から (<dbtabname>) [クライアント指定] を変更します。


6 データを削除する

一行削除 

<wa> から <dbtab> [クライアント指定] を削除します。

<dbtab> [クライアント指定] を削除します。

複数行を削除する

DELETE FROM <dbtab> [クライアント指定] WHERE <条件>。

DELETE FROM (<dbtabname>) [クライアント指定] WHERE <条件>。

内部テーブルを使用して複数の行を削除する

<dbtab> [クライアント指定] をテーブル <itab> から削除します。

テーブル <itab> から (<dbtabname>) [クライアント指定] を削除します。


7 カーソルを使用してデータを読み取り、

ORACLE カーソルによく似ています

カーソルを開く

カーソルを開く [ホールド] <c> FOR SELECT ..... [WHERE <条件>]。

カーソルでデータを読み取る

次のカーソル <c> を <ターゲット> にフェッチします。

カーソルを閉じる

カーソル<c>を閉じます。


1) COMMIT WORK または ROLLBACK WORK ステートメントを実行するとき、
2) 独自の SQL データベースのコミットまたはキャンセルを実行するとき、
3) 画面を変更するとき、 4) リモート関数呼び出しを実行するとき、カーソルは自動的に
閉じられます。
OPEN CURSOR ステートメントで WITH HOLD オプションを使用すると、
独自の SQL でのデータベース コミットによってカーソルは閉じられません。


8つのデータクラスター

データオブジェクトをメモリに保存する

 <f1> [FROM <g1>] <f2> [FROM <g2>] ... メモリ ID <key> にエクスポートします。

メモリからデータオブジェクトを読み取る

IMPORT <f1> [TO <g1>] <f2> [TO <g2>] ... メモリ ID <key> から。

メモリ内のデータクラスターを削除する

空きメモリ [ID <キー>]。 

ID <key> が追加されていない場合、このステートメントはメモリ全体を削除します。
EXPORT を使用して以前に ABAP/4 メモリに保存されたすべてのデータ クラスターが含まれます。
ID <key> を追加した後、ステートメントはこの名前で指定されたデータ クラスターのみを削除します。
メモリ全体を削除すると、システム ルーチンのメモリ内容が失われるため、ID を付加した FREE MEMORY ステートメントのみを使用する必要があります。

おすすめ

転載: blog.csdn.net/java_zhong1990/article/details/134727733