厦门知名网站建设百度快照手机版
许多BAPI都会有一个excension的结构,这些结构都对应的是一些增强字段。
BAPI_ACC_DOCUMENT_POST 的扩展字段
银行现金流科目要添加原因代码
实施方法里面的写法可以参考 示例实施类。
步骤1、创建增强结构
步骤2、创建新的BADI 实现 SE18
步骤3、SE19编辑实施方法
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.DATA: WA_ZEXTEN TYPE ZEXTEN.FIELD-SYMBOLS: <ACCIT> TYPE ACCIT.FIELD-SYMBOLS: <L_STRUC> TYPE ANY,<L_FIELD> TYPE ANY.FIELD-SYMBOLS : <FS_ACCIT> TYPE ACCIT.SORT C_EXTENSION2 BY STRUCTURE.LOOP AT C_EXTENSION2 INTO WA_EXTENSIONWHERE STRUCTURE = 'ZEXTEN'. "对应于SE11创建的结构WA_ZEXTEN = WA_EXTENSION-VALUEPART1.READ TABLE C_ACCIT ASSIGNING <ACCIT>WITH KEY POSNR = WA_ZEXTEN-ITEMNO_ACC.IF SY-SUBRC = 0.<ACCIT>-RSTGR = WA_ZEXTEN-RSTGR.<ACCIT>-BSCHL = WA_ZEXTEN-BSCHL.<ACCIT>-UMSKZ = WA_ZEXTEN-UMSKZ.<ACCIT>-ANBWA = WA_ZEXTEN-ANBWA.<ACCIT>-XNEGP = WA_ZEXTEN-XNEGP.ENDIF.ENDLOOP.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-VALUEPART1WA_EXTENSION-VALUEPART2WA_EXTENSION-VALUEPART3WA_EXTENSION-VALUEPART4INTO EXT_VALUE.MOVE EXT_VALUE TO <L_STRUC>."判断是否是EPIC过账传输的增强结构IF WA_EXTENSION-STRUCTURE = 'ZTMS_EPIC_EXTENSION'.ASSIGN COMPONENT 'POSNR' OF STRUCTURE <L_STRUC> TO <L_FIELD>."得到凭证行READ TABLE C_ACCIT ASSIGNING <FS_ACCIT> WITH KEY POSNR = <L_FIELD>.IF SY-SUBRC = 0."凭证状态<FS_ACCIT>-BSTAT = 'S'."特别总帐科目的分配号=流动项目ASSIGN COMPONENT 'ZFITM' OF STRUCTURE <L_STRUC> TO <L_FIELD>.<FS_ACCIT>-HZUON = <L_FIELD>."目标特别总帐标志ASSIGN COMPONENT 'ZUMSK' OF STRUCTURE <L_STRUC> TO <L_FIELD>.<FS_ACCIT>-ZUMSK = <L_FIELD>."过账事务代码ASSIGN COMPONENT 'TCODE' OF STRUCTURE <L_STRUC> TO <L_FIELD>.<FS_ACCIT>-XREF2 = <L_FIELD>.ENDIF."业务事务C_ACCHD-GLVOR = 'RFST'."过账事务代码ASSIGN COMPONENT 'TCODE' OF STRUCTURE <L_STRUC> TO <L_FIELD>.C_ACCHD-TCODE = <L_FIELD>.ENDIF.ENDLOOP.endmethod.
这里可以写成动态的,也可以写上上面那种写死的。
4、过滤器
BAPI_SALESORDER_CREATEFROMDAT2 增强字段
1、需要通过append或者include的形式对标准结构进行增强
如果增强字段在销售订单抬头(vbak)上,则要将增强字段一并append到如下四个表/结构中:
- VBAKKOZ
- VBAKKOZX
- BAPE_VBAK
- BAPE_VBAKX
在行项目(vbap)上:
- VBAPKOZ
- VBAPKOZX
- BAPE_VBAP
- BAPE_VBAPX
在运货计划行(VBEP)上:
- VBEPKOZ
- BEPKOZX
- BAPE_VBEP
- BAPE_VBEPX
要注意的是vbapkozx中增强字段类型要使用char1或char01 ,不要使用BAPIUPDATE,订单修改的bapi中写死了只识别char1和char01
DATA: lwa_bape_vbap TYPE bape_vbap. "BAPI Interface for Customer Enhancements to Table VBAPDATA: lwa_bape_vbapx TYPE bape_vbapx. "BAPI Checkbox for Customer Enhancments to Table VBAPDATA: lwa_extensionin TYPE bapiparex. "Customer Enhancement for VBAK, VBAP, VBEP"Fill item level self-defined fields
* extension BAPE_VBAPCLEAR: lwa_bape_vbap,lwa_bape_vbapx.
* 订单号可以不填,只填行项目号就可以,然后给自定义字段赋值lwa_bape_vbap-posnr = lwa_order_items_in-itm_number.lwa_bape_vbap-yymv_mvgr1 = lwa_items-yymv_mvgr1.lwa_bape_vbap-yymv_mvgr2 = lwa_items-yymv_mvgr2.lwa_bape_vbap-yymv_mvgr3 = lwa_items-yymv_mvgr3.lwa_bape_vbap-yymv_mvgr4 = lwa_items-yymv_mvgr4.lwa_bape_vbap-yymv_mvgr5 = lwa_items-yymv_mvgr5.lwa_bape_vbapx-yymv_mvgr1 = 'X'.lwa_bape_vbapx-yymv_mvgr2 = 'X'.lwa_bape_vbapx-yymv_mvgr3 = 'X'.lwa_bape_vbapx-yymv_mvgr4 = 'X'.lwa_bape_vbapx-yymv_mvgr5 = 'X'.lwa_bape_vbapx-posnr = lwa_order_items_in-itm_number.MOVE 'BAPE_VBAP' TO lwa_extensionin-structure.CALL METHOD cl_abap_container_utilities=>fill_container_cEXPORTINGim_value = lwa_bape_vbapIMPORTINGex_container = lwa_extensionin-valuepart1.APPEND lwa_extensionin TO m_it_extensionin.CLEAR lwa_extensionin.MOVE 'BAPE_VBAPX' TO lwa_extensionin-structure.MOVE lwa_bape_vbapx TO lwa_extensionin-valuepart1.APPEND lwa_extensionin TO m_it_extensionin.
BAPI_PO_CREATE1 增强字段
采购订单增强屏幕扩展是通过include结构增强的,所以不需要像SO那样对其他额外的结构增强。
CLEAR :ls_header_ext ,ls_header_extx.ls_header_ext-contract_id = ls_ekko-contract_id.ls_header_extx-contract_id = 'X'.ls_header_ext-contract_name = lv_name.ls_header_extx-contract_name = 'X'.CLEAR: lt_extensionin.lt_extensionin-structure = 'BAPI_TE_MEPOHEADER'.lt_extensionin-valuepart1 = ls_header_ext.APPEND lt_extensionin.CLEAR: lt_extensionin.lt_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.lt_extensionin-valuepart1 = ls_header_extx.APPEND lt_extensionin.