文章目录

  • 前言
  • 一、范例代码
  • 总结

前言

使用BDC可能会遇到错误无法报出,转而使用BAPI

KE21N创建凭证BAPI及范例

使用到的BAPI:
BAPI_COPAACTUALS_POSTCOSTDATA


一、范例代码

DATA:lv_num     TYPE int4,lv_op      TYPE bapi0017-op_concern,lt_pa_data TYPE STANDARD TABLE OF bapi_copa_data WITH HEADER LINE,lt_field   TYPE STANDARD TABLE OF bapi_copa_field WITH HEADER LINE,lt_return  TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,ls_return  TYPE bapiret2,l_perio    TYPE jahrper,l_flag     TYPE char01.lv_op = '1100'.lv_num = 1.LOOP AT i_cwf_in.CLEAR ls_ztslot_fee_int.MOVE-CORRESPONDING i_cwf_in TO ls_ztslot_fee_int.IF i_type IS INITIAL OR i_type = '0' OR i_type = 'A'.
* *  外部接口调用时, 因为前面变过一次符号。 存表时,按着原始数据存储。ls_ztslot_fee_int-inttbunkchg = 0 - i_cwf_in-inttbunkchg.ls_ztslot_fee_int-loadchg = 0 - i_cwf_in-loadchg.ls_ztslot_fee_int-trfchg = 0 - i_cwf_in-trfchg.ls_ztslot_fee_int-feetype = '1'.ENDIF.*    BAPI方式POSTCLEAR:lt_pa_data[],lt_pa_data,lt_field[],lt_field,l_flag.*    记录类型PERFORM frm_add_pa_data USING lv_num 'VRGAR' 'B' '' CHANGING lt_pa_data[] lt_field[].
*    记账日期PERFORM frm_add_pa_data USING lv_num 'BUDAT' i_budat '' CHANGING lt_pa_data[] lt_field[].
*    年度期间CONCATENATE i_budat+0(4) '0' i_budat+4(2) INTO l_perio.PERFORM frm_add_pa_data USING lv_num 'PERIO' l_perio '' CHANGING lt_pa_data[] lt_field[].
*    用户名PERFORM frm_add_pa_data USING lv_num 'USNAM' sy-uname '' CHANGING lt_pa_data[] lt_field[].
*    年度PERFORM frm_add_pa_data USING lv_num 'GJAHR' i_budat+0(4) '' CHANGING lt_pa_data[] lt_field[].
*    期间PERFORM frm_add_pa_data USING lv_num 'PERDE' i_budat+4(2) '' CHANGING lt_pa_data[] lt_field[].
*    公司代码PERFORM frm_add_pa_data USING lv_num 'BUKRS' i_cwf_in-comcd '' CHANGING lt_pa_data[] lt_field[].
*    航次PERFORM frm_add_pa_data USING lv_num 'WWD34' i_cwf_in-voy '' CHANGING lt_pa_data[] lt_field[].
*    船名PERFORM frm_add_pa_data USING lv_num 'WWD36' i_cwf_in-vslcd '' CHANGING lt_pa_data[] lt_field[].
*    航向PERFORM frm_add_pa_data USING lv_num 'WWD37' i_cwf_in-leg '' CHANGING lt_pa_data[] lt_field[].
*    挂港PERFORM frm_add_pa_data USING lv_num 'WWD42' i_cwf_in-tmpport '' CHANGING lt_pa_data[] lt_field[].
*    航线PERFORM frm_add_pa_data USING lv_num 'WWD03' i_cwf_in-service '' CHANGING lt_pa_data[] lt_field[].
*    收入成本属性PERFORM frm_add_pa_data USING lv_num 'WWD28' i_cwf_in-arc '' CHANGING lt_pa_data[] lt_field[].
*    币种PERFORM frm_add_pa_data USING lv_num 'FRWAE' i_cwf_in-curr '' CHANGING lt_pa_data[] lt_field[].
*    汇率PERFORM frm_add_pa_data USING lv_num 'KURSF' i_cwf_in-exchgr '' CHANGING lt_pa_data[] lt_field[].
*    中转费PERFORM frm_add_pa_data USING lv_num 'VVC07' i_cwf_in-trfchg i_cwf_in-curr CHANGING lt_pa_data[] lt_field[].
*    内部交易舱位费PERFORM frm_add_pa_data USING lv_num 'VVA04' i_cwf_in-inttbunkchg i_cwf_in-curr CHANGING lt_pa_data[] lt_field[].
*   装卸费PERFORM frm_add_pa_data USING lv_num 'VVC03' i_cwf_in-loadchg i_cwf_in-curr CHANGING lt_pa_data[] lt_field[].REFRESH lt_return.*    POSTCALL FUNCTION 'BAPI_COPAACTUALS_POSTCOSTDATA'EXPORTINGoperatingconcern = lv_optestrun          = ''TABLESinputdata        = lt_pa_datafieldlist        = lt_fieldreturn           = lt_return.READ TABLE lt_return WITH KEY type = 'E' .IF sy-subrc = 0.l_flag = 'X'.ENDIF.READ TABLE lt_return WITH KEY type = 'A'.IF sy-subrc = 0.l_flag = 'X'.ENDIF.IF l_flag = 'X'."FAILCALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .lv_message = '生成失败!'.LOOP AT lt_return[] INTO ls_return.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGmsgid               = ls_return-idmsgnr               = ls_return-numbermsgv1               = ls_return-message_v1msgv2               = ls_return-message_v2msgv3               = ls_return-message_v3msgv4               = ls_return-message_v4IMPORTINGmessage_text_output = lv_message.CONCATENATE lv_message ls_ztslot_fee_int-message INTO ls_ztslot_fee_int-message SEPARATED BY '/'.ENDLOOP.IF i_type = 'A'.ls_ztslot_fee_int-status = 'A'.ELSE.ls_ztslot_fee_int-status = '0'.ENDIF.ELSE. "SECwmsg-msgtyp = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.lv_message = '生成成功!'.READ TABLE lt_return[] INTO ls_return INDEX 1.IF sy-subrc EQ 0.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGmsgid               = ls_return-idmsgnr               = ls_return-numbermsgv1               = ls_return-message_v1msgv2               = ls_return-message_v2msgv3               = ls_return-message_v3msgv4               = ls_return-message_v4IMPORTINGmessage_text_output = lv_message.CONCATENATE lv_message ls_ztslot_fee_int-message INTO ls_ztslot_fee_int-message SEPARATED BY '/'.ENDIF.IF i_type = 'A'.ls_ztslot_fee_int-status = 'S'.ls_ztslot_fee_int-ke21ndoc3 = ls_return-message_v1.ELSE.ls_ztslot_fee_int-status = '0'.ls_ztslot_fee_int-ke21ndoc1 = ls_return-message_v1.ENDIF.ENDIF.*    END  ADDls_ztslot_fee_int-budat = i_budat.ls_ztslot_fee_int-upd_time = sy-uzeit.ls_ztslot_fee_int-upd_date = sy-datum.MODIFY  ztslot_fee_int FROM ls_ztslot_fee_int.IF sy-subrc = 0.COMMIT WORK.ELSE.ROLLBACK WORK.ENDIF.MOVE-CORRESPONDING i_cwf_in TO ls_fee_internal_ret.IF  wmsg-msgtyp <> 'S'.ls_fee_internal_ret-status = 'E'.ELSE.ls_fee_internal_ret-status = 'S'.ENDIF.ls_fee_internal_ret-message = ls_ztslot_fee_int-message.APPEND ls_fee_internal_ret TO e_fee_internal.CLEAR ls_fee_internal_ret.ENDLOOP.FORM frm_add_pa_data  USING    iv_numiv_fieldnameiv_valueiv_currencyCHANGING ct_pa_data LIKE pa_datact_field LIKE pa_field.DATA:ls_data  TYPE bapi_copa_data,ls_field TYPE bapi_copa_field.ls_data-record_id = iv_num.ls_data-fieldname = iv_fieldname.ls_data-value = iv_value.ls_data-currency = iv_currency.APPEND ls_data TO ct_pa_data.ls_field-fieldname = iv_fieldname.APPEND ls_field TO ct_field.ENDFORM.

总结

使用这个BAPI会有一个问题 成功以后不会返回凭证编号 不知道是不是服务器版本原因
以上。

SAP ABAP 财务FI(CO-PA 行项目分录) KE21N创建凭证BAPI及范例相关推荐

  1. SAP License:新总帐行项目无法显示

    公司代码间使用FS15进行科目复制后,目标公司代码中的科目即使使用了行项目显示功能也不能显示行项目,经查表BSIS中无此科目的行项目数据.同时表SKB1中的XLGCLR字段值为符成了"/&q ...

  2. sap abap在表VBAP和VBAK上增加新字段的标准BAPI

    在表VBAP和VBAK上增加新字段的标准BAPI  If you have custom ZZ fields on VBAP and VBAK then you can update these fi ...

  3. SAP修改科目为未清项管理和行项目显示

    有一个资产负债表的科目需要改成未清项管理,但是保存时报错,"更改未清项管理是不可能的,数据有错误",然后我根据sap提示的消息把科目的余额转到到别的科目上,使这个科目余额为零,但是我再去修改的时候,它 ...

  4. SAP UI5 应用开发教程之五十八 - 使用工厂方法在运行时动态创建不同类型的列表行项目控件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. SAP中批量更改凭证行项目方法

    SAP中批量更改凭证行项目方法,通过查询凭证行项目明细(FS10N,FBL1N,FBL3N,FBL5N等), 选中多行后,点工具栏上的Mass Change(左第三个)按钮,或按快捷键Ctrl+Shi ...

  6. SAP采购订单抬头、行项目屏幕增强的两种方法

    对SAP系统中采购订单抬头进行屏幕增强,在抬头上增加了几个customer fields,但是实现方法有点怪,是一个Z report程序,其下创建了一个屏幕,屏幕中放的就是这几个customer fi ...

  7. SAP FICO 财务成本知识

    SAP FICO 财务成本知识 -------------------------------------------------------------------------------- 网上找 ...

  8. SAP FICO 财务成本知识(初)

    -------------------------------------------------------------------------------- 网上找来的,找不到原作者是谁了,在此衷 ...

  9. SAP ABAP 业务对象 BUS1112 CostCenterGroup 成本中心组 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS1112 CostCenterGroup 成本中心组 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS1112 CostCenterGro ...

