MIGO供应商批次增强Word格式.docx
《MIGO供应商批次增强Word格式.docx》由会员分享,可在线阅读,更多相关《MIGO供应商批次增强Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
创建屏幕1000,
设计格式,插入供应商批次字段
创建function:
zmigo_103_get_data
FUNCTION
zmigo_103_get_data.
*"
----------------------------------------------------------------------
Local
interface:
EXPORTING
VALUE(ES_MIGO_BADI_SCREEN_FIELDS)
TYPE
ZSMIGO_103
*
Get
all
data
from
fields
of
external
screen
First
move
customer-fields
MOVE-CORRESPONDING
zmigo_103
TO
es_migo_badi_screen_fields..
ENDFUNCTION.
function:
ZMIGO_103_PUT_DATA
ZMIGO_103_PUT_DATA.
IMPORTING
VALUE(IS_MIGO_BADI_SCREEN_FIELDS)
ZSMIGO_103
OPTIONAL
Put
to
fill
is_migo_badi_screen_fields
ZMIGO_103.
ZMIGO_103_UPDATE_DATA
zmigo_103_update_data.
TABLES
IT_MIGO_BADI_EXAMPLE
STRUCTURE
ZMIGO_103
INSERT
FROM
TABLE
it_migo_badi_example.
IF
sy-subrc
<
>
0.
MESSAGE
a398(00)
WITH
'
收货批次更新失败
.
ENDIF.
5、SE19创建实现
6、创建执行类ZCL_IM_103_MIGO_BADI,激活Z103_MIGO_BADI
双击类
维护类属性
维护下列方法,激活所有,运行T_codeMIGO就可以看到第一个图的效果了。
在创建执行类的时候所有方法里面会对应生成相应的代码,有些方法用不到,就注释掉
不然激活的时候会报错。
method
IF_EX_MB_MIGO_BADI~INIT.
Regristration
BAdI-Implementation:
Append
class
attribute
GF_CLASS_ID
(='
MIGO_BADI_IMPLEMENTATION1'
)
to
regristration
table.
APPEND
gf_class_id
ct_init.
endmethod.
METHOD
if_ex_mb_migo_badi~pbo_detail.
DATA:
ls_extdata
zsmigo_103.
This
check
is
obligatory,
otherwise
the
program
flow
incorrect
(If
there
would
be
more
than
one
implementation
BAdI
MB_MIGO_BADI,
only
subscreen
displayed).
CHECK
i_class_id
=
gf_class_id.
Show
screen
if
an
item
i_line_id
External
subscreen:
The
content
global
field
G_NO_INPUT
(set
in
MODE_SET)
will
influence
number
subsreen:
g_no_input
IS
INITIAL
AND
g_bwart
103'
e_cprog
SAPLZMIGO_103'
e_dynnr
1000'
.
"
fields:
Input
e_heading
收货批次'
*101移动类型也增加输入
lanyf
2016-1-13
DEVK921012
101'
105'
供应商批次'
Set
G_LINE_ID
(=
line_id
item
displayed
on
detail-tabstrip)
g_line_id
i_line_id.
Read
data
READ
gt_extdata
INTO
ls_extdata
KEY
Export
function
group
(for
display
subscreen)
CALL
ZMIGO_103_PUT_DATA'
ls_extdata.
ENDMETHOD.
IF_EX_MB_MIGO_BADI~PBO_DETAIL
if_ex_mb_migo_badi~pai_detail.
*-----------------------------------------------------------------------
Changing
parameter
E_FORCE_CHANGE
can
set
X'
In
this
case
LINE_MODIFY
called.
ATTENTION:
DO
NOT
SET
case
you
might
overwrite
another
implementation.
ls_extdata_new
zsmigo_103,
ls_extdata_old
Only
a
line
exists
ZMIGO_103_GET_DATA'
es_migo_badi_screen_fields
ls_extdata_new.
Compare
new
with
old
ls_extdata_old
ls_extdata_new-line_id
If
were
any
changes,
it'
s
obligatory
force
MIGO
trigger
LINE_MODIFY.
e_force_change
IF_EX_MB_MIGO_BADI~PAI_DETAIL
if_ex_mb_migo_badi~line_modify.
ls_migo_badi_exampl
zmigo_103,
l_subrc
sy-subrc.
internal
table:
Update
Line
new:
GOITEM
has
reference
material
document,
already
existing
read.
cs_goitem-mblnr
cs_goitem-mjahr
INITIAL
cs_goitem-zeile
INITIAL.
cs_goitem-bwart
or
."
增强101收货批次
2016-1-13
SELECT
SINGLE
ls_migo_badi_exampl
WHERE
mblnr
cs_goitem-mblnr
mjahr
cs_goitem-mjahr
zeile
cs_goitem-zeile.
ELSEIF
ebeln
cs_goitem-ebeln
ebelp
cs_goitem-ebelp
cs_goitem-lfbja
cs_goitem-lfbnr
cs_goitem-lfpos.
gt_extdata.
ELSE.
exists:
entered
BAdI-subscreeen,
but
only
line_modify
was
called
for
the
detail
tabstrip'
ls_extdata_new-sgtxt
ls_extdata_old-sgtxt.
**
Field
changed
cs_goitem-sgtxt
ls_extdata_new-sgtxt.
else.
Take
GOITEM
cs_goitem-sgtxt.
endif.
MODIFY
OR
licha
cs_goitem-licha
zmigo_103
IF_EX_MB_MIGO_BADI~LINE_MODIFY
IF_EX_MB_MIGO_BADI~LINE_DELETE.
DELETE
IF_EX_MB_MIGO_BADI~LINE_DELETE
IF_EX_MB_MIGO_BADI~RESET.
Clear
data:
CLEAR:
gt_extdata,
g_no_input,
gs_exdata_header,
G_BWART,
G_XS,
g_cancel,
g_line_id.
IF_EX_MB_MIGO_BADI~RESET
if_ex_mb_migo_badi~post_document.
ls_migo_badi_example
lt_migo_badi_example
OF
ls_xmseg
mseg,
l_xchar
marc-xchar.
FIELD-SYMBOLS:
gt_extdata>
Transaction
will
now
post
document.
Any
errors
here
MUST
issued
as
A-message
(better:
X-message)
Copy
document
into
table
LOOP
AT
g_cancel
it_mseg
ls_xmseg
ls_extdata-line_id.
smbln
ls_extdata-mblnr
smblp
ls_extdata-zeile
sjahr
ls_extdata-mjahr.
(
ls_xmseg-bwart
ls_xmseg-werks
ls_migo_badi_example.
ls_migo_badi_example-mblnr
ls_xmseg-mblnr.
ls_migo_badi_example-zeile
ls_xmseg-zeile.
ls_migo_badi_example-mjahr
ls_xmseg-mjahr.
ls_migo_badi_example-ebeln
ls_xmseg-ebeln.
ls_migo_badi_example-ebelp
ls_xmseg-ebelp.
ls_migo_badi_example-matnr
ls_xmseg-matnr.
ls_migo_badi_example-werks
ls_xmseg-werks.
ls_migo_badi_example-lgort
ls_xmseg-lgort.
ls_migo_badi_example-charg
ls_xmseg-charg.
*判断是否为必填
xchpf
l_xchar
marc
matnr
ls_xmseg-matnr
werks
ls_xmseg-werks
xchpf
ls_extdata-licha
I