BAPI_ACC_DOCUMENT_POST扩展字段增强

1、需求

BAPI_ACC_DOCUMENT_POST函数中没有“凭证行项目付款原因代码”字段的参数,

现需要将此字段传入BAPI中。

BAPI_ACC_DOCUMENT_POST扩展字段增强_第1张图片

2、实现方法

2.1、程序实现

创建结构,包含需要传入的字段


BAPI_ACC_DOCUMENT_POST扩展字段增强_第2张图片

关键代码:

DATA: ls_extension2 TYPE bapiparex.
DATA: lt_extension2 LIKE TABLE OF ls_extension2.
DATA: ls_extension_field TYPE zds_acc_document_extension2.
    
CLEAR lt_extension2[].
             
CLEAR ls_extension_field.
ls_extension_field-posnr  = '0000000001'.    " 凭证行项目
ls_extension_field-rstgr  = '1ZZ'.           " 原因代码

CLEAR ls_extension2.
ls_extension2-structure  = 'ZDS_ACC_DOCUMENT_EXTENSION2'.
ls_extension2-valuepart1 = ls_extension_field.
APPEND ls_extension2 TO lt_extension2.

2.2、增强实现

BADI增强:ACC_DOCUMENT

BADI增强如何实现此处不做详细说明,不了解的话可以翻阅其他资料。

BAPI_ACC_DOCUMENT_POST扩展字段增强_第3张图片

BAPI_ACC_DOCUMENT_POST扩展字段增强_第4张图片

增强代码:

METHOD if_ex_acc_document~change .
  DATA: wa_extension   TYPE bapiparex,
        ext_value(960) TYPE c,
        wa_accit       TYPE accit,
        l_ref          TYPE REF TO data.

  FIELD-SYMBOLS:  TYPE ANY,
                  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 .
    ENDAT.
    CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
                wa_extension-valuepart3 wa_extension-valuepart4
           INTO ext_value.
    MOVE ext_value TO .
    ASSIGN COMPONENT 'POSNR' OF STRUCTURE  TO .
    READ TABLE c_accit WITH KEY posnr = 
          INTO wa_accit.
    IF sy-subrc IS INITIAL.
      MOVE-CORRESPONDING  TO wa_accit.
      MODIFY c_accit FROM wa_accit INDEX sy-tabix.
    ENDIF.
  ENDLOOP.

ENDMETHOD.                    "IF_EX_ACC_DOCUMENT~CHANGE

3、参考类方法

参考类:CL_EXM_IM_ACC_DOCUMENT

BAPI_ACC_DOCUMENT_POST扩展字段增强_第5张图片



注:如有疏漏之处,还请不吝赐教!








你可能感兴趣的:(SAP-ABAP-增强/接口)