BAPI_ACC_DOCUMENT_POST 简单理解过账BAPI使用

2023-11-01

业务场景

甲方是一家从事房屋租赁的公司,它的主营业务就是从各大租户手里收租子。月底了,小明发了工资美滋滋,钱到手没多久房东就催租子了,房租每月100,水电100, 税费22,合计222.小明如约在手机APP上向房东支付了当月的房租,这边钱到账后,甲方会计收到银行的转账通知,这个时候需要录入一笔凭证 。


借:其他应收款-公司往来款  100元    水电

        其他应收款-公司往来款  100元  房租

        其他应收款-公司往来款  22元       应缴税费

贷:主营业务收入-租赁收入  222元 

        在FB01中,我们手工建立的会计凭证如下:

          


  BAPI代码如下:

  lt_accountgl[]:             表示贷方,即甲方的应收(总账科目)

 lt_accountreceivable: 表示借方,即客户的应付   (一般科目即为客户编号)

lt_currencyamount:      借方与贷方的金额,需要用ITEM_NO进行关联。(注意前台与后台的区别,金额有正有负,正负相抵)

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      documentheader    = ls_documentheader
    IMPORTING
*     OBJ_TYPE          =
      obj_key           = lv_key
*     OBJ_SYS           =
    TABLES
      accountgl         = lt_accountgl[]
      accountreceivable = lt_accountreceivable[]
      accountpayable    = lt_accountpayable[]
      currencyamount    = lt_currencyamount[]
      return            = lt_return[]
      extension2        = lt_ext2[].

    详细代码:
 

FUNCTION zf_fi_054_accdoc_pos.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IS_HEAD) TYPE  ZFIT_038_HEAD01
*"  EXPORTING
*"     REFERENCE(OS_KEY) TYPE  ZFIS_054_RETURN
*"  TABLES
*"      IT_ITEM STRUCTURE  ZFIT_038_ITEM01
*"      IT_RETURN STRUCTURE  ZFIS_038_RETURN
*"----------------------------------------------------------------------
  DATA:ls_documentheader    TYPE bapiache09,
       lt_accountgl         TYPE STANDARD TABLE OF bapiacgl09,
       lt_accountpayable    TYPE STANDARD TABLE OF bapiacap09,
       lt_accountreceivable TYPE STANDARD TABLE OF bapiacar09,
       lt_currencyamount    TYPE STANDARD TABLE OF bapiaccr09,
       lt_ext2              TYPE STANDARD TABLE OF bapiparex WITH HEADER LINE,
       lt_order_info        TYPE STANDARD TABLE OF zfit_order_info,
       lv_itemno_acc        TYPE posnr_acc,
       lt_return            TYPE STANDARD TABLE OF bapiret2,
       ls_return            TYPE bapiret2,
       ls_no_acc_rule       TYPE zfit_no_acc_rule,
       lv_error_message     TYPE char255,
       ls_retmsg            TYPE zfis_retmsg,
       lv_koart             TYPE tbsl-koart,
       lv_kunnr             TYPE kna1-kunnr,
       lv_lifnr             TYPE lfa1-lifnr,
       lv_order_no          TYPE zfit_order_info-order_no,
       lv_key               TYPE bapiache09-obj_key,
       ls_item              TYPE zfit_038_item01.

  CONSTANTS:cn_bus_act  TYPE glvor VALUE 'RFBU',
            cn_status_s TYPE char4 VALUE 'S000',
            cn_status_e TYPE char4 VALUE 'E0M1',
            cn_type_s   TYPE c VALUE 'S',
            cn_type_e   TYPE c VALUE 'E',
            cn_koart_k  TYPE c VALUE 'K',
            cn_koart_d  TYPE c VALUE 'D',
            cn_koart_s  TYPE c VALUE 'S',
            cn_shkzg_h  TYPE c VALUE 'H',
            cn_shkzg_s  TYPE c VALUE 'S',
            cn_blart_z5 TYPE bkpf-blart VALUE 'Z5',
            cn_bschl_50 TYPE bschl VALUE '50',
            cn_bschl_40 TYPE bschl VALUE '40'.
  DATA  ls_accountreceivable TYPE bapiacar09.
  DATA: l_item TYPE char10 VALUE '0000000000'.
  DATA: ls_currencyamount    TYPE LINE OF bapiaccr09_tab.
  DATA: l_wrbtr_sum TYPE bapidoccur,
        l_tax_sum   TYPE bapidoccur.
  DATA: ls_itemext TYPE zfis_enhbapiaccdoc_001.
