项目中都要掌握的BAPI之过账BAPI “ BAPI_ACC_DOCUMENT_POST”

2023-11-17

SAP FI 会计凭证过账 : BAPI_ACC_DOCUMENT_POST
该过账BAPI需要和模拟过账的BAPI “BAPI_ACC_DOCUMENT_CHECK” 搭配使用,这样先执行模拟过账,成功了再执行真正的过账,这样就不会因为执行失败产生废弃的凭证,还有再进行冲销。造成底表数据冗余无用。

模拟过账

call function 'BAPI_ACC_DOCUMENT_CHECK'
    exporting
      documentheader    = i_doc_head
    tables
      accountgl         = it_gl[]
      accountreceivable = it_receive[]
      accountpayable    = it_pay[]
      currencyamount    = it_curramount[]
      extension1        = it_extension[]
      return            = it_return[].

  loop at it_return.
    if it_return-type eq 'E'.
      g_simu_error = 'X'.
      write: / it_return-type, it_return-message(100).
      set pf-status '1000'.
      leave to list-processing.
    endif.

  endloop.

  if g_simu_error eq 'X'.
    write: / 'I 凭证生成错误,实际未生成任何会计凭证'.
    clear: p_zsfkdh-d_belnr, p_zsfkdh-d_gjahr,p_zsfkdh-zkf_belnr.
    leave screen.
  endif.
* 当模拟过账成功,就可以执行真正的BAPI过账  BAPI_ACC_DOCUMENT_POST
DATA: i_doc_head TYPE bapiache09.
DATA: it_gl LIKE TABLE OF bapiacgl09 WITH HEADER LINE.
DATA: it_receive LIKE TABLE OF bapiacar09 WITH HEADER LINE.
DATA: it_pay LIKE TABLE OF bapiacap09 WITH HEADER LINE.
DATA: it_curramount LIKE TABLE OF bapiaccr09 WITH HEADER LINE.
DATA: it_extension LIKE TABLE OF bapiacextc WITH HEADER LINE.

  data: f_obj_type like bapiache09-obj_type,
        f_obj_key like bapiache09-obj_key,
        f_obj_sys like bapiache09-obj_sys.

 call function 'BAPI_ACC_DOCUMENT_POST'
    exporting
      documentheader          = i_doc_head
*   CUSTOMERCPD             =
*   CONTRACTHEADER          =
    importing
      obj_type = f_obj_type   “传出得
      obj_key = f_obj_key
      obj_sys = f_obj_sys
    tables
     accountgl               = it_gl[]
     accountreceivable       = it_receive[]
     accountpayable          = it_pay[]
     currencyamount          = it_curramount[]
     extension1              = it_extension[]
     return                  = it_return[].
loop at it_return.
    if it_return-type = 'E'.
      g_post_error = 'X'.
    endif.
    write: / it_return-type, it_return-message(100).
    set pf-status '1000'.
    leave to list-processing.
  endloop.
  if g_post_error eq 'X'.
    clear: p_zsfkdh-d_belnr, p_zsfkdh-d_gjahr,p_zsfkdh-zkf_belnr.
    leave screen.
  endif.
  if f_obj_key is not initial.
    if p_flag eq 'X'.
      clear: p_zsfkdh-d_gjahr, p_zsfkdh-d_belnr.
      move f_obj_key(10) to p_zsfkdh-d_belnr.
      move f_obj_key+14(4) to p_zsfkdh-d_gjahr.
    else.
      clear: p_zsfkdh-d_gjahr, p_zsfkdh-zkf_belnr.
      move f_obj_key(10) to p_zsfkdh-zkf_belnr.
      move f_obj_key+14(4) to p_zsfkdh-d_gjahr.
    endif.
  endif.

这里面,只有RETURN表是返回表,其他都是输入的参数和输入表
我这次得项目,其实和这篇文章还挺像
https://www.cnblogs.com/liangliang245916893/p/12888762.html
首先是需要 当付款方式 “B选择银行承兑汇款” 得方式,我就要修改特别总账标识,调整科目
在这里插入图片描述
在这里插入图片描述其实做的过程里发现需求理解错误,,应该判断票据类型为B,修改科目
在这里插入图片描述下面是我改的代码:当票据类型为B,perform判断是新的票据还是老的票据,新的就给F,老的就是N