最新文章

  1. 前沿速递:因果涌现在多种因果衡量标准下普遍存在
  2. Facebook Docusaurus 中文文档 安装指南
  3. 5 Best User Interface Design Pattern Libraries
  4. homework-04
  5. kb-07线段树-12--二分查找区间边界
  6. python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...
  7. 使用Xcap发送网络数据包
  8. 使用 C# 捕获进程输出
  9. PHPstudy搭建本地环境的网页加载速度慢的解决方案
  10. tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...
  11. http之SessionCookie
  12. [Swift][leetcode] 433. 最小基因变化
  13. 整合Mybatis+Spring | 释疑
  14. windows powershell快捷键
  15. Seaweeds配置部署
  16. 蓝韵DR采集工作站LINUX系统,蓝韵PACS系统的技术参数
  17. 为什存在_tmain以及Unicode和ANSI
  18. 【多校训练】2021牛客多校第一场
  19. 在Ansible中缓存事实
  20. 大规模太空资源开采,在未来十年将成为现实

热门文章

  1. 金庸武侠中的生基文化你了解吗?易学大家孙志华帮你揭秘
  2. Ubuntu14.04下wine国际版QQ
  3. 计算机毕业设计Java基于的智慧小区(源码+系统+mysql数据库+lW文档)
  4. 视频文件用数据恢复软件恢复了,但是打开不,到底能不能修复好?
  5. 什么是死锁? 产生死锁的必要条件?怎样预防和避免死锁?
  6. bzoj 4404 [Neerc2015]Binary vs Decimal题解
  7. 人体姿态检测数据集Human3.6
  8. seekbar双向调节
  9. 为什么要考Martin Fowler的年龄-《软件方法》自测题解析014
  10. [阅读笔记] For:Object Detection with Deep Learning: The Definitive Guide