*->填充总账信息
  DATA ls_accountgl TYPE bapiacgl09.
* 分配字段写入“收付款单号+行项目号”
* 抬头信息
  ls_documentheader-doc_date   = is_head-budat.
  ls_documentheader-pstng_date = is_head-budat.
  ls_documentheader-doc_type   = 'DR'.
  ls_documentheader-comp_code  = is_head-bukrs.
  ls_documentheader-header_txt = is_head-bktxt.
  ls_documentheader-bus_act    = cn_bus_act. "'RFBU'.
  ls_documentheader-username   = sy-uname.

  LOOP AT it_item INTO ls_item.

    ADD 10 TO l_item.
    ls_accountreceivable-itemno_acc = l_item.
    ls_accountreceivable-customer   = ls_item-kunnr."客户
    ls_accountreceivable-bline_date = is_head-budat.
    ls_accountreceivable-gl_account = ls_item-hkont."总账科目
    ls_accountreceivable-item_text  = ls_item-sgtxt."项目文本
    APPEND ls_accountreceivable TO lt_accountreceivable.
    CLEAR  ls_accountreceivable.
    ls_currencyamount-itemno_acc = l_item.
    ls_currencyamount-currency   = is_head-waers.
    ls_currencyamount-amt_doccur = ls_item-wrbtr.
    APPEND ls_currencyamount TO lt_currencyamount.
    CLEAR:ls_currencyamount.
    ADD ls_item-zhsje TO l_wrbtr_sum.
    ADD ls_item-mwsts TO l_tax_sum.
    "----------- extension2 --------------------
    "原因码
    ls_itemext-buzei       = l_item.
    ls_itemext-bschl       = '01'.
    IF ls_itemext IS NOT INITIAL .
      lt_ext2-structure = 'ZFIS_ENHBAPIACCDOC_001'.
      lt_ext2-valuepart1 = ls_itemext          .
      APPEND  lt_ext2.
      CLEAR   lt_ext2.
      CLEAR   ls_itemext   .
    ENDIF.
  ENDLOOP.

  "税合计
  ADD 10 TO l_item.
  ls_accountreceivable-itemno_acc = l_item.
  ls_accountreceivable-customer   = ls_item-kunnr."客户
  ls_accountreceivable-bline_date = is_head-budat.
  ls_accountreceivable-gl_account = ls_item-hkont."总账科目
  ls_accountreceivable-item_text  = TEXT-004.
  ls_accountgl-profit_ctr         = '0000600002'.
  APPEND ls_accountreceivable TO lt_accountreceivable.
  CLEAR  ls_accountreceivable.
  ls_currencyamount-itemno_acc = l_item.
  ls_currencyamount-currency   = is_head-waers.
  ls_currencyamount-amt_doccur = l_tax_sum.
  APPEND ls_currencyamount TO lt_currencyamount.

  "----------- extension2 --------------------
  "原因码
    ls_itemext-buzei       = l_item.
    ls_itemext-bschl       = '01'.
    IF ls_itemext IS NOT INITIAL .
      lt_ext2-structure = 'ZFIS_ENHBAPIACCDOC_001'.
      lt_ext2-valuepart1 = ls_itemext          .
      APPEND  lt_ext2.
      CLEAR   lt_ext2.
      CLEAR   ls_itemext   .
    ENDIF.
  "行项目检查
  ADD 10 TO l_item.
  ls_accountgl-itemno_acc = l_item.
  ls_accountgl-gl_account = '6001030000'.  "会计科目在配置表中
  ls_accountgl-comp_code  = is_head-bukrs.
  ls_accountgl-fis_period = is_head-monat.
  ls_accountgl-fisc_year  = is_head-gjahr.
  ls_accountgl-pstng_date = is_head-budat.
  APPEND ls_accountgl TO lt_accountgl.

  "行项目金额检查
  ls_currencyamount-itemno_acc = l_item.
  ls_currencyamount-currency   = is_head-waers.
  ls_currencyamount-amt_doccur = 0 - l_wrbtr_sum.
  APPEND ls_currencyamount TO lt_currencyamount.
  CLEAR: ls_accountgl,ls_currencyamount.

  "----------- extension2 --------------------
  "原因码
    ls_itemext-buzei       = l_item.
    ls_itemext-bschl       = '50'.
    IF ls_itemext IS NOT INITIAL .
      lt_ext2-structure = 'ZFIS_ENHBAPIACCDOC_001'.
      lt_ext2-valuepart1 = ls_itemext          .
      APPEND  lt_ext2.
      CLEAR   lt_ext2.
      CLEAR   ls_itemext   .
    ENDIF.

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      documentheader    = ls_documentheader
    IMPORTING