在这里插入图片描述`&---------------------------------------------------------------------
*& Form FRM_GET_SK_UMSKZ
&---------------------------------------------------------------------

  •   获取收款凭证的特殊G/L标识
    

----------------------------------------------------------------------

  •  -->P_IT_RECEIVE_SP_GL_IND  text
    

----------------------------------------------------------------------
form frm_get_sk_umskz using ps_zsfkdb like line of it_zsfkdb_p
p_gl_ind type umskz.
data ls_ztyspj type ztyspj. "应收票据表
data ls_ztskdh type ztskdh. "收款单抬头表

check not ps_zsfkdb is initial.
* 根据票据台帐号->获取收款单号
select single *
into ls_ztyspj
from ztyspj
where bukrs = ps_zsfkdb-bukrs
and zpjid = ps_zsfkdb-zpjid.

check not ls_ztyspj is initial.
* 根据收款单号->获取会计凭证编号
select single *
into ls_ztskdh
from ztskdh
where bukrs = ls_ztyspj-gl_bukrs
and gjahr = ls_ztyspj-gl_gjahr
and zskdh = ls_ztyspj-zskdh.

check not ls_ztskdh is initial.
* 根据会计凭证编号->获取特殊G/L标识
select count(*)
from bseg
where bukrs = ls_ztskdh-bukrs
and belnr = ls_ztskdh-d_belnr
and gjahr = ls_ztskdh-d_gjahr
and umskz = ‘N’.
if sy-subrc = 0.
p_gl_ind = ‘N’.
endif.

endform. " FRM_GET_SK_UMSKZ`

这里的it_receive[]是BAPI的传入表,参考结构BAPIACAR09,里面有个字段SP_GL_IND = 特殊总分类帐标志,

tips: 这里教你如何查看BAPI return表的返回报错信息,主要看FIFLD指的哪个字段,PARAMETER指的哪个表,这里看出是it_curramount[]表里的CURRENCY这个字段没有传,那可以DEBUG修改表it_curramount[]给传入个CNY什么的。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目中都要掌握的BAPI之过账BAPI “ BAPI_ACC_DOCUMENT_POST” 的相关文章

  • CentOS 8.5:mysql8 + php8 使用 phpmyadmin52

    使用 dnf 安装命令没有安装成功 下载安装 phpmyadmin 下载地址 最新版本为 5 2 phpMyAdmin Downloads etc nginx nginx conf 中的配置内容 server listen 80 liste
  • VS Code的神级插件Bito - GPT-4 和 ChatGPT 编写代码、解释代码、创建测试

    Bito是什么 Bito是一款插件 它目前支持VS Code Chrome插件 以及Jetbrains的全系列IDE 例如 IDEA PyCharm Clion等 可以说能够覆盖大部分开发同学了 Bito 通过将 GPT 4 和 ChatG
  • KMP算法理解

    学习了KMP算法 对此有了一些理解 通过博客分享 如有理解错误的地方 请纠正 文章目录 字符串的前缀后缀 最大公共长度数组获取 KMP算法 时间复杂度 字符串的前缀后缀 再说明KMP算法前见说下它用到的一些东西 给定一个字符串如 ABCDA
  • 1.机器学习的基础概念

    机器学习的基础概念 文章目录 机器学习的基础概念 机器学习的分类 一 监督学习 1 监督学习概念 2 监督学习流程 3 监督学习算法 二 无监督学习 1 无监督学习概念 2 无监督学习流程 3 无监督学习算法 总结 机器学习的分类 机器学习
  • python 博弈论 库_6个Python库解释机器学习模型并建立信任

    原标题 6个Python库解释机器学习模型并建立信任 在机器学习模型中建立信任的案例 全球道路上大约有12亿辆汽车 这是一个令人毛骨悚然的问题 您认为实际上有多少驾驶员了解车辆的内部运行情况 您可能已经猜到了 答案只是少数几个人 我们不需要
  • 拿金币 蓝桥杯

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • LINUX IO内存操作方法

    https wenku baidu com view f15358692bf90242a8956bec0975f46527d3a7f3 html
  • 快看!那个学vSLAM的上吊了! —— (一)综述

    不同于之前发布的文章 我将使用一种全新的方式 iPad Notability Blog的方式打开这个板块的大门 原因有两个 1 Notability更方便手写长公式 也方便手绘坐标系变换等等 2 之前Apple Pencil找不到了新破费买
  • Qt5.9中一个槽函数接收多个信号用法(函数sender())

    本文主要总结一种常用情况 当多个信号同时发送到一个槽函数时 需要在槽函数中判断 是哪个信号发射过来的 解决这个问题 主要用到函数 QObject sender 和QString sender objectName QObject sende
  • devops-部署web服务器环境

    1 java 环境 各 wenb 服务器准备 tomcat 运行环境 useradd www u 2000 mkdir apps cd apps tar xvfjdk 8u181 linux x64 tar gz ln sv apps jd
  • 手把手教你使用 Prometheus 监控 JVM

    概述 当你的 Java 业务容器化上 K8S 后 如果对其进行监控呢 Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标 以便使用 Prometheus 来采集监控数据 本文将介绍如何利用 Prometh
  • 如何保证同事的代码不会腐烂?一文带你了解 Alibaba COLA 架构

    本文开始前 问大家一个问题 你觉得一份业务代码 尤其是互联网业务代码 都有哪些特点 我能想到的有这几点 互联网业务迭代快 工期紧 导致代码结构混乱 几乎没有代码注释和文档 互联网人员变动频繁 很容易接手别人的老项目 新人根本没时间吃透代码结
  • 帝国霸业服务器无限加载,帝国霸业银河生存控制台有哪些指令 控制台指令一览...

    游戏里面能够开启控制面板键入命令 在网络服务器中一样还可以 但是很有可能许多游戏玩家不清楚命令编码 下边大家就为大伙儿产生帝国霸业星空存活网络服务器有什么命令的详细介绍 有必须的游戏玩家快看来一下吧 游戏里面能够开启控制面板键入命令 在网络
  • docker中的zookeeper安装、连接及常见命令

    一 docker安装 1 搜索一下Zookeeper镜像 这一步可以省略 docker search zookeeper 2 从Docker上下载zookeeper docker pull zookeeper 3 启动Zookeeper镜像
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 微信小程序开发-AppID申请

    开始 开发小程序的第一步 你需要拥有一个小程序帐号 通过这个帐号你就可以管理你的小程序 跟随这个教程 开始你的小程序之旅吧 申请帐号 进入小程序注册页 根据指引填写信息和提交相应的资料 就可以拥有自己的小程序帐号 在这个小程序管理平台 你可
  • TortoiseSVN 日常操作指南

    原文地址 http blog csdn net happy4nothing article details 376604 Toc101751879 TortoiseSVN A Subversion client for Windows St
  • Oracle中如何获取系统当前时间

    select to char sysdate yyyy mm dd hh24 mi ss from dual ORACLE里获取一个时间的年 季 月 周 日的函数 select to char sysdate yyyy from dual
  • 解决Visual Studio Code点击运行出现无法访问此网站

    1 访问后的网页 2 经过检查发现里面多出一个文件 vscode gt launch json 可能是你在运行时打开的窗口有 css文件 这是我猜的 3 把多出的文件夹删除掉 Vscode launch json 把刚才拒绝访问的网页关闭掉
  • 6、USRP【入门软件无线电(SDR)】PySDR:使用 Python 的 SDR 和 DSP 指南

    因为设备不同 本教程未实测 仅作为USRP参考 在本章中 我们将学习如何使用UHD Python API通过USRP控制和接收 传输信号 USRP是由Ettus Research 现为NI的一部分 制造的一系列SDR 我们将讨论 Pytho

