1. 程式人生 > >BADI:UJD_ROUTINE

BADI:UJD_ROUTINE

init internal float 處理 col 過濾 logs pla img

BADI:UJD_ROUTINE

UJD_ROUTINE

在將數據寫入數據庫之前,Transformation file 和Conversion file是用於幫助處理導入的數據。在BPC 10.1中,Transformation file現在支持使用兩個新的參數選項,即START_ROUTINE和END_ROUTINE。這些參數用於觸發後端ABAP系統上的BAdI得以實現,用戶可以在其中寫入自定義的ABAP code來處理數據以滿足特定的需求。

概念 :

START_ROUTINE: 作用於讀取數據源之後,但在Transformation file 和Conversion file邏輯被應用之前中觸發。通常,START_ROUTINE用於檢查,報錯,過濾。

END_ROUTINE: 所有處理完成後,在數據提交到數據庫之前調用。通常可以靈活調取自定義數據,修改數據等。

例子 :

對於END_ROUTINE BAdI實現,我們將實現將從自建表中取值,然後更新到BPC主數據中。

  • ENTITY主數據屬性如下:

技術分享圖片
屬性

  • 通過flat file上傳ENTITY主數據如下:

技術分享圖片
zprofitcenter為空

  • 自建表數據如下:

技術分享圖片
zid對應flat file中的ID,將zprofitcenter寫入entity屬性中


步驟:

創建實施類 :se19

技術分享圖片
se19

技術分享圖片
name

技術分享圖片
Filter Name = BADIIMPL Name

技術分享圖片
編譯method

輸入代碼:


  1. METHOD if_ujd_routine~runroutine.


  2. DATA: lo_dataref TYPE REF TO data.

  3. FIELD-SYMBOLS: <lt_data_im> TYPE STANDARD TABLE.

  4. FIELD-SYMBOLS: <lt_data_ex> TYPE STANDARD TABLE.

  5. FIELD-SYMBOLS: <ls_data> TYPE ANY.

  6. FIELD-SYMBOLS: <lv_id> TYPE string.

  7. FIELD-SYMBOLS: <lv_ecc_cc> TYPE string
    .

  8. * Assign importing data reference to field symbol

  9. ASSIGN ir_data->* TO <lt_data_im>.

  10. * Create work area for importing data

  11. CREATE DATA lo_dataref LIKE LINE OF <lt_data_im>.

  12. ASSIGN lo_dataref->* TO <ls_data>.

  13. * Create new internal table for exporting data

  14. CREATE DATA lo_dataref LIKE TABLE OF <ls_data>.

  15. ASSIGN lo_dataref->* TO <lt_data_ex>.

  16. * Get ECC_CC value from custom table or other datasource
  17. LOOP AT <lt_data_im> ASSIGNING <ls_data>.
  18. * 將flat file中主數據中寫入

  19. ASSIGN COMPONENT ‘ID‘ OF STRUCTURE <ls_data> TO <lv_id>.
  20. IF sy-subrc <> 0 OR <lv_id> IS INITIAL.
  21. CONTINUE.
  22. ENDIF.

  23. ASSIGN COMPONENT ‘ZPROFITCENTER‘ OF STRUCTURE <ls_data> TO <lv_ecc_cc>.
  24. IF sy-subrc <> 0 OR <lv_id> IS INITIAL.
  25. CONTINUE.
  26. ENDIF.

  27. // 具體選擇代碼如下
  28. select single zprofitcenter
  29. into <lv_ecc_cc>
  30. FROM zpc_cc
  31. where zid = <lv_id>.

  32. APPEND <ls_data> TO <lt_data_ex>.
  33. ENDLOOP.
  34. * Exporting data to exporting data references
  35. GET REFERENCE OF <lt_data_ex> INTO er_data.

  36. ENDMETHOD.


  • transformation file

技術分享圖片
transformation file

結果:

技術分享圖片
get

結論:

舉例比較簡單,所實現的效果,可以被很多功能替代,但是可以初步了解下badi的作用。

歡迎使用 小書匠(xiaoshujiang)編輯器,您可以通過設置裏的修改模板來改變新建文章的內容。

BADI:UJD_ROUTINE