*     OBJ_TYPE          =
      obj_key           = lv_key
*     OBJ_SYS           =
    TABLES
      accountgl         = lt_accountgl[]
      accountreceivable = lt_accountreceivable[]
      accountpayable    = lt_accountpayable[]
      currencyamount    = lt_currencyamount[]
      return            = lt_return[]
      extension2        = lt_ext2[].

  READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.

  IF sy-subrc NE 0 .
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    os_key-belnr   = lv_key+0(10).
    os_key-bukrs   = lv_key+10(4).
    os_key-gjahr   = lv_key+14(4).
    os_key-type    = 'S'.
    os_key-message = TEXT-002.
  ELSE.
    os_key-type = 'E'.
    LOOP AT lt_return INTO ls_return WHERE type = 'E'.
      IF os_key-message IS INITIAL.
        os_key-message = ls_return-message.
      ELSE.
        CONCATENATE os_key-message '/' ls_return-message INTO os_key-message.
      ENDIF.
    ENDLOOP.
  ENDIF.

  CLEAR:l_item,
        l_wrbtr_sum,
        lt_return[],
        lt_accountgl[],
        lt_accountreceivable[],
        lt_accountpayable[],
        lt_currencyamount[],
        lt_return[],
        lt_ext2[].

ENDFUNCTION.

 

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

