SELECTION-SCREEN 作为弹窗调用 SAP SE38 DEMO: DEMO_CALL_SELECTION_SCREEN创建屏幕SELECTION-SCREEN BEGIN OF SCREEN 200 AS WINDOW. . PARAMETERS p_zddlx TYPE ztpp100a_17-zddlx OBLIGATORY MODIF ID x. PARAMETERS p_zlcjd TYPE ztpp100a_17-zlcjd OBLIGATORY MODIF ID x. PARAMETERS p_zxh TYPE ztpp100a_17-zxh. PARAMETERS p_zjdsm TYPE ztpp100a_17-zjdsm. PARAMETERS p_zsfyfj TYPE ztpp100a_17-zsfyfj VISIBLE LENGTH 4 AS LISTBOX. PARAMETERS p_zfzrgh TYPE ztpp100a_17-zfzrgh. PARAMETERS p_zfzrxm TYPE ztpp100a_17-zfzrxm MODIF ID z. SELECTION-SCREEN END OF SCREEN 200.通过 CALL SELECTION-SCREEN 201 STARTING AT 1 1. 调用CALL SELECTION-SCREEN 201 STARTING AT 1 1.输入完值判断他点的执行 还是 X 可以通过 SY-SUBRC判断CALL SELECTION-SCREEN 200 STARTING AT 1 1. IF sy-subrc 0. ls_ztpp100a_17-zddlx p_zddlx. ls_ztpp100a_17-zlcjd p_zlcjd. ls_ztpp100a_17-zxh p_zxh. ls_ztpp100a_17-zjdsm p_zjdsm. ls_ztpp100a_17-zsfyfj p_zsfyfj. ls_ztpp100a_17-zfzrgh p_zfzrgh. ls_ztpp100a_17-zfzrxm p_zfzrxm. ls_ztpp100a_17-werks p_werks. ls_ztpp100a_17-crnam sy-uname. ls_ztpp100a_17-crdat sy-datum. ls_ztpp100a_17-crtim sy-uzeit. SELECT COUNT(*) FROM ztpp100a_02 WHERE werks p_werks AND zbh_pp p_zddlx. IF sy-subrc 0. MESSAGE p_zddlx TYPE S DISPLAY LIKE E. RETURN. ENDIF. SELECT COUNT(*) FROM ztpp100a_11 WHERE werks p_werks AND zbh_gh p_zfzrgh. IF sy-subrc 0. MESSAGE p_zfzrgh TYPE S DISPLAY LIKE E. RETURN. ENDIF. SELECT COUNT(*) FROM ztpp100a_17 WHERE zddlx ls_ztpp100a_17-zddlx AND zlcjd ls_ztpp100a_17-zlcjd AND werks p_werks. IF sy-subrc IS INITIAL. MESSAGE TYPE S DISPLAY LIKE E. RETURN. ENDIF. INSERT ztpp100a_17 FROM ls_ztpp100a_17. COMMIT WORK AND WAIT. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data FROM ztpp100a_17 WHERE werks p_werks AND crdat IN s_crdat AND crnam IN s_crnam. ELSE. MESSAGE 取消操作 TYPE S DISPLAY LIKE E. RETURN. ENDIF.做隐藏字段 是否可编辑 下拉框赋值可以通过 AT SELECTION-SCREEN OUTPUT.设置AT SELECTION-SCREEN OUTPUT. IF p_lists wwwww. DATA: vid TYPE vrm_id, list TYPE vrm_values, value LIKE LINE OF list. value-key Y. value-text 是. APPEND value TO list. value-key N. value-text 否. APPEND value TO list. CALL FUNCTION VRM_SET_VALUES EXPORTING id P_ZSFYFJ values list. LOOP AT SCREEN. IF screen-group1 X AND gv_ucomm ZXG OR screen-group1 Z. screen-input 0. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF.对字段做搜索帮助 可以通过 AT SELECTION-SCREEN ON VALUE-REQUEST 事件设置如果想要 某两个字段做关联 在搜索帮助 选完值后带出 其他字段值 例如选完 负责人工号 带出负责人姓名 就要做带返回值的 F4 帮助 其中函数 SAPGUI_SET_FUNCTIONCODE 相当于按了一次回车 如果没有这个 即使对 字段赋值 屏幕不刷新 字段虽然有值 但是 屏幕显示 还是空的TYPES :BEGIN OF ty_selection, code TYPE zsmm_ckd_header-cklx, string TYPE char20, END OF ty_selection. DATA lt_selection TYPE TABLE OF ty_selection. SELECT zbh_gh AS code zbh_ght AS string FROM ztpp100a_11 INTO TABLE lt_selection WHERE werks p_werks. DATA lt_ddshretval TYPE TABLE OF ddshretval. CALL FUNCTION F4IF_INT_TABLE_VALUE_REQUEST EXPORTING retfield CODE dynpprog sy-repid dynpnr sy-dynnr dynprofield P_ZFZRGH value_org S callback_program sy-repid TABLES value_tab lt_selection return_tab lt_ddshretval EXCEPTIONS parameter_error 1 no_values_found 2 OTHERS 3. IF sy-subrc 0. READ TABLE lt_ddshretval INTO DATA(ls_ddshretval) INDEX 1. READ TABLE lt_selection INTO DATA(ls_selection) WITH KEY code ls_ddshretval-fieldval. IF sy-subrc 0. p_zfzrxm ls_selection-string. p_zfzrgh ls_ddshretval-fieldval. ENDIF. ELSE. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CALL FUNCTION SAPGUI_SET_FUNCTIONCODE EXPORTING functioncode DUMMY.如果不需要做联动 搜索帮助 就不需要添加返回值表TYPES :BEGIN OF ty_selection, code TYPE zsmm_ckd_header-cklx, string TYPE char20, END OF ty_selection. DATA lt_selection TYPE TABLE OF ty_selection. SELECT zbh_pp AS code zbh_ppt AS string FROM ztpp100a_02 INTO TABLE lt_selection WHERE werks p_werks. CALL FUNCTION F4IF_INT_TABLE_VALUE_REQUEST EXPORTING retfield CODE dynpprog sy-repid dynpnr sy-dynnr dynprofield P_ZDDLX window_title WINDOW--TITLE value_org S C表示cellS表示structure * MULTIPLE_CHOICE X 多项选择用于SELECT-OPTIONS * DISPLAY F C则只能显示不能选择 callback_program sy-repid TABLES value_tab lt_selection EXCEPTIONS parameter_error 1 no_values_found 2 OTHERS 3. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.