dialog笔记

在这里插入图片描述

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


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值