alv弹窗

1、在调用函数REUSE_ALV_GRID_DISPLAY中,I_CALLBACK_USER_COMMAND参数下,填写双击事件。

 WHEN '&IC1' OR 'DOUB'.
      CLEAR RF_UCOMM.
      PERFORM FRM_TC_UPDATE USING RS_SELFIELD.

 FORM FRM_TC_UPDATE  USING PV_SELFIELD TYPE SLIS_SELFIELD.
  DATA:L_FIELD TYPE C LENGTH 20.
  FIELD-SYMBOLS:
                 <FS_FIELD> TYPE ANY.
  CLEAR: GS_OUT_ALV.
  "读取用户双击的行
  READ TABLE GT_OUT_ALV INTO GS_OUT_ALV INDEX PV_SELFIELD-TABINDEX.
  "获取用户双击的字段内容
  L_FIELD =  |gs_out_alv-{ PV_SELFIELD-FIELDNAME }|.
  ASSIGN (L_FIELD) TO <FS_FIELD>.
  "将自建表中的数据给内表
  SELECT * INTO TABLE GT_TRADE_CATG FROM ZTCF_TRADE_CELL.
  CLEAR GS_TRADE_CATG.
  "获取双击的是哪个字段,根据字段从内表读取相应的数据
  CASE PV_SELFIELD-FIELDNAME(5).
    WHEN 'TCLCO'.
      READ TABLE GT_TRADE_CATG INTO GS_TRADE_CATG WITH
        KEY TCLCO = <FS_FIELD>.
    WHEN 'TCLTX'.
      READ TABLE GT_TRADE_CATG INTO GS_TRADE_CATG WITH
        KEY TCLTX = <FS_FIELD>.
    WHEN OTHERS.
  ENDCASE.

  IF GS_TRADE_CATG IS NOT INITIAL.
    CLEAR: G_IS_STOP.
    CALL SCREEN 0100 STARTING AT 80 4.”调用弹窗,双击0100,即可调用到定义页面

  ENDIF.
ENDFORM.

 2、绘制弹窗

填写简短描述,选在方式对话框。点击布局

将左侧的控件按业务要求进行画出。

注意标签名称必须是:表+字段名;文本框的名称必须是:内表工作区名+字段名。这样会使得系统自动匹配到相关字段,并能进行自动自动赋值。如果是日期时间字段需要修改属性中词典下的格式,修改成相应类别。

3、定义状态事件

Tcode:se41进行创建

创建按钮

选择对话框状态

定义确认和取消按钮

双击btn_ok

点击完对钩后选择快捷键。

再定义取消按钮时,下图是注意的地方

其他和btn_ok定义一样。

创建完成后,点击保存激活

4、在代码中添加状态代码

双击调用屏幕代码时,会跳转到此,将逻辑流修改成上图所示

PROCESS BEFORE OUTPUT.
  MODULE MDL_STATUS_0100.

PROCESS AFTER INPUT.
  MODULE MDL_EXIT AT EXIT-COMMAND.
  MODULE MDL_USER_COMMAND_0100.

5、双击逻辑流,创建相应的方法

MODULE MDL_STATUS_0100 OUTPUT.
  SET PF-STATUS 'PF_CF_0100'.
  SET TITLEBAR 'TB_CF_0100' WITH G_SYTITLE.
ENDMODULE.

MODULE MDL_EXIT INPUT.
  CLEAR G_IS_UPD.
  PERFORM FRM_SCREEN_EXIT.
ENDMODULE.

FORM FRM_SCREEN_EXIT .
  IF G_IS_UPD IS INITIAL.
    MESSAGE ID 'ZFI01' TYPE C_MSG_TYPE_S NUMBER 000 DISPLAY LIKE C_MSG_TYPE_E
       WITH '用户取消编辑!'.
  ENDIF.
  LEAVE TO SCREEN 0.
ENDFORM.

MODULE MDL_USER_COMMAND_0100 INPUT.
  CLEAR G_IS_UPD.

  CASE OK_CODE.
    WHEN 'BTN_OK'.
      CLEAR OK_CODE.
      G_IS_UPD = ABAP_ON.
      PERFORM FRM_UPDATE_TRADE_CATEGORIES CHANGING GS_TRADE_CATG.
    WHEN 'BTN_CC'.
      CLEAR OK_CODE.
    WHEN OTHERS.
      CLEAR OK_CODE.
  ENDCASE.
ENDMODULE.

FORM FRM_UPDATE_TRADE_CATEGORIES CHANGING PR_TRADE_CATG TYPE TY_TRADE_CATEGORIES.
  DATA: LW_TC_UPDATE TYPE ZTFC_MAT_PRICE.
  IF G_IS_UPD IS INITIAL.
    MESSAGE ID 'ZFI01' TYPE C_MSG_TYPE_S NUMBER 000 DISPLAY LIKE C_MSG_TYPE_E
       WITH '用户取消编辑!'.
    G_IS_STOP = ABAP_ON.
    EXIT.
  ELSE.
    MOVE-CORRESPONDING PR_TRADE_CATG TO LW_TC_UPDATE.
    CHECK G_IS_STOP IS INITIAL.
    "输入时需要转换物料单位。
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = LW_TC_UPDATE-MEINS
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = LW_TC_UPDATE-MEINS
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.
    "日期格式转换
    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        DATE_EXTERNAL            = LW_TC_UPDATE-KDATB
      IMPORTING
        DATE_INTERNAL            = LW_TC_UPDATE-KDATB
      EXCEPTIONS
        DATE_EXTERNAL_IS_INVALID = 1
        OTHERS                   = 2.
    IF SY-SUBRC <> 0.
      MESSAGE ID 'ZFI01' TYPE C_MSG_TYPE_S NUMBER 000 DISPLAY LIKE C_MSG_TYPE_E
       WITH '有效起始日期格式有误!'.
    ENDIF.
    GET TIME.
    LW_TC_UPDATE-MANDT = SY-MANDT.
    LW_TC_UPDATE-UPDAT = SY-DATUM.
    LW_TC_UPDATE-UPTIM = SY-UZEIT.
    LW_TC_UPDATE-UPUSR = SY-UNAME.
    MODIFY ZTFC_MAT_PRICE FROM LW_TC_UPDATE.
    MESSAGE ID 'ZFI01' TYPE C_MSG_TYPE_S NUMBER 000
       WITH '数据已保存!'.
  ENDIF.
  "保存后重新调用显示数据方法进行页面刷新
  CLEAR: GT_OUT_ALV, GS_OUT_ALV.
  PERFORM DATA_SHOW_ALL.
  "CHECK G_IS_STOP IS INITIAL.
  PERFORM FRM_SCREEN_EXIT.
ENDFORM.

至此结束。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值