增强效果如下:
CMOD:创建增强-》AIST0002
在EXIT_SAPLAIST_002实现如下代码:
ANLA = I_ANLA .
ANLV = I_ANLV .
ANLU = I_ANLU .
GD_MODE = I_MODE .
GD_XSUBNO = I_XSUBNO .
GT_ANLZ[] = T_ANLZ[] .
GT_ANLB[] = T_ANLB[] .
GV_XMXG = I_ANLU-XMXG.
GV_FLAG = ''.
GV_CHANGE = ''.
CLEAR GT_XM[].
SELECT A~ZXMBM B~ZXMMC A~ZBL
INTO TABLE GT_XM
FROM ZTFI001 AS A
JOIN ZTFI002 AS B ON A~ZXMBM = B~ZXMBM
WHERE ANLN1 = I_ANLA-ANLN1
AND ANLN2 = I_ANLA-ANLN2
AND BUKRS = I_ANLA-BUKRS.
在EXIT_SAPLAIST_003实现如下代码:
DATA: LT_FI001 LIKE TABLE OF ZTFI001,
LS_FI001 LIKE ZTFI001.
IF SY-UCOMM = 'BUCH' AND GV_FLAG = ''.
DELETE FROM ZTFI001 WHERE BUKRS = ANLU-BUKRS AND ANLN1 = ANLU-ANLN1 AND ANLN2 = ANLU-ANLN2.
LOOP AT GT_XM INTO GS_XM.
MOVE-CORRESPONDING ANLU TO LS_FI001.
MOVE-CORRESPONDING GS_XM TO LS_FI001.
APPEND LS_FI001 TO LT_FI001.
ENDLOOP.
MODIFY ZTFI001 FROM TABLE LT_FI001.
GV_FLAG = 'X'.
ENDIF.
E_ANLU = ANLU.
在函数组创建屏幕:9001
在程序ZXAISZZZ中做9001屏幕的PBO/PAI代码如下:
*&---------------------------------------------------------------------*
*& 包含 ZXAISZZZ
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module TC9001_CHANGE_TC_ATTR OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE TC9001_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE GT_XM LINES TC9001-LINES.
IF GD_MODE NE 'A'.
TC9001-LINES = TC9001-LINES + 10.
ENDIF.
LOOP AT SCREEN.
IF GD_MODE = 'A'.
SCREEN-INPUT = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
DATA: LV_ZBL LIKE ZTFI001-ZBL.
CLEAR LV_ZBL.
DATA: LV_CODE(30).
DATA: LV_FIELD(30) VALUE '(SAPLAIST)OK-CODE'.
ASSIGN (LV_FIELD) TO FIELD-SYMBOL(<FS>).
IF <FS> IS ASSIGNED.
IF <FS> = 'DELE' OR <FS> = 'RW' OR <FS> = 'BEN' OR <FS> = 'ABB'
OR <FS> = 'TAB09' OR <FS> = 'PICK' OR <FS> = ''.
ELSE.
IF GT_XM IS NOT INITIAL AND GV_CHANGE = 'X'.
* CLEAR GV_CHANGE.
LOOP AT GT_XM INTO GS_XM.
LV_ZBL = LV_ZBL + GS_XM-ZBL.
ENDLOOP.
IF LV_ZBL NE 100.
CLEAR <FS>.
MESSAGE E001(00) WITH '比例必须为100%'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CASE SY-UCOMM.
WHEN 'DELE'.
DELETE GT_XM WHERE SEL = 'X'.
* WHEN .
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module UPDATE_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE UPDATE_DATA INPUT.
IF GS_XM-ZXMBM IS INITIAL.
DELETE GT_XM INDEX TC9001-CURRENT_LINE.
ELSE.
LOOP AT GT_XM INTO DATA(LS_XM) WHERE ZXMBM = GS_XM-ZXMBM.
IF SY-TABIX NE TC9001-CURRENT_LINE.
MESSAGE E001(00) WITH '已存在相同数据'.
ENDIF.
ENDLOOP.
SELECT SINGLE ZXMMC INTO GS_XM-ZXMMC FROM ZTFI002
WHERE ZXMBM = GS_XM-ZXMBM.
IF SY-SUBRC NE 0.
MESSAGE E001(00) WITH '项目编码不正确'.
ENDIF.
MODIFY GT_XM FROM GS_XM INDEX TC9001-CURRENT_LINE.
IF SY-SUBRC NE 0.
APPEND GS_XM TO GT_XM.
ENDIF.
IF GV_XMXG = ''.
ANLU-XMXG = 'X'.
ELSE.
ANLU-XMXG = ''.
ENDIF.
ENDIF.
GV_CHANGE = 'X'.
ENDMODULE.
通过事务代码:AOLA新建资产格式,复制SAP到ZSAP
双击表页标题,
增加需要页签9:项目信息
需要注意的是前台不能直接输入9,系统会提示标签9不允许,系统只有8个,我们可以在修改后台表TAMLAY1,增加数据信息
选中9,双击组位置,绑定组框,U9001为前面创建屏幕9001,这里也是只能通过修改表TAMLAY2维护
事务代码AOLK,维护资产分类对应的布局
PS:如果不想新建页签,也可以直接挂在现有页签下,
AOLA: