步骤
1、在相应的表里加附加字段(抬头数据 likp, 行项目数据lips)
2、编写程序 或者 函数组,创建屏幕,画出屏幕布局
3、交货单抬头屏幕增强BADI:LE_SHP_TAB_CUST_HEAD .
交货单行项目屏幕增强BADI:LE_SHP_TAB_CUST_ITEM
1、在相应的表里加附加字段(抬头数据 likp, 行项目数据lips)
a、抬头数据
b、行项目数据
2、编写程序 或者 函数组,创建屏幕,画出屏幕布局
我在这里是建了一个程序,函数组也一样的,
a、建立程序,建立屏幕9001,安排好样式
屏幕9001
屏幕的逻辑流
"获取表里数据,或者填的数据 lv_trtyp 这个字段是判断当前状态是不是为编辑,比如事务码为vl03,但是我们点编辑,这个时候单纯的判断事务码就不能实现显示和修改
在显示之前 通过 GET PARAMETER ID 'ZSHDD' FIELD likp-zshdd. 的方法获取对应的值
MODULE status_9001 OUTPUT.
"修改显示标识 A 显示,V 修改
"DATA lv_trtyp TYPE trtyp.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
GET PARAMETER ID 'ZSHDD' FIELD likp-zshdd.
GET PARAMETER ID 'ZSHRY' FIELD likp-zshry.
GET PARAMETER ID 'ZLXDH' FIELD likp-zlxdh.
GET PARAMETER ID 'ZWLFS' FIELD likp-zwlfs.
GET PARAMETER ID 'ZDZ' FIELD likp-zdz.
GET PARAMETER ID 'ZMBLNR' FIELD likp-zmblnr.
GET PARAMETER ID 'MJA' FIELD likp-zmjahr.
GET PARAMETER ID 'ZDFKH' FIELD likp-zdfkh.
GET PARAMETER ID 'ZDFMC' FIELD likp-zdfmc.
GET PARAMETER ID 'ZVBELN' FIELD likp-zvbeln.
GET PARAMETER ID 'ZVBELN_J' FIELD likp-zvbeln_j.
GET PARAMETER ID 'ZVBELN_W' FIELD likp-zvbeln_w.
GET PARAMETER ID 'ZTYP' FIELD DATA(lv_trtyp).
GET PARAMETER ID 'LFART' FIELD DATA(lv_lfart).
IF sy-tcode = 'VL03N'.
LOOP AT SCREEN.
IF screen-name = 'LIKP-ZSHDD' OR screen-name = 'LIKP-ZSHRY'
OR screen-name = 'LIKP-ZLXDH'
OR screen-name = 'LIKP-ZWLFS' OR screen-name = 'LIKP-ZDZ'
OR screen-name = 'LIKP-ZMBLNR' OR screen-name = 'LIKP-ZMJAHR'
OR screen-name = 'LIKP-ZDFKH' OR screen-name = 'LIKP-ZDATE'
OR screen-name = 'LIKP-ZDFMC' OR screen-name = 'LIKP-ZVBELN' OR screen-name = 'LIKP-ZVBELN_J' OR screen-name = 'LIKP-ZVBELN_W'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
LOOP AT SCREEN.
IF screen-name = 'LIKP-ZSHDD' OR screen-name = 'LIKP-ZSHRY'
OR screen-name = 'LIKP-ZLXDH' OR screen-name = 'LIKP-ZDATE'
OR screen-name = 'LIKP-ZWLFS' OR screen-name = 'LIKP-ZDZ'
OR screen-name = 'LIKP-ZMBLNR' OR screen-name = 'LIKP-ZMJAHR'
OR screen-name = 'LIKP-ZDFKH' OR screen-name = 'LIKP-ZDFMC' OR screen-name = 'LIKP-ZVBELN' OR screen-name = 'LIKP-ZVBELN_J' OR screen-name = 'LIKP-ZVBELN_W'.
IF lv_trtyp = 'A'.
screen-input = 0.
ELSEIF lv_trtyp = 'V'.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
IF sy-tcode = 'VL01N'.
IF likp-zshdd IS INITIAL.
SELECT SINGLE
zshdd
zshry
zlxdh
zwlfs
zdz
INTO (likp-zshdd,likp-zshry,likp-zlxdh,likp-zwlfs,likp-zdz)
FROM vbak
WHERE vbeln = lv50c-vbeln.
ENDIF.
IF likp-zdfkh IS INITIAL AND lv_lfart = 'ZLF'.
SELECT SINGLE
zdfkh
zdfmc
FROM vbak
INTO (likp-zdfkh,likp-zdfmc)
WHERE vbeln = lv50c-vbeln.
ENDIF.
ENDIF.
ENDMODULE.
修改或者按钮以后把值写回去
MODULE user_command_9001 INPUT.
SET PARAMETER ID 'ZSHDD' FIELD likp-zshdd.
SET PARAMETER ID 'ZSHRY' FIELD likp-zshry.
SET PARAMETER ID 'ZLXDH' FIELD likp-zlxdh.
SET PARAMETER ID 'ZWLFS' FIELD likp-zwlfs.
SET PARAMETER ID 'ZDZ' FIELD likp-zdz.
SET PARAMETER ID 'ZMBLNR' FIELD likp-zmblnr.
SET PARAMETER ID 'MJA' FIELD likp-zmjahr.
SET PARAMETER ID 'ZDFKH' FIELD likp-zdfkh.
SET PARAMETER ID 'ZDFMC' FIELD likp-zdfmc.
SET PARAMETER ID 'ZVBELN' FIELD likp-zvbeln.
SET PARAMETER ID 'ZVBELN_J' FIELD likp-zvbeln_j.
SET PARAMETER ID 'ZVBELN_W' FIELD likp-zvbeln_w.
" SET PARAMETER ID 'ZDTE' FIELD likp-zdate.
ENDMODULE.
3、交货单抬头屏幕增强BADI:LE_SHP_TAB_CUST_HEAD
通过方法跟标准程序关联,回写和读取增强数据
se18 BADI 创建实施
也可以自己建个方法:
分别在方法里添加代码
head 和 item 做法相似。可以参考
最后显示:
抬头数据