注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

BAPI_ACC_DOCUMENT_POST 增强:BADI FOR EXTENSION2  

2012-08-10 14:59:37|  分类: Enhancement |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

针对BAPI_ACC_DOCUMENT_POST有的参数没有对应的字段传入,系统提供了参数EXTENSION2,利用BADI可以解决字段值的传入

This enhancement structure can be used to transfer additional fields.

There are four fields available for each data record (VALUEPART1 - 4), which each contain 240 characters. A defined ABAP dictionary structure can be transferred in the field STRUCTURE, on the basis of which the field contents are read.

The accounting document can be supplemented and changed in an implemented BAdI ( ACC_DOCUMENT) before the active accounting component is called.

 增强:

BADI名称:ACC_DOCUMENT
方法名称:CHANGE

BAPI_ACC_DOCUMENT_POST 增强:BADI FOR EXTENSION2 - XINBOS SAP - XINBOS SAP BLOG
 
过滤器值:BKPF
BAPI_ACC_DOCUMENT_POST 增强:BADI FOR EXTENSION2 - XINBOS SAP - XINBOS SAP BLOG
 
相关代码:
METHOD IF_EX_ACC_DOCUMENT~CHANGE.
  DATAWA_EXTENSION TYPE BAPIPAREX,
        ZEXT_DATA    TYPE ZFIDOCEXT.

  FIELD-SYMBOLS<ACCIT> TYPE ACCIT.
  IF C_EXTENSION2[] IS NOT INITIAL.
    LOOP AT C_EXTENSION2 INTO WA_EXTENSION
    WHERE STRUCTURE 'ZFIDOCEXT'.
      ZEXT_DATA WA_EXTENSION-VALUEPART1.
      READ TABLE C_ACCIT ASSIGNING <ACCIT> WITH KEY POSNR ZEXT_DATA-POSNR.
      IF SY-SUBRC 0.
        <ACCIT>-BSCHL ZEXT_DATA-BSCHL.
      ENDIF.
    ENDLOOP.
  ENDIF.

ENDMETHOD.


系统示例:The class CL_EXM_IM_ACC_DOCUMENT
The class CL_EXM_IM_ACC_DOCUMENT is available as example implementation. Here, for each data record of the parameter that is transferred the ABAP dictionary structure is checked and the content of the fields VALUEPART1 to -4 is set in the structure. If the structure that is transferred contains a field POSNR, the associated lines of the accounting document are updated using the contents of the enhancement. 

METHOD if_ex_acc_document~change .

***********************************************************************
* Example to move fields from BAPI parameter EXTENSION2 to structure  *
* ACCIT (accounting document line items).                             *
* The dictionary structure (content for EXTENSION2-STRUCTURE) must    *
* contain field POSNR, (TYPE POSNR_ACC) to indentify the correct line *
* item of the internal table ACCIT.                                   *
***********************************************************************

  DATAwa_extension   TYPE bapiparex,
        ext_value(960TYPE c,
        wa_accit       TYPE accit,
        l_ref          TYPE REF TO data.

  FIELD-SYMBOLS<l_struc> TYPE ANY,
                 <l_field> TYPE ANY.

  SORT c_extension2 BY structure.

  LOOP AT c_extension2 INTO wa_extension.
    AT NEW structure.
      CREATE DATA l_ref TYPE (wa_extension-structure).
      ASSIGN l_ref->TO <l_struc>.
    ENDAT.
    CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
                wa_extension-valuepart3 wa_extension-valuepart4
           INTO ext_value.
    MOVE ext_value TO <l_struc>.
    ASSIGN COMPONENT 'POSNR' OF STRUCTURE <l_struc> TO <l_field>.
    READ TABLE c_accit WITH KEY posnr <l_field>
          INTO wa_accit.
    IF sy-subrc IS INITIAL.
      MOVE-CORRESPONDING <l_struc> TO wa_accit.
      MODIFY c_accit FROM wa_accit INDEX sy-tabix.
    ENDIF.
  ENDLOOP.

ENDMETHOD.                    "IF_EX_ACC_DOCUMENT~CHANGE
  评论这张
 
阅读(2083)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017