BADI:UJD_ROUTINE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BADI:UJD_ROUTINE相关的知识,希望对你有一定的参考价值。

BADI: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.  
  2. METHOD if_ujd_routine~runroutine. 
  3.  
  4.  
  5. DATA: lo_dataref TYPE REF TO data. 
  6.  
  7. FIELD-SYMBOLS: <lt_data_im> TYPE STANDARD TABLE. 
  8.  
  9. FIELD-SYMBOLS: <lt_data_ex> TYPE STANDARD TABLE. 
  10.  
  11. FIELD-SYMBOLS: <ls_data> TYPE ANY. 
  12.  
  13. FIELD-SYMBOLS: <lv_id> TYPE string
  14.  
  15. FIELD-SYMBOLS: <lv_ecc_cc> TYPE string
  16.  
  17. * Assign importing data reference to field symbol 
  18.  
  19. ASSIGN ir_data->* TO <lt_data_im>. 
  20.  
  21. * Create work area for importing data 
  22.  
  23. CREATE DATA lo_dataref LIKE LINE OF <lt_data_im>. 
  24.  
  25. ASSIGN lo_dataref->* TO <ls_data>. 
  26.  
  27. * Create new internal table for exporting data 
  28.  
  29. CREATE DATA lo_dataref LIKE TABLE OF <ls_data>. 
  30.  
  31. ASSIGN lo_dataref->* TO <lt_data_ex>. 
  32.  
  33. * Get ECC_CC value from custom table or other datasource 
  34. LOOP AT <lt_data_im> ASSIGNING <ls_data>. 
  35. * 将flat file中主数据中写入 
  36.  
  37. ASSIGN COMPONENT ‘ID‘ OF STRUCTURE <ls_data> TO <lv_id>. 
  38. IF sy-subrc <> 0 OR <lv_id> IS INITIAL. 
  39. CONTINUE. 
  40. ENDIF. 
  41.  
  42. ASSIGN COMPONENT ‘ZPROFITCENTER‘ OF STRUCTURE <ls_data> TO <lv_ecc_cc>. 
  43. IF sy-subrc <> 0 OR <lv_id> IS INITIAL. 
  44. CONTINUE. 
  45. ENDIF. 
  46.  
  47. // 具体选择代码如下 
  48. select single zprofitcenter 
  49. into <lv_ecc_cc> 
  50. FROM zpc_cc 
  51. where zid = <lv_id>. 
  52.  
  53. APPEND <ls_data> TO <lt_data_ex>. 
  54. ENDLOOP. 
  55. * Exporting data to exporting data references 
  56. GET REFERENCE OF <lt_data_ex> INTO er_data. 
  57.  
  58. ENDMETHOD. 
  59.  
  60.  
  • transformation file

技术分享图片

transformation file

结果:

技术分享图片

get

结论:

举例比较简单,所实现的效果,可以被很多功能替代,但是可以初步了解下badi的作用。

欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过设置里的修改模板来改变新建文章的内容。










以上是关于BADI:UJD_ROUTINE的主要内容,如果未能解决你的问题,请参考以下文章

SAP,ABAP中BADI的定义,接口,类,实现,方法

一个BADI中实施多个Implementation

谁告诉我SAP,ABAP中BADI的BADI定义,接口,类,实现,方法,这几个概念之间的关系是啥啊

abap bapi badi 有啥区别?怎样查找?怎样使用? 标准程序自建增强点怎么做?

查找增强出口和BADI程序

20170520 BADI增强学习