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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Classic BADI总结

發(fā)布時(shí)間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Classic BADI总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這里對(duì)sap Classic Badi 做一下總結(jié),雖然已經(jīng)是過時(shí)的技術(shù)了.

  • Classic BADI的創(chuàng)建
  • Classic BADI的實(shí)施
  • Classic BADI的調(diào)用及運(yùn)行原理
  • New BADI
  • FCODE增強(qiáng)
  • 屏幕增強(qiáng)
  • Classic BADI的創(chuàng)建
  • 事務(wù)代碼:SE18

    由于Classic Badi 已經(jīng)是過時(shí)的技術(shù)了,現(xiàn)在提倡用4代增強(qiáng)NEW BADI.所有三代增強(qiáng)的創(chuàng)建入口被隱藏在實(shí)用程序下邊.

    入口 SE18--Utilities--Create classic BAdi.

    填寫必要字段

      

    注意一下系統(tǒng)自動(dòng)生成的類 ZCL_EX_TEST_OLD_BADI2.這個(gè)類是BADI運(yùn)行的關(guān)鍵.后面會(huì)講到.

    Multiple Use 如果打勾了,那么這個(gè)Badi可以同時(shí)存在多個(gè)激活的實(shí)例.但實(shí)例執(zhí)行的順序是沒有規(guī)律的.

    如果Multiple Use打勾了,則該BADI定義就不能有按鍵增強(qiáng)和子屏幕增強(qiáng)了.

    Filter-Depend如果打勾了,需要填寫一個(gè)過濾器類型,過濾器類型有如下限制: 是char類型的數(shù)據(jù)元素;長度不能超過30位;具有搜索幫助;有一個(gè)具有固定值或者值表的域.

    如果啟用了過濾器,則所有BADI接口的方法的參數(shù)中會(huì)自動(dòng)(也必須)包含一個(gè)輸入?yún)?shù)(importing):FLT_VAL.

    如果Filter-Depend打勾了,則該BAID就不能有按鍵增強(qiáng).

    在創(chuàng)建BADI時(shí)系統(tǒng)會(huì)自動(dòng)根據(jù)BADI的名稱建議一個(gè)接口名稱,該名稱和自動(dòng)生成的BADI類只是前綴不同.當(dāng)然接口名稱可以修改.

    雙擊接口名稱就可以創(chuàng)建該接口,在接口創(chuàng)建界面定義方法和屬性值.

    如果啟用了過濾器,則所有BADI接口的方法的參數(shù)中會(huì)自動(dòng)(也必須)包含一個(gè)輸入?yún)?shù)(importing):FLT_VAL.

    此處創(chuàng)建的接口將作為BADI實(shí)施類的接口.

    當(dāng)激活BAID時(shí),系統(tǒng)將會(huì)根據(jù)接口生成有一個(gè)上邊提到的BADI類ZCL_EX_TEST_OLD_BADI2,自然該類將包含接口中的所有方法及屬性.

    關(guān)于按鍵增強(qiáng)(狀態(tài)欄增強(qiáng))及子屏幕增強(qiáng)將在后邊講.

    ? ?? 2. ? ? Classic BADI的實(shí)施 ?

    ? ? ? ? ? ? ?? 事務(wù)碼:SE19.

    ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? 在Create Implementation 框中,選擇Classic BAdI.輸入BADI名稱,點(diǎn)擊Create按鍵創(chuàng)建BADI實(shí)施.

    ? ? ? ? ? ? ? ?

    ? ? ? ? ? ? ? 指定BADI實(shí)施名稱,繼續(xù).

    ? ? ? ? ? ?? 如果BADI包含過濾器FILTER.則在BADI實(shí)施的屬性頁中必須指定過濾值Filter value(可以是多值).只有在在調(diào)用BADI的類的接口方法時(shí),傳入給參數(shù)FLT_VAL的值等于該實(shí)施的 Filter value 時(shí),該實(shí)施對(duì)應(yīng)的方法才會(huì)被調(diào)用.詳情見BADI的調(diào)用.

    ? ? ? ? ? ??

    ? ? ? ? ??

    ? ? ? ? ? ? 然后可以在interface頁中重寫所有BADI接口的方法了. 沒有問題后激活,則badi實(shí)施就完成了.

    ? ? ? ? ?? 如果BADI不是多次使用的.則同時(shí)只能有一個(gè)實(shí)施是激活的.

    ? ? ?? 3. Classic BADI的調(diào)用,運(yùn)行原理及相關(guān)數(shù)據(jù)庫透明表.

    ? ? ? ? ?? 與三代之前的增強(qiáng)相關(guān)的內(nèi)容都放在包SECE(Enhancement concept)中.

    ? ? ? ? ?? 其中與三代BADI相關(guān)的視圖或者表如下:

    ? ? ? ? ? 視圖BADI_DATA:包含了BADI名稱,過濾器Filter的數(shù)據(jù)元素,是否可以重復(fù)可以多次使用,BADI接口,BADI類等信息


    ? ? ? ? ?? 視圖:V_EXT_ACT 包含了BADI對(duì)應(yīng)的活動(dòng)的實(shí)施

    ? ? ? ? BADI調(diào)用時(shí),需要先定義一個(gè)類型為BADI接口的參考變量.當(dāng)然類型為BADI類也可以.

    ? ? ?? 然后調(diào)用類cl_exithandler的靜態(tài)方法get_instance.

    ? ? ? 然后用返回的參考變量調(diào)用方法就可以了.

    DATA gr_test_odl_badi TYPE REF TO zif_ex_test_old_badi. DATA gv_string TYPE string.PARAMETERS p_bukrs TYPE bukrs.START-OF-SELECTION.CALL METHOD cl_exithandler=>get_instance * EXPORTING * exit_name = * null_instance_accepted = SEEX_FALSE * IMPORTING * act_imp_existing =CHANGINGinstance = gr_test_odl_badi "需要注意的時(shí)此時(shí)返回的參考變量為BADI類的參考變量,而不是實(shí)施類的參考變量. * EXCEPTIONS * no_reference = 1 * no_interface_reference = 2 * no_exit_interface = 3 * class_not_implement_interface = 4 * single_exit_multiply_active = 5 * cast_error = 6 * exit_not_existing = 7 * data_incons_in_exit_managem = 8 * others = 9 .IF sy-subrc <> 0. * Implement suitable error handling hereENDIF.CALL METHOD gr_test_odl_badi->get_butxt EXPORTINGflt_val = p_bukrsCHANGINGbutxt = gv_string.

    ? ? ?前邊我們提到過,在激活BADI時(shí)系統(tǒng)會(huì)自動(dòng)生成一個(gè)BADI的類(這個(gè)類也是參考BADI接口創(chuàng)建的)及其方法.

    ? ?? 使用cl_exithandler=>get_instance歸回的參考變量就是BADI類的參考變量.

    ? ? 該方法通過cl_abap_typedescr=>describe_by_data 獲取changing參數(shù)gr_test_odl_badi類型對(duì)應(yīng)的接口.

    ? ? 通過接口在表SXS_INTER中找到BADI名稱.然后通過拼接獲取BADI對(duì)應(yīng)類的名稱.

    ? ? 之后我們調(diào)用的方法gr_test_odl_badi->get_butxt就是激活BADI時(shí),系統(tǒng)自動(dòng)生成的方法.

    ? ? 該方法的作用在于檢查該BADI是否有激活的實(shí)施.

    ? ? 如果存在,則依次調(diào)用每個(gè)實(shí)施類的相同的方法.

    轉(zhuǎn)載于:https://www.cnblogs.com/weixiaopeng/p/old_badi.html

    總結(jié)

    以上是生活随笔為你收集整理的Classic BADI总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。