




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
.5/5以下根據(jù)系統(tǒng)實例做的最終效果:SE11建立數(shù)據(jù)表,主要是用于存放附加的數(shù)據(jù);MANDT MANDT CLNT 3 0 客戶端MBLNR MBLNR CHAR 10 0 物料憑證編號MJAHR MJAHR NUMC 4 0 物料憑證年度ZEILE MBLPO NUMC 4 0 物料憑證中的項目BADI_ERFMG ERFMG QUAN 13 3 以輸入單位計的數(shù)量BADI_ERFME ERFME UNIT 3 0 條目單位建立結(jié)構(gòu),在屏幕數(shù)據(jù)交換時使用建立表類型設(shè)置關(guān)鍵字段:SE80建立函數(shù)組創(chuàng)建屏幕1000,設(shè)計格式,插入附加字段創(chuàng)建function:ZJIM_BADI_EXAMPLE_GET_DATA*"*"*"Local
interface:*"
EXPORTING*"
REFERENCE<ES_MIGO_BADI_SCREEN_FIELDS>
TYPE*"
ZJIM_BADI_EXAMPLE_SCREEN_FIELD*"*
Get
all
data
from
fields
of
external
screen*
First
move
all
customer-fieldsMOVE-CORRESPONDING
zjim_badi_exampl
TO
es_migo_badi_screen_fields.*
Second
move
all
GOITEM-fields
<displayed
on
external
screen>function:ZJIM_BADI_EXAMPLE_PUT_DATA*"*"*"Local
interface:*"
IMPORTING*"
REFERENCE<IS_MIGO_BADI_SCREEN_FIELDS>
TYPE*"
ZJIM_BADI_EXAMPLE_SCREEN_FIELD*"*
Put
all
data
from
fields
to
external
screen*
First
fill
all
customer-fieldsMOVE-CORRESPONDING
is_migo_badi_screen_fields
TO
ZJIM_badi_exampl.*
second
fill
all
GOITEM-fields
<displayed
on
external
screen>function:ZJIM_BADI_EXAMPLE_UPDATE_DATA*"*"*"Update
function
module:*"*"*"Local
interface:*"
TABLES*"
IT_MIGO_BADI_EXAMPLE
STRUCTURE
ZJIM_BADI_EXAMPL*"*
Databse
update:INSERT
zjim_BADI_EXAMPL
FROM
TABLE
IT_MIGO_BADI_EXAMPLE.IF
sy-subrc
<>
0.MESSAGE
a398<00>
WITH
'Error
update
MIGO_BADI_EXAMPL'.ENDIF.INCLUDE:LZJIM_BADI001TOPTABLES
:
Zjim_badi_exampl.到這里增強的準備工作就做完了,下面開始創(chuàng)建實現(xiàn):SE19創(chuàng)建實現(xiàn)創(chuàng)建執(zhí)行類ZCL_IM_JIM_MIGO_BADI,激活ZJIM_MIGO_BADI雙擊類維護類屬性GT_EXTDATA用于數(shù)據(jù)交換,類型為ZJIM_TY_T_EXTDATA表類型,激活以下方法并維護:method
IF_EX_MB_MIGO_BADI~INIT.*
Regristration
of
BAdI-Implementation:*
Append
class
attribute
GF_CLASS_ID
<='MIGO_BADI_IMPLEMENTATION1'>
to*
regristration
table.APPEND
gf_class_id
TO
ct_init.endmethod.METHOD
IF_EX_MB_MIGO_BADI~PBO_DETAIL
.DATA:
ls_extdata
TYPE
zjim_badi_example_screen_field.*
This
check
is
obligatory,
otherwise
the
program
flow
is
incorrect*
<If
there
would
be
more
than
one
implementation
of
BAdI
MB_MIGO_BADI,*
only
one
subscreen
would
be
displayed>.CHECK
i_class_id
=
gf_class_id.*
Show
screen
only
if
there
is
an
itemCHECK
i_line_id
<>
0.*
External
subscreen:*
The
content
of
global
field
G_NO_INPUT
<set
in
method
MODE_SET>
will*
influence
the
number
of
external
subsreen:if
g_no_input
is
initial.
e_cprog
=
'SAPLZJIM_BADI001'<006>."程序名為定義的函數(shù)組的名稱前加"SAPL"。
e_dynnr
=
'1000'.
"External
fields:
Input
e_heading
=
'ZJIM'<004>."顯示標簽的名稱endif.*
Set
G_LINE_ID
<=
line_id
of
item
displayed
on
detail-tabstrip>
g_line_id
=
i_line_id.*
Read
dataREAD
TABLE
gt_extdata
INTO
ls_extdata
WITH
TABLE
KEY
line_id
=
i_line_id.*
Export
data
to
function
group
<for
display
on
subscreen>CALL
FUNCTION
'ZJIM_BADI_EXAMPLE_PUT_DATA'EXPORTING
is_migo_badi_screen_fields
=
ls_extdata.ENDMETHOD.
"IF_EX_MB_MIGO_BADI~PBO_DETAILMETHOD
IF_EX_MB_MIGO_BADI~PAI_DETAIL
.**
Changing
parameter
E_FORCE_CHANGE
can
be
set
to
'X'.
In
this
case*
method
LINE_MODIFY
is
called.*
ATTENTION:*
DO
NOT
SET
parameter
E_FORCE_CHANGE
=
'
'.
In
this
case
you
might*
overwrite
parameter
E_FORCE_CHANGE
of
another
BAdI
implementation.*DATA:
ls_extdata_new
TYPE
zjim_badi_example_screen_field,
ls_extdata_old
TYPE
zjim_badi_example_screen_field.*
Only
if
a
line
existsCHECK
i_line_id
<>
0.*
Get
data
from
external
screenCALL
FUNCTION
'ZJIM_BADI_EXAMPLE_GET_DATA'IMPORTING
es_migo_badi_screen_fields
=
ls_extdata_new.*
Compare
new
data
with
old
dataREAD
TABLE
gt_extdata
INTO
ls_extdata_old
WITH
TABLE
KEY
line_id
=
i_line_id.
ls_extdata_new-line_id
=
i_line_id.IF
ls_extdata_old
<>
ls_extdata_new.*
If
there
were
any
changes,
it's
obligatory
to
force
MIGO
to
trigger*
method
LINE_MODIFY.
e_force_change
=
'X'.ENDIF.ENDMETHOD.
"IF_EX_MB_MIGO_BADI~PAI_DETAILMETHOD
IF_EX_MB_MIGO_BADI~LINE_MODIFY
.DATA:
ls_extdata_old
TYPE
zjim_badi_example_screen_field,
ls_extdata_new
TYPE
zjim_badi_example_screen_field,
ls_migo_badi_exampl
TYPE
zjim_badi_exampl,
l_subrc
TYPE
sy-subrc.*
Get
external
data
from
internal
table:READ
TABLE
gt_extdata
INTO
ls_extdata_old
WITH
TABLE
KEY
line_id
=
i_line_id.
l_subrc
=
sy-subrc.*
Update
data
in
internal
table:IF
l_subrc
<>
0.*
Line
is
new:
If
GOITEM
has
a
reference
to
a
material
document,*
the
already
existing
external
data
can
be
read.IF
NOT
cs_goitem-mblnr
IS
INITIAL
AND
NOT
cs_goitem-mjahr
IS
INITIALAND
NOT
cs_goitem-zeile
IS
INITIAL.SELECT
SINGLE
*
FROM
zjim_badi_exampl
INTO
ls_migo_badi_exampl
WHERE
mblnr
=
cs_goitem-mblnr
AND
mjahr
=
cs_goitem-mjahr
AND
zeile
=
cs_goitem-zeile.IF
sy-subrc
=
0.MOVE-CORRESPONDING
ls_migo_badi_exampl
TO
ls_extdata_new.ENDIF.ENDIF.*
ls_extdata_new-sgtxt
=
cs_goitem-sgtxt.
ls_extdata_new-line_id
=
i_line_id.INSERT
ls_extdata_new
INTO
TABLE
gt_extdata.ELSE.*
Line
exists:
Get
external
data
entered
on
BAdI-subscreeen,
but
only*
if
line_modify
was
called
for
the
item
displayed
in
the*
'detail
tabstrip'.check
g_line_id
=
i_line_id.CALL
FUNCTION
'ZJIM_BADI_EXAMPLE_GET_DATA'IMPORTING
es_migo_badi_screen_fields
=
ls_extdata_new.
ls_extdata_new-line_id
=
i_line_id.*
if
ls_extdata_new-sgtxt
<>
ls_extdata_old-sgtxt.**
Field
was
changed
on
external
screen*
cs_goitem-sgtxt
=
ls_extdata_new-sgtxt.*
else.**
Take
data
from
GOITEM*
ls_extdata_new-sgtxt
=
cs_goitem-sgtxt.*
endif.MODIFY
TABLE
gt_extdata
FROM
ls_extdata_new.ENDIF.ENDMETHOD.
"IF_EX_MB_MIGO_BADI~LINE_MODIFYMETHOD
IF_EX_MB_MIGO_BADI~LINE_DELETE
.DELETE
TABLE
gt_extdata
WITH
TABLE
KEY
line_id
=
i_line_id.ENDMETHOD.
"IF_EX_MB_MIGO_BADI~LINE_DELETEMETHOD
IF_EX_MB_MIGO_BADI~POST_DOCUMENT
.DATA:
ls_migo_badi_example
TYPE
ZJIM_badi_exampl,
lt_migo_badi_example
TYPE
TABLE
OF
zjim_badi_exampl,
ls_extdata
TYPE
zjim_badi_example_screen_field,
ls_xmseg
TYPE
mseg.FIELD-SYMBOLS:
<gt_extdata>
TYPE
migo_badi_example_screen_field.*
Transaction
MIGO
will
now
post
a
material
document.*
Any
errors
here
MUST
be
issued
as
A-message
<better:
X-message>*
Copy
data
from
material
document
into
internal
tableLOOP
AT
gt_extdata
INTO
ls_extdata.IF
g_cancel
IS
INITIAL.READ
TABLE
it_mseg
INTO
ls_xmseg
WITH
KEY
line_id
=
ls_extdata-line_id.ELSE.READ
TABLE
it_mseg
INTO
ls_xmseg
WITH
KEY
smbln
=
ls_extdata-mblnr
smblp
=
ls_extdata-zeile
sjahr
=
ls_extdata-mjahr.ENDIF.IF
sy-subrc
IS
INITIAL.MOVE-CORRESPONDING
ls_extdata
TO
ls_migo_badi_example.MOVE-CORRESPONDING
ls_xmseg
TO
ls_migo_badi_example.APPEND
ls_migo_badi_example
TO
lt_migo_badi_example.ENDIF.ENDLOOP.*
The
data
f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水質(zhì)監(jiān)測系統(tǒng)合作協(xié)議書
- 2025年燒傷整形科手術(shù)器械項目發(fā)展計劃
- 2025年戶用和村用風光互補發(fā)電系統(tǒng)控制器及逆變器項目發(fā)展計劃
- 企業(yè)如何借助科技力量推廣垃圾分類
- 2025年特種設(shè)備檢驗檢測項目發(fā)展計劃
- 智慧城市公共設(shè)施信息安全管理方案
- 教育心理學在藝術(shù)教育中的價值體現(xiàn)
- 教育心理學的激勵理論在教育中的應(yīng)用
- 教育心理學的反饋機制與學習效果提升研究
- 中職數(shù)學函數(shù)課件
- 杭州轉(zhuǎn)貸基金管理辦法
- 老北京胡同文化課件
- 公司安全隱患排查記錄表
- 糧食的形態(tài)與化學組成第二節(jié)糧食的主要化學成分下64課件
- 兒科護士考試試題及答案
- 農(nóng)藥 知識培訓課件下載
- 創(chuàng)新社區(qū)管樂團活動方案
- 中國農(nóng)田水利行業(yè)發(fā)展前景及發(fā)展策略與投資風險研究報告2025-2028版
- 鴕鳥養(yǎng)殖場管理制度
- 余料使用管理制度
- 金氏五行升降中醫(yī)方集
評論
0/150
提交評論