*&---------------------------------------------------------------------*
*& Modulpool ZTS_XSY_TEST13
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZTS_XSY_TEST13 MESSAGE-ID EU.
INCLUDE ZTS_XSY_TEST13TOP. "数据定义
INCLUDE ZTS_XSY_TEST13O01. "PBO MODULES
INCLUDE ZTS_XSY_TEST13I01. "PAI MODULES
INCLUDE ZTS_XSY_TEST13F01. "SUBROUTINE
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST13TOP
*&---------------------------------------------------------------------*
DATA GV_INPUT01 TYPE C LENGTH 10.
DATA GV_INPUT02 TYPE C LENGTH 10.
DATA GV_INPUT03 TYPE N LENGTH 10 VALUE '196'.
DATA GV_INPUT04 TYPE C LENGTH 10 .
DATA GV_SCHOOL TYPE ZBC_XSY_SCHOOL-ZSCHOOL.
DATA ICON01 TYPE C LENGTH 10 ."VALUE '@01@图标'.
DATA GV_WERKS TYPE MARD-WERKS.
DATA GV_LGORT TYPE MARD-LGORT.
DATA GV_MATNR TYPE MARD-MATNR.
*点选按钮 选择复制为x,不选为空
DATA GV_RB01 TYPE C LENGTH 1.
DATA GV_RB02 TYPE C LENGTH 1.
DATA GV_RB03 TYPE C LENGTH 1.
*复选按钮 选中赋值为x,不选为空
DATA GV_CHECK TYPE C LENGTH 1.
*&---------------------------------------------------------------------*
*& Module SET_VALUES OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_values OUTPUT.
GV_INPUT01 = '输入框1高亮'.
GV_INPUT02 = '可修改'.
GV_INPUT03 = '999'.
TYPE-POOLS ICON.
* WRITE ICON_GRAPHICS AS ICON TO ICON01.
*ICON01+0(4) = '显示'.
ICON01 = '@0N@图标显示'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module SET_ELEMENTS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_elements OUTPUT.
IF GV_CHECK = 'X'. "显示
ELSE. "隐藏
LOOP AT SCREEN.
IF
*使用SCREEN元素分组设置
SCREEN-GROUP3 = 'SEX'.
*使用SCREEN 元素名称判断
* IF SCREEN-NAME = 'GV_RB01' OR
* SCREEN-NAME = 'GV_RB02' OR
* SCREEN-NAME = 'GV_RB03' .
SCREEN-INVISIBLE = '1'. " 0 否定 1 肯定
SCREEN-INPUT = '0'. "设置不可输入
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'SAVE'.
PERFORM SAVE_LIST.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module CHECK_SCHOOL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_school INPUT.
DATA LS_SCHOOL TYPE ZBC_XSY_SCHOOL.
IF GV_SCHOOL IS INITIAL.
MESSAGE E000 WITH '必须输入学校代码'.
ELSE.
SELECT SINGLE *
FROM ZBC_XSY_SCHOOL
INTO CORRESPONDING FIELDS OF LS_SCHOOL
WHERE ZSCHOOL = GV_SCHOOL.
IF SY-SUBRC = 0.
MESSAGE S000 WITH '学校代码存在!'.
ELSE.
MESSAGE E000 WITH '学校代码不存在!'.
ENDIF.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module CHECK_MARD INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_mard INPUT.
DATA LS_MARD TYPE MARD.
*补前导零
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = GV_MATNR
* IMPORTING
* OUTPUT = GV_MATNR
.
*表ZSTUDENT_01
SELECT SINGLE WERKS LGORT MATNR
FROM MARD
INTO CORRESPONDING FIELDS OF LS_MARD
WHERE WERKS = GV_WERKS
AND LGORT = GV_LGORT
AND MATNR = GV_MATNR.
IF SY-SUBRC = 0.
MESSAGE S000 WITH 'MARD表中存在相同数据!'.
ELSE.
SET CURSOR FIELD 'GV_MATNR'.
MESSAGE E000 WITH 'MARD表中不存在相同数据!'.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module SET_SEX_VALUE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_sex_value INPUT.
IF GV_RB01 = 'X'.
GV_INPUT04 = '性别为男'.
ELSEIF GV_RB02 = 'X'.
GV_INPUT04 = '性别为女'.
ELSEIF GV_RB03 = 'X'.
GV_INPUT04 = '性别保密'.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module EXIT_PROGRAM INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_program INPUT.
LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST13F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SAVE_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM save_list .
ENDFORM.
PROCESS BEFORE OUTPUT.
*-----------------------------------
MODULE status_0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE.
*------------------------------------
*-----------------------------------------------
MODULE set_elements.
MODULE set_elements OUTPUT.
IF GV_CHECK = 'X'. "显示
ELSE. "隐藏
LOOP AT SCREEN.
IF
*使用SCREEN元素分组设置
SCREEN-GROUP3 = 'SEX'.
*使用SCREEN 元素名称判断
* IF SCREEN-NAME = 'GV_RB01' OR
* SCREEN-NAME = 'GV_RB02' OR
* SCREEN-NAME = 'GV_RB03' .
SCREEN-INVISIBLE = '1'. " 0 否定 1 肯定
SCREEN-INPUT = '0'. "设置不可输入
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
*-------------------------------------------------
*----------------------------------------------------------
MODULE set_values.
MODULE set_values OUTPUT.
GV_INPUT01 = '输入框1高亮'.
GV_INPUT02 = '可修改'.
GV_INPUT03 = '999'.
TYPE-POOLS ICON.
* WRITE ICON_GRAPHICS AS ICON TO ICON01.
*ICON01+0(4) = '显示'.
ICON01 = '@0N@图标显示'.
ENDMODULE.
*-------------------------------------------------
PROCESS AFTER INPUT.
*-----------------------------------------------------------------
MODULE exit_program AT EXIT-COMMAND.
MODULE exit_program INPUT.
LEAVE PROGRAM.
ENDMODULE.
*---------------------------------------------------------
"数据检查
*--------------------------------------------------------
MODULE set_sex_value.
MODULE set_sex_value INPUT.
IF GV_RB01 = 'X'.
GV_INPUT04 = '性别为男'.
ELSEIF GV_RB02 = 'X'.
GV_INPUT04 = '性别为女'.
ELSEIF GV_RB03 = 'X'.
GV_INPUT04 = '性别保密'.
ENDIF.
ENDMODULE.
*----------------------------------------------------------------
*------------------------------------------------------------------------------------
*检查字段,当值或属性发生改变时,触发MODULE
*单一字段的 检查
*MODULE CHECK_SCHOOL. "不要单独使用pai module
*MODULE check_school INPUT.
* DATA LS_SCHOOL TYPE ZBC_XSY_SCHOOL.
* IF GV_SCHOOL IS INITIAL.
* MESSAGE E000 WITH '必须输入学校代码'.
* ELSE.
* SELECT SINGLE *
* FROM ZBC_XSY_SCHOOL
* INTO CORRESPONDING FIELDS OF LS_SCHOOL
* WHERE ZSCHOOL = GV_SCHOOL.
* IF SY-SUBRC = 0.
* MESSAGE S000 WITH '学校代码存在!'.
* ELSE.
* MESSAGE E000 WITH '学校代码不存在!'.
* ENDIF.
* ENDIF.
*ENDMODULE.
*----------------------------------------------------------------------------
*--------------------------------------------------------------------
*多个字段的检查
*MODULE CHECK_MARD.
*MODULE check_mard INPUT.
* DATA LS_MARD TYPE MARD.
*
**补前导零
** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
** EXPORTING
** input = GV_MATNR
** IMPORTING
** OUTPUT = GV_MATNR
* .
**表ZSTUDENT_01
*
* SELECT SINGLE WERKS LGORT MATNR
* FROM MARD
* INTO CORRESPONDING FIELDS OF LS_MARD
* WHERE WERKS = GV_WERKS
* AND LGORT = GV_LGORT
* AND MATNR = GV_MATNR.
* IF SY-SUBRC = 0.
* MESSAGE S000 WITH 'MARD表中存在相同数据!'.
* ELSE.
* SET CURSOR FIELD 'GV_MATNR'.
* MESSAGE E000 WITH 'MARD表中不存在相同数据!'.
* ENDIF.
*ENDMODULE.
*--------------------------------------------------------------
CHAIN.
FIELD gv_werks.
FIELD gv_lgort.
FIELD gv_matnr.
MODULE check_mard ON CHAIN-REQUEST.
ENDCHAIN.
*-----------------------------------------------------------
MODULE check_school INPUT.
DATA LS_SCHOOL TYPE ZBC_XSY_SCHOOL.
IF GV_SCHOOL IS INITIAL.
MESSAGE E000 WITH '必须输入学校代码'.
ELSE.
SELECT SINGLE *
FROM ZBC_XSY_SCHOOL
INTO CORRESPONDING FIELDS OF LS_SCHOOL
WHERE ZSCHOOL = GV_SCHOOL.
IF SY-SUBRC = 0.
MESSAGE S000 WITH '学校代码存在!'.
ELSE.
MESSAGE E000 WITH '学校代码不存在!'.
ENDIF.
ENDIF.
ENDMODULE.
*----------------------------------------------------------------------
FIELD gv_school MODULE check_school ON REQUEST. "ON REQUEST:当值发生改变的时候
MODULE user_command_0100.
*---------------------------------------------------
MODULE user_command_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'SAVE'.
PERFORM SAVE_LIST.
ENDCASE.
ENDMODULE.
*-----------------------------------------------------------------