日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP增强 BADI屏幕增强实例(MIGO增加分页签)

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP增强 BADI屏幕增强实例(MIGO增加分页签) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最終效果:以下根據系統實例做的

(需要注意第4步中的UPDATE函數配置)

?

1、SE11建立數據表,主要是用于存放附加的數據;

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?????? 以輸入單位計的數量

BADI_ERFME??? ERFME???? UNIT??????? 3?????? 0?????? 條目單位

2、建立結構,在屏幕數據交換時使用

3、建立表類型

設置關鍵字段:

4、SE80建立函數組

注意:ZJIM_BADI_EXAMPLE_UPDATE_DATA

創建屏幕1000,

設計格式,插入附加字段

創建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-fields
??MOVE-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-fields
??MOVE-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_BADI001TOP

TABLES?:?Zjim_badi_exampl.

到這里增強的準備工作就做完了,下面開始創建實現:

5、SE19創建實現

?

6、創建執行類ZCL_IM_JIM_MIGO_BADI,激活ZJIM_MIGO_BADI??

?SE80? class

SE37 查看函數

以上界面:SE19

雙擊類

維護類屬性

GT_EXTDATA 用于數據交換,類型為ZJIM_TY_T_EXTDATA表類型,

7、激活以下方法并維護:

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?item
??CHECK?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).? "程序名為定義的函數組的名稱前加“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?data
??READ?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_DETAIL

?

?

METHOD?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?exists
??CHECK?i_line_id?<>?0.
*?Get?data?from?external?screen
??CALL?FUNCTION?'ZJIM_BADI_EXAMPLE_GET_DATA'
????IMPORTING
??????es_migo_badi_screen_fields?=?ls_extdata_new.
*?Compare?new?data?with?old?data
??READ?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_DETAIL

?

METHOD?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?INITIAL
??????AND?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_MODIFY

?

METHOD?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_DELETE

?

METHOD?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?table
??LOOP?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?from?external?detail?screen?can?be?saved?now:
??CHECK?gt_extdata?IS?NOT?INITIAL.
??CALL?FUNCTION?'ZJIM_BADI_EXAMPLE_UPDATE_DATA'?IN?UPDATE?TASK
????TABLES
??????it_migo_badi_example?=?lt_migo_badi_example.
*?The?data?from?external?header?screen?can?be?saved?now:
*??MOVE-CORRESPONDING?is_mkpf?TO?gs_exdata_header.
*??CALL?FUNCTION?'MIGO_BADI_EXAMPLE_UPDATE_HEAD'?IN?UPDATE?TASK
*????EXPORTING
*??????is_migo_badi_header_fields?=?gs_exdata_header.

ENDMETHOD.????????????????????"IF_EX_MB_MIGO_BADI~POST_DOCUMENT

?

METHOD?IF_EX_MB_MIGO_BADI~RESET?.
*?Clear?all?internal?data:
??CLEAR:?gt_extdata,
?????????g_no_input,
?????????gs_exdata_header,
?????????g_cancel,
?????????g_line_id.

ENDMETHOD.????????????????????"IF_EX_MB_MIGO_BADI~RESET

激活所有,運行T_code MIGO 就可以看到第一個圖的效果了。

總結

以上是生活随笔為你收集整理的SAP增强 BADI屏幕增强实例(MIGO增加分页签)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。