BAPI_ACC_DOCUMENT_POST 简单理解过账BAPI使用 的相关文章

  • 【LeetCode 每日一题】53. 最大子数组和

    01 题目描述 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 02 示例 示例1 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连
  • 服务器安装/卸载MySQL5.7

    服务器安装 卸载MySQL5 7 本文章使用的是CentOS7 6 一 安装 1 下载MySQL 下载软件 wget i c http dev mysql com get mysql57 community release el7 10 n
  • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10582

    Exception in thread main java lang ArrayIndexOutOfBoundsException 10582 at com thoughtworks paranamer BytecodeReadingPar
  • 【开发工具】PyChram的下载和安装(windows系统)

    PyChram的下载和安装目录 一 PyChram的下载 二 PyChram的安装 三 PyChram的使用 一 PyChram的下载 PyCharm是 种Python IDE 集成开发环境 分为专业版 professional 和社区版
  • Python 计算机视觉(二) —— OpenCV 基础

    目录 1 安装配置 2 OpenCV 基础语法 1 读取图像并显示 2 调整显示窗口大小 3 调整图像尺寸大小 4 图像灰度处理 3 几何图形绘制 1 绘制线段 2 绘制矩形 3 绘制圆形 4 绘制椭圆 5 添加文本 总结 1 安装配置 打
  • odoo14 只编辑状态可见或只读状态可见

    odoo源码定义了两个类 oe read only oe edit only oe read only 只在只读状态下内容可见 编辑状态不可见 oe edit only 只在编辑状态下内容可见 只读状态不可见 使用环境 1 可以定义按钮只在
  • 小伙伴们要的安装指南——打开aiXcoder的正确方式

    作为国内用户最多的代码自动生成与补全产品 aiXcoder背后由当前SOTA的代码大模型为小伙伴们提供服务 包括智能代码生成 代码补全 代码搜索等功能 帮助小伙伴们自动完成 系列开发工作 提升开发效率和代码质量 以下是在IntelliJ I
  • C++复习笔记--虚析构和纯虚析构的使用

    目录 1 前言 2 虚析构和纯虚析构 3 代码实例 3 1 父类对象无法调用子类析构函数 3 2 虚析构实现 3 3 纯虚析构实现 1 前言 在使用多态时 如果子类的属性开辟到堆区 那么父类指针在释放时将无法调用子类的析构代码 此时需要将父
  • MYSQL脱敏

    文章目录 MYSQL脱敏 权限限制 单库级别 单表级别 单列级别 MYSQL脱敏 脱敏 脱离敏感信息 有时候开发需要权限查找一些数据 那么mysql数据库存放着很多重要数据信息 肯定不能随便让别人看到 这时候需要进行脱敏操作 这是为了权限最
  • 【Linux常用服务器配置——Samba服务】

    目录 1 简介 2 Samba的服务组成 3 安装samba服务 4 查看安装状况 5 设置开机自启动 6 启动服务 7 查看samba服务进程 8 防火墙设置 9 修改主配置文件 10 建立共享目录 11 重启smb服务 12 测试smb

