公告: 新浪微博开通,欢迎跟听!SAP酒吧上线, 欢迎加入!

在DIALOG中使用回调函数/编辑框只能选不能输

    转载自: 大漠杀手

    环境:ECC6 IDES+windowsXP

    目标:在DIALOG中使用回调函数/编辑框只能选不能输

(1) 创建结构ZSCALLBACK

    clip_image002

(2) 创建一dialog程序

    clip_image004

    clip_image006

    程序代码:

*&---------------------------------------------------------------------*
*& Report  ZTEST_CALLBACK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZTEST_CALLBACK.
TYPE-POOLS SHLP .
DATA:OK_CODE TYPE SY-UCOMM,"功能码
     OK_SAVE TYPE SY-UCOMM.
TABLES:ZSCALLBACK.
DATA:ITAB LIKE ZSCALLBACK OCCURS 0 WITH HEADER LINE.
CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  OK_SAVE = OK_CODE.
  CLEAR: OK_CODE.
CASE OK_SAVE.
WHEN  'EXIT' OR 'CANC' OR 'RW' OR 'BACK'."退出
LEAVE PROGRAM .
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  F4  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE F4 INPUT.
  CLEAR:ITAB,ITAB[].
  ITAB-MANDT = SY-MANDT.
  ITAB-ID = '01'.
  ITAB-NAME = '01'.
  ITAB-CLASS = '01'.
APPEND ITAB .
CLEAR ITAB.
  ITAB-MANDT = SY-MANDT.
  ITAB-ID = '02'.
  ITAB-NAME = '02'.
  ITAB-CLASS = '02'.
APPEND ITAB .
CLEAR ITAB.
  ITAB-MANDT = SY-MANDT.
  ITAB-ID = '03'.
  ITAB-NAME = '03'.
  ITAB-CLASS = '03'.
APPEND ITAB .
CLEAR ITAB.
DATA RETURN_TAB LIKE DDSHRETVAL OCCURS 1 WITH HEADER LINE.
DATA DYNPFIELDS LIKE DYNPREAD OCCURS 3 WITH HEADER LINE.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
      WINDOW_TITLE     = '测试回调函数'
      RETFIELD         = 'MANDT'
      DYNPPROG         = SY-REPID
      DYNPNR           = SY-DYNNR
      DDIC_STRUCTURE   = 'ZSCALLBACK'
      DYNPROFIELD      = 'X'
      VALUE_ORG        = 'S'
      DISPLAY          = 'F'
      CALLBACK_PROGRAM = SY-CPROG
      CALLBACK_FORM    = 'F4CALLBACK'
TABLES
      VALUE_TAB        = ITAB
      RETURN_TAB       = RETURN_TAB
EXCEPTIONS
OTHERS           = 0.
ENDMODULE.                                                  " F4  INPUT
*&---------------------------------------------------------------------*
*&      Form  F4CALLBACK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RECORD_TAB   text
*      -->SHLP         text
*      -->CALLCONTROL  text
*----------------------------------------------------------------------*
FORM F4CALLBACK TABLES RECORD_TAB STRUCTURE SEAHLPRES
CHANGING SHLP TYPE SHLP_DESCR_T
                   CALLCONTROL LIKE DDSHF4CTRL.
  DATA: INTERFACE LIKE LINE OF SHLP-INTERFACE,
          FP LIKE LINE OF SHLP-FIELDPROP.
CLEAR INTERFACE.
CLEAR FP.
  FP-SHLPOUTPUT = 'X'.
MODIFY SHLP-FIELDPROP FROM FP TRANSPORTING SHLPOUTPUT
WHERE SHLPOUTPUT = SPACE.
  INTERFACE-SHLPFIELD = 'ID'.
  INTERFACE-VALFIELD = 'ZSCALLBACK-ID'.
APPEND INTERFACE TO SHLP-INTERFACE.
  INTERFACE-SHLPFIELD = 'NAME'.
  INTERFACE-VALFIELD = 'ZSCALLBACK-NAME'.
APPEND INTERFACE TO SHLP-INTERFACE.
  INTERFACE-SHLPFIELD = 'CLASS'.
  INTERFACE-VALFIELD = 'ZSCALLBACK-CLASS'.
APPEND INTERFACE TO SHLP-INTERFACE.
ENDFORM.                               " BO_CALLBACK_FORM
 
*屏幕代码:
 
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
PROCESS ON VALUE-REQUEST.
FIELD ZSCALLBACK-ID MODULE F4 .
FIELD ZSCALLBACK-NAME MODULE F4.
FIELD ZSCALLBACK-CLASS MODULE F4 .

    (3) 测试

       clip_image008

       clip_image010

     Good!测试结果完全符合预期目的

      此文档仅供学习,因为此文档而导致的任何后果本人不承担任何责任。如要发布,请尊重作者劳动成果说明出处。

相关文章列表

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。