abap 对表 增删改查

 

*&---------------------------------------------------------------------*
*& Report  Z_SELECT_ZMANAB
*& 
*&---------------------------------------------------------------------*
*&   表ZMANAB  字段znid znname

*&
*&---------------------------------------------------------------------*

REPORT  Z_SELECT_ZMANAB.


DATA: GDT_TABLE TYPE STANDARD TABLE OF ZMANAB,
          GDS_TABLE TYPE ZMANAB.

INITIALIZATION.
  SELECTION-SCREEN BEGIN OF BLOCK B_ID
                                WITH FRAME TITLE TEXT-001.

  PARAMETERS: P_ID TYPE ZMANAB-ZNID,                "番号
                      P_NAME TYPE ZMANAB-ZNNAME.      "姓名
  "データの追加
  PARAMETERS R_INS  RADIOBUTTON GROUP RA DEFAULT 'X' USER-COMMAND RADIO.
  "データの更新
  PARAMETERS R_UPD RADIOBUTTON GROUP RA .
  "データの削除
  PARAMETERS R_DEL RADIOBUTTON GROUP RA.
  "データの検索
  PARAMETERS R_SEL  RADIOBUTTON GROUP RA.


  SELECTION-SCREEN END OF BLOCK B_ID.

START-OF-SELECTION.
  "データの追加
  IF R_INS = 'X'.
    PERFORM DATA_INSERT.
*データの検索
  PERFORM DATA_SELECT.
  ENDIF.
  "データの更新
  IF R_UPD = 'X'.
    PERFORM DATA_UPDATE.
*データの検索
  PERFORM DATA_SELECT.
  ENDIF.
  "データの検索
  IF R_SEL = 'X'.
    PERFORM DATA_QUERY.

  ENDIF.
  "データの削除
  IF R_DEL = 'X'.
    PERFORM DATA_DELETE.
*データの検索
    PERFORM DATA_SELECT.
  ENDIF.

END-OF-SELECTION.

  PERFORM DATA_EDIT.

*&---------------------------------------------------------------------*
*&      Form  DATA_EDIT.
*&---------------------------------------------------------------------*
*       データのEDIT.
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_EDIT.
  LOOP AT GDT_TABLE INTO GDS_TABLE.
    WRITE:/5  GDS_TABLE-ZNID,
                20 GDS_TABLE-ZNNAME.
  ENDLOOP.
ENDFORM.                    "DATA_EDIT
*&---------------------------------------------------------------------*
*&      Form  DATA_QUERY.
*&---------------------------------------------------------------------*
*       データのQUERY.
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_QUERY.
  GDS_TABLE-ZNID = P_ID.
  GDS_TABLE-ZNNAME = P_NAME.
  " 姓名は空に値 . 番号は空に値
  IF P_NAME = '' AND P_ID = ''.
    SELECT *
          FROM ZMANAB
          INTO TABLE GDT_TABLE.
  ELSEIF  P_NAME <> '' AND P_ID = ''.    " 姓名は空に値しない . 番号は空に値
    SELECT *
    FROM ZMANAB
    INTO TABLE GDT_TABLE
    WHERE  ZNNAME = P_NAME.
    IF SY-SUBRC <> 0.
      MESSAGE '対象データが存在ません' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ELSEIF P_ID <> '' AND P_NAME = ''.                 "姓名は空に値 . 番号は空に値しない。
    SELECT *
    FROM ZMANAB
    INTO TABLE GDT_TABLE
    WHERE  ZNID = P_ID.
    IF SY-SUBRC <> 0.
      MESSAGE '対象データが存在ません' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ELSEIF P_NAME <> '' AND P_ID <> ''.       "姓名は空に値しない。  番号は空に値しない。
    SELECT *
    FROM ZMANAB
    INTO TABLE GDT_TABLE
    WHERE  ZNID = P_ID AND  ZNNAME = P_NAME.
    IF SY-SUBRC <> 0.
      MESSAGE '対象データが存在ません' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.


ENDFORM.                    "DATA_QUERY

*&---------------------------------------------------------------------*
*&      Form  DATA_SELECT.
*&---------------------------------------------------------------------*
*       データのSELECT.
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_SELECT.
  SELECT *
    FROM ZMANAB
    INTO   TABLE GDT_TABLE  .

  IF SY-SUBRC <> 0.
    MESSAGE '対象でーたがありません' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "DATA_SELECT

*&---------------------------------------------------------------------*
*&      Form  DATA_INSERT
*&---------------------------------------------------------------------*
*       データのINSERT
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_INSERT.
  SELECT  COUNT(*)  "CHA XUN  データの存在チェック
    FROM ZMANAB
    WHERE ZNID = P_ID  AND ZNNAME = P_NAME.

  IF SY-SUBRC = 0.
    MESSAGE '対象データが存在する。' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.                           "選択画面に戻る
  ELSE.
    GDS_TABLE-ZNID = P_ID.
    GDS_TABLE-ZNNAME = P_NAME.
    APPEND GDS_TABLE TO GDT_TABLE.

    INSERT ZMANAB FROM TABLE GDT_TABLE ACCEPTING DUPLICATE KEYS.  " KEYS  CONGFU

    IF SY-SUBRC <> 0.
      MESSAGE 'データの挿入失敗。' TYPE 'S' DISPLAY LIKE 'E'.
      LEAVE LIST-PROCESSING.     "選択画面に戻る
    ENDIF.
  ENDIF.
ENDFORM.                    "DATA_INSERT
*&---------------------------------------------------------------------*
*&      Form  DATA_UPDATE
*&---------------------------------------------------------------------*
*       データのUPDATE.
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_UPDATE.

  GDS_TABLE-ZNID = P_ID.
  GDS_TABLE-ZNNAME = P_NAME.

  UPDATE ZMANAB FROM GDS_TABLE.

  IF SY-SUBRC <> 0.
    MESSAGE 'データの更新失敗。' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.     "選択画面に戻る
  ENDIF.
ENDFORM.                    "DATA_UPDATE
*&---------------------------------------------------------------------*
*&      Form  DATA_DELETE.
*&---------------------------------------------------------------------*
*       データのDELETE.
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_DELETE.
  GDS_TABLE-ZNID = P_ID.
  GDS_TABLE-ZNNAME = P_NAME.
  DELETE ZMANAB FROM GDS_TABLE.

  IF SY-SUBRC <> 0.
    MESSAGE 'データの削除失敗。' TYPE 'S' DISPLAY LIKE 'E'.  "
    "MESSAGE 'データの削除失敗。' TYPE  'E'.  "  NEW  ye main
    LEAVE LIST-PROCESSING.     "選択画面に戻る   ye mian  BU  BIAN
  ENDIF.

ENDFORM.                    "DATA_DELETE

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值