随机推荐

  • cuda和cudnn下载安装

    Visual Studio cuda和cudnn下载安装 严格按照以下顺序执行 否则可能会报错 一 Visual Studio2019下载安装 网址 https visualstudio microsoft com zh hans vs 无
  • 使用 marked + highlight + tocify.tsx 完成 Markdown(码克党)笔记的渲染

    前几天看技术胖的视频 做了一个笔记的渲染功能 记录一下做法 以后忘记了可以查看 可能不是很理解 先记录 一般 我们的文章页面 或是 后台的管理 页面 平常可能要 渲染文章 和 编写文章时的浏览 我们可以使用 以下几个插件来完成这个任务 ma
  • 数据库知识点汇总(一)

    一 基本概念 数据 描述事物的符号记录称为数据 描述事物的符号可以是数字 也可以是文字 图形 图像 音频 视频等 数据有多种表现形式 它们都可以经过数字化后存入计算机 数据库 数据库是长期储存在计算机内 有组织的 可共享的大量数据的集合 数
  • 6168 Problem A Speech Patterns (25)

    问题 A Speech Patterns 25 时间限制 1 Sec 内存限制 32 MB 题目描述 People often have a preference among synonyms of the same word For ex
  • int main ( int argc, char** argv )的说明

    argc是命令行总的参数个数 argv 是argc个参数 其中第0个参数是程序的全名 以后的参数命令行后面跟的用户输入argc是命令行总的参数个数 比如 int main int argc char argv int i for i 0 i
  • ORACLE存储过程入门

    一 定义 存储过程 Stored Procedure 是在大型数据库系统中 一组为了完成特定功能的SQL 语句集 存储在数据库中 经过第一次编译后再次调用不需要再次编译 用户通过指定存储过程的名字并给出参数 如果该存储过程带有参数 来调用存
  • 渗透靶机测试之DC:1

    一 查看靶机要求 需要通过这个靶机来获得五个标志 在root的主目标中查找和读取 那就是直接拿到这个靶机的权限就行了 二 进行主机发现 三 对主机进行详细扫描及浏览主页 在网上查找Drupal 发现这个cms存在漏洞 打开msf进行漏洞查找
  • 算法笔记4.7--求第K大的数

    给定一个长度为n 1 n 1 000 000 的无序正整数序列 以及另一个数k 1 k 1 000 000 关于第k大的数 例如序列 1 2 3 4 5 6 中第3大的数是4 输入 第一行两个正整数m n 第二行为n个正整数 输出 第k大的
  • 为什么使用了索引,查询还是慢?

    经常有朋友问到 我的一个SQL语句使用了索引 为什么还是会进入到慢查询之中呢 今天我们就从这个问题开始来聊一聊索引和慢查询 1 案例分析 言归正传 为了实验 我创建了如下表 CREATE TABLE T id int 11 NOT NULL
  • 【Unity3D】血条(Health Bar)

    作业要求 血条 Health Bar 的预制设计 具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI 血条是游戏对象的一个子元素 任何时候需要面对主摄像机 分析两种实现的优缺点 给出预制的使用方法 实验内容 IMGUI制
  • 数据结构_主席树_HDU 5919 Sequence II

    HDU 5919 Sequence II CCPC长春赛区现场赛的题 可惜自己太菜 当时不会做 听了老哥的教训后 决定好好学习主席树 思路 考虑每个点带来的影响 显然 若从前向后考虑 对于第i个数 对结果的影响仅为 1 若该数字未出现过 添
  • 2023年全国硕士研究生入学统一考试英语(二)试题

    2023年全国硕士研究生入学统一考试英语 二 试题 Section I Use of English Directions Read the following text Choose the best word s for each nu
  • vue3+ts报错“ xxx“ is declared but its value is never read

    报错信息 解决办法 修改tsconfig json 这两项改为fasle noUnusedLocals false noUnusedParameters false 上面的报错解决了 如果项目使用了eslint 那么eslint还会报定义未
  • 进程(三)----(进程创建、进程终止、进程等待、进程替换)字符串解析,实现一个minishell

    进程控制 1 进程创建 pid t fork void 创建一个进程 父子进程数据独有 代码共享 写时拷贝技术 提高进程创建效率 子进程复制了父进程 一开始与父进程指向同一块物理内存 因此看起来父子进程完全相同 但是进程之间具有独立性 意味
  • (C++)何时使用引用、指针、按值传递作为参数的方法——(巧级好用的总结方法)

    1 使用引用参数的主要的两个原因 1 程序员能够修改调用函数中的数据对象 2 通过传递引用而不是整个数据对象 可以提高程序的运行效率 当数据对象比较大时 结构或者类对象 2 什么时候用引用 什么时候用指针 什么时候用按值传递 原则选择 1
  • MySQL优化配置之连接数,开启日志,忽略大小写

    在MySQL里的 性能共计 performance schema 表里 查看当前mysql支持的最大连接数 show variables like max connections 查看目前的连接数 show status like thre
  • 苹果拍照怎么显示地点和时间_手机拍照如何添加时间地点?开启这个功能,10秒就能搞定...

    我们在浏览朋友圈的时候 可以看到有些人发的照片是带有时间地点的 而且有的还带有可爱贴纸 他们这些照片都是怎么设置的呢 难道是后期制作的吗 其实不是的 只要打开手机中的这个功能 就能自动添加时间地方 非常方便 这里的功能设置是以华为手机为例子
  • python中super出现的TypeError: must be type, not classobj 原因及解决

    示例如下 class A def init self pass class B A def init self super A self init 调用B创建对象时出现错误 TypeError must be type not classo
  • SSH登录提示Permission Denied的排查

    背景 用户反馈使用密码无法正常登录 提示 Permission Denied 需要重置密码后才能正常 而相同的密码在一个月前能正常登录 一共有两台实例有这样的现象 分析 一般来说 类似问题可以从几个方面来考虑可能性 SSH server配置
  • BAPI_ACC_DOCUMENT_POST 简单理解过账BAPI使用

    业务场景 甲方是一家从事房屋租赁的公司 它的主营业务就是从各大租户手里收租子 月底了 小明发了工资美滋滋 钱到手没多久房东就催租子了 房租每月100 水电100 税费22 合计222 小明如约在手机APP上向房东支付了当月的房租 这边钱到账