随机推荐

  • Gbps/KW

    Gbps 衡量交换机的数据交换能力 传输速度为每秒1000兆位 即1Gbps
  • node封装传formdata数据的接口(多文件上传)

    前文 这个星期的主要完成的东西我想就是多文件上传了 这也是我第一次封装传formdata数据类型的数据 因为也是刚学不久node 很多东西都是要自己摸索的 关于这个多文件上传我也是查阅了不少的博客 也是问了学长 最后问题才得以解决 关于接口
  • 企业性能测试成熟度

    影响性能测试成熟度的5个内容项 1 性能测试流程规范 性能需求型模式 测试执行启动基本无规划 缺少标准流程规范 测试资产无法复用 测试结果无总结和沉淀性能常态化模式下流程规范 gt 企业内部不同部门 各个团队共同制定并执行达成一致的性能测试
  • 两数之和 暴力美学 哈希表

    1 两数之和 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 的那 两个 整数 并返回它们的数组下标 leetcode 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出
  • 常见模拟电路设计 一(含仿真):方波、三角波、正弦波的互相发生

    FPGA最近有些整累了 给大家开个模拟电路设计的坑 内含干货 请放心食用 一 总体设计方案 二 单元电路设计和原理说明 2 1方波发生电路 波形发生电路可以由集成运放芯片构成运算电路来实现 第一步的方波发生电路 可以由滞回比较器和RC电路构
  • midjourney上线slack,国内也能用上啦!mjslackbot

    Mjslackbot 国内免费免魔法的原版midjourney 跟discord上的操作一模一样 在频道中描述你的关键词 既可生成精美的图案 手把手教学 1 注册Slack https slack com intl zh cn 注册成功后会
  • 解决word页码混乱并使页码从指定页开始

    解决word页码混乱并使页码从指定页开始 1 解决word页码混乱 页码混乱是由于误加了分节符导致的结果 导致页码不按照物理顺序排序 因此 我们在大纲模式下删除所有分节符 重排页码 2 从指定页重排页码 在指定页页眉位置点击布局 选择分隔符
  • Kafka3.0.0版本——消费者(消费者组案例)

    目录 一 消费者组案例 1 1 案例需求 1 2 案例代码 1 2 1 消费者1代码 1 2 2 消费者2代码 1 2 3 消费者3代码 1 2 4 生产者代码 1 3 测试 一 消费者组案例 1 1 案例需求 测试同一个主题的分区数据 只
  • cmake(三十二)Cmake之find_package指令

    一 cmake帮助文档 find package命令详解 1 help command list cmake 内置命令 列表 2 help comamnd
  • 使用LogHub进行日志实时采集

    日志服务LogHub功能提供日志数据实时采集与消费 其中实时采集功能支持30 种手段 这里简单介绍下各场景的接入方式 数据采集一般有两种方式 区别如下 我们这里主要讨论通过LogHub流式导入 实时 采集 方式 优势 劣势 例子 批量导入
  • QSS-Qt样式表一

    QSS即Qt StyleSheet Qt样式表 的简称 是一种用来自定义控件外观的强大机制 QSS可以让我们的程序界面更加漂亮 每条QSS样式都由两部分组成 1 选择器 该部分指定要美化的控件 2 声明 该部分指定要在控件上使用的属性 声明
  • 一直在说高并发,多少QPS才算高并发?

    高并发的四个角度 只说并发不提高可用就是耍流氓 可以从四个角度讨论这个问题 首先是无状态前端机器不足以承载请求流量 需要进行水平扩展 一般QPS是千级 然后是关系型数据库无法承载读取或写入峰值 需要数据库横向扩展或引入nosql 一般是千到
  • XShell连接ubuntu20.04.LTS

    1 下载Xshell XShell官方下载地址 打开XSHELL官方下载地址 我们可以选择 家庭和学校用户的免费许可证 输入邮箱之后即可获得下载链接 安装非常简单 跟着提示进行即可 2 连接ubuntu 2 1 查看ubuntu的ip地址
  • Vue 父子组件通信v-model .sync修饰符

    一 v model简化父子组件通信 v model是什么 v model 是Vue框架的一种内置的API指令 本质是一种语法糖写法 它负责监听用户的输入事件以更新数据 并对一些极端场景进行一些特殊处理 v model实现表单的双向绑定
  • 算法:回文链表

    234 回文链表 给你一个单链表的头节点 head 请你判断该链表是否为回文链表 如果是 返回 true 否则 返回 false 示例 1 输入 head 1 2 2 1 输出 true 示例 2 输入 head 1 2 输出 false
  • ReID专栏(三) 注意力的应用

    前言 本文中提出了一种用于行人重识别的注意感知特征学习方法 该方法由一个部分注意分支 PAB 和一个整体注意分支 HAB 组成 并与基础再识别特征提取器进行了联合优化 由于这两个分支建立在主干网络上 因此没有为ReID特征提取引入额外的结构
  • 客户管理系统CRM表格版,含销售合同客户关系维护等功能

    客户管理系统CRM表格版 含销售合同客户关系维护等功能 系统由EXCEL开发 绿色安全 简单好用 送VBA宏插件编号 139653845009471设计师儿
  • 来自国际大厂Cloudflare的免费项目cloudflared

    在此之前 大家可以先去看看项目 https github com cloudflare cloudflared 事先声明 本人使用Ubuntu2204系统搭建 理论上适合Debian系Linux系统 Redhat系需要修改相关命令 其他系统
  • super和this关键字

    一 super关键字的应用场景 1 访问父类的成员变量 2 访问父类的构造函数 3 访问父类的方法 二 super关键字的使用 class Animal protected String name 注意 若限定符是private 子类无法使
  • 项目中都要掌握的BAPI之过账BAPI “ BAPI_ACC_DOCUMENT_POST”

    SAP FI 会计凭证过账 BAPI ACC DOCUMENT POST 该过账BAPI需要和模拟过账的BAPI BAPI ACC DOCUMENT CHECK 搭配使用 这样先执行模拟过账 成功了再执行真正的过账 这样就不会因为执行失败产