*&---------------------------------------------------------------------*
*& 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