在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!测试结果完全符合预期目的

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


About The Author

从事SAP行业有些年头,对SAP技术稍有了解; 如无特别声明,本博客文章为原创,转载请注明; 博主MSN:xuchunbo0901@hotmail.com; 博主邮箱:bob.xu@abaptech.com。

No Comments

Leave A Reply


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

无觅相关文章插件,快速提升流量