1、SE11 创建增强结构:ZMMS062
2、在需要增加的标准表附加该增强结构:MARA附加ZMMS062
3、SPRO创建函数组ZFGMM062
SE80查看该函数组,并在已经创建好的0001空白子屏幕进行屏幕绘制
打开屏幕绘制器,建立文本及输入输出框,使用创建的增强结构字段
设置组编号为 G1,控制显示与修改
逻辑流新增:MODULE disable_field、 MODULE get_data、MODULE assign_data
PROCESS BEFORE OUTPUT.
* Verarbeitung vor der Ausgabe
MODULE disable_field.
MODULE get_data.
PROCESS AFTER INPUT.
* Verarbeitung nach der Eingabe
MODULE assign_data.
MODULE disable_field:当t_code为mm03时,G1组不能输入
*&---------------------------------------------------------------------*
*& Module DISABLE_FIELD OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE disable_field OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
IF sy-tcode = 'MM03'.
LOOP AT SCREEN .
CASE screen-group1.
WHEN 'G1'.
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ENDIF.
ENDMODULE.
MODULE get_data:
*&---------------------------------------------------------------------*
*& Module GET_DATA OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE get_data OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
* DATA gv_bjsx TYPE zmms062-zbjsx.
DATA lv_matnr TYPE matnr.
DATA gt_drop TYPE vrm_values WITH HEADER LINE.
IF sy-tcode = 'MM02' OR sy-tcode = 'MM03'.
GET PARAMETER ID 'MAT' FIELD lv_matnr.
ENDIF.
CLEAR gt_drop.
gt_drop-key = '1'.
gt_drop-text = '消耗件'.
APPEND gt_drop.
CLEAR gt_drop.
gt_drop-key = '2'.
gt_drop-text = '属性件'.
APPEND gt_drop.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'ZMMS062-ZBJSX'
values = gt_drop[]
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* gv_bjsx = gv_bjsx.
CLEAR gt_drop[].
SELECT zdtsbbm AS key,zdtsbms AS text INTO TABLE @gt_drop
FROM zmmtdtsb.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'ZMMS062-ZDTSBBM'
values = gt_drop[]
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CLEAR gt_drop[].
CALL FUNCTION 'MARA_GET_SUB'
IMPORTING
wmara = mara
xmara = *mara
ymara = lmara.
* .
*
zmms062-zbjsx = mara-zbjsx.
zmms062-zssfl = mara-zssfl.
zmms062-zdtsbbm = mara-zdtsbbm.
zmms062-zbjfl = mara-zbjfl.
ENDMODULE.
MODULE assign_data:
*&---------------------------------------------------------------------*
*& Module ASSIGN_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE assign_data INPUT.
*BREAK-POINT.
mara-zbjsx = zmms062-zbjsx.
mara-zssfl = zmms062-zssfl.
mara-zdtsbbm = zmms062-zdtsbbm.
mara-zbjfl = zmms062-zbjfl.
MOVE-CORRESPONDING mara TO zmms062.
CALL FUNCTION 'MARA_GET_SUB'
IMPORTING
wmara = mara
xmara = *mara
ymara = lmara.
MOVE-CORRESPONDING zmms062 TO mara.
* gv_bjsx = gv_bjsx.
* FREE MEMORY ID 'ZMM062'.
* EXPORT gv_bjsx TO MEMORY ID 'ZMM062'.
*
CALL FUNCTION 'MARA_SET_SUB'
EXPORTING
wmara = mara.
ENDMODULE.
创建增强点:
SPRO入口,或者直接CMOD进去
创建增强分配 ZMME062
增强输入 MGA00001
功能出口:EXIT_SAPLMGMU_001
实现逻辑,把值赋到cmara视图
*&---------------------------------------------------------------------*
*& 包含 ZXMG0U02
*&---------------------------------------------------------------------*
TABLES: zmms062.
IF zmms062 IS NOT INITIAL.
MOVE-CORRESPONDING zmms062 TO CMARA.
ENDIF.
*IF sy-ucomm = 'BU' OR sy-ucomm = 'YES'.
* IMPORT gv_bjsx FROM MEMORY ID 'ZMM062'.
* zmms062-zbjsx = cmara-zbjsx.
* MODIFY zmms062 FROM zmms062.
*ENDIF.
配置屏幕
选择屏幕顺序:标准标识(段)表页,双击子屏幕
可以看到在空白子屏幕维护的屏幕
配置字段
前台页面效果mm01
mm03