SAP清账BAPI程序

业务说明:函数table中IS_ITEMS里的参数为预付凭证,也就是清账的凭证,importing中IS_INPUT时被清的凭证

FUNCTION zfb05_post.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IS_INPUT) TYPE  ZSFI_034
*"     REFERENCE(BUKRS) TYPE  BUKRS DEFAULT '1000'
*"     REFERENCE(BLART) TYPE  BLART DEFAULT 'AB'
*"     REFERENCE(BLDAT) TYPE  BLDAT DEFAULT SY-DATUM
*"     REFERENCE(BUDAT) TYPE  BUDAT DEFAULT SY-DATUM
*"     REFERENCE(MONAT) TYPE  MONAT DEFAULT SY-DATUM+4(2)
*"     REFERENCE(WAERS) TYPE  WAERS DEFAULT 'CNY'
*"  EXPORTING
*"     REFERENCE(ES_TYPE) TYPE  BAPI_MTYPE
*"     REFERENCE(ES_MSG) TYPE  BAPI_MSG
*"     REFERENCE(ES_BELNR) TYPE  BELNR_D
*"     REFERENCE(ES_BUKRS) TYPE  BUKRS
*"  TABLES
*"      IS_ITEMS STRUCTURE  ZSFI_034
*"----------------------------------------------------------------------DATA : lv_sumwa TYPE wrbtr,lv_cywrb TYPE wrbtr,lv_belnr TYPE char30,lv_index TYPE char3,lv_msg   TYPE string,lv_mode  TYPE rfpdo-allgazmd." ftclear 是清账的数据的表参数DATA:gt_ftclear TYPE STANDARD TABLE OF ftclear,gs_ftclear LIKE LINE OF gt_ftclear." ftpost 是过账的抬头和行项目的表参数DATA:gt_ftpost TYPE STANDARD TABLE OF ftpost,gs_ftpost LIKE LINE OF gt_ftpost.DATA:gt_blntab LIKE TABLE OF blntab  WITH HEADER LINE,gt_fttax  LIKE TABLE OF fttax   WITH HEADER LINE.DATA : lt_ztfi020 TYPE TABLE OF ztfi020,ls_ztfi020 TYPE ztfi020.
*&---ftpost 结构宏DEFINE populate_ftpost.CLEAR gs_ftpost.gs_ftpost-stype = &1. "记录类型 K:HEADER  P:ITEMSgs_ftpost-count = &2. "凭证计数器gs_ftpost-fnam  = &3. "BDC 字段名gs_ftpost-fval  = &4. "BDC 字段值IF gs_ftpost-fnam = 'BSEG-WRBTR' .CONDENSE gs_ftpost-fval NO-GAPS .ENDIF .APPEND gs_ftpost TO gt_ftpost.END-OF-DEFINITION.*&---ftclear 结构宏DEFINE populate_ftclear.CLEAR gs_ftclear.gs_ftclear-agkoa = &1.  "科目类型gs_ftclear-agkon = &2.  "工作清单账号关键字gs_ftclear-agbuk = &3.  "公司代码gs_ftclear-selfd = &4.  "索引凭证关键字gs_ftclear-selvon = &5. "选择未清项目的输入字段gs_ftclear-agums  = &6. "用于选择的特殊总账标识符gs_ftclear-xnops  = COND #( WHEN &6 IS INITIAL THEN abap_true ).APPEND gs_ftclear TO gt_ftclear.END-OF-DEFINITION.*&---校验数据准确性DEFINE field_check .IF &1 < &2 .es_msg = es_msg && '预付凭证:' && &3 && '冲付金额不能大于' && &1  .ENDIF .IF &4 > is_input-wrbtr .es_msg = es_msg && '预付凭证总金额大于发票金额' .ENDIF .END-OF-DEFINITION.LOOP AT is_items INTO DATA(ls_line) .lv_sumwa = lv_sumwa + ls_line-zyfje .field_check : ls_line-wrbtr ls_line-zyfje ls_line-belnr lv_sumwa .CLEAR : ls_line .ENDLOOP .IF es_msg IS INITIAL ."发票会计凭证传入BDC抬头CLEAR : lv_belnr ,lv_cywrb.lv_belnr = is_input-belnr && is_input-gjahr && is_input-buzei .populate_ftclear 'K' is_input-lifnr is_input-bukrs 'BELNR' lv_belnr is_input-umskz.populate_ftpost 'K' 1 'BKPF-BUKRS' bukrs. " company codepopulate_ftpost 'K' 1 'BKPF-BLART' blart. " document typepopulate_ftpost 'K' 1 'BKPF-BLDAT' bldat. " posting datepopulate_ftpost 'K' 1 'BKPF-BUDAT' budat.populate_ftpost 'K' 1 'BKPF-MONAT' monat.populate_ftpost 'K' 1 'BKPF-WAERS' waers. " currency"判断发票会计凭证存不存在差异行IF is_input-wrbtr <> lv_sumwa ."预付金额与这次发票金额不能抵消lv_cywrb = is_input-wrbtr - lv_sumwa .lv_index = lv_index + 1 .populate_ftpost 'P' lv_index 'BSEG-SGTXT'  is_input-belnr.    "文本populate_ftpost 'P' lv_index 'RF05A-NEWKO' is_input-lifnr.    "供应商编码(科目)populate_ftpost 'P' lv_index 'RF05A-NEWBS' is_input-bschl.    "过账码populate_ftpost 'P' lv_index 'BSEG-WRBTR'  lv_cywrb.          "金额populate_ftpost 'P' lv_index 'BSEG-HKONT'  is_input-hkont.    "总账科目populate_ftpost 'P' lv_index 'RF05A-NEWUM' is_input-umskz.    "特别总账标识ENDIF .LOOP AT is_items INTO ls_line ."预付凭证传入BDC抬头CLEAR : lv_belnr ,lv_cywrb.lv_belnr = ls_line-belnr && ls_line-gjahr && ls_line-buzei .populate_ftclear 'K' ls_line-lifnr ls_line-bukrs 'BELNR' lv_belnr ls_line-umskz."判断预付凭证要不要拆行IF ls_line-wrbtr <> ls_line-zyfje .lv_cywrb = ls_line-wrbtr - ls_line-zyfje .lv_index = lv_index + 1 .populate_ftpost 'P' lv_index 'BSEG-SGTXT'  is_input-belnr.   "文本populate_ftpost 'P' lv_index 'RF05A-NEWKO' ls_line-lifnr.    "供应商编码(科目)populate_ftpost 'P' lv_index 'RF05A-NEWBS' ls_line-bschl.    "过账码populate_ftpost 'P' lv_index 'BSEG-WRBTR'  lv_cywrb.         "金额populate_ftpost 'P' lv_index 'BSEG-HKONT'  ls_line-hkont.    "总账科目populate_ftpost 'P' lv_index 'RF05A-NEWUM' ls_line-umskz.    "特别总账标识SELECT SINGLE * FROM ztfi020 INTO ls_ztfi020WHERE bukrs = bukrsAND   gjahr = ls_line-gjahrAND   belnr = ls_line-belnrAND   buzei = ls_line-buzei .IF sy-subrc = 0 .CLEAR : ls_ztfi020-bukrs ,ls_ztfi020-belnr .ls_ztfi020-buzei = lv_index .APPEND ls_ztfi020 TO lt_ztfi020 .ENDIF .ENDIF .CLEAR : ls_line .ENDLOOP .IF gt_ftclear IS NOT INITIAL .lv_mode = 'N'.CALL FUNCTION 'POSTING_INTERFACE_START'EXPORTINGi_client           = sy-mandti_function         = 'C'i_mode             = lv_modei_keep             = 'X'i_update           = 'S'i_user             = sy-unameEXCEPTIONSclient_incorrect   = 1function_invalid   = 2group_name_missing = 3mode_invalid       = 4update_invalid     = 5user_invalid       = 6.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.CALL FUNCTION 'POSTING_INTERFACE_CLEARING'EXPORTINGi_auglv                    = 'UMBUCHNG'   "转账并清账i_tcode                    = 'FB05'i_sgfunct                  = 'C'IMPORTINGe_msgid                    = sy-msgide_msgno                    = sy-msgnoe_msgty                    = sy-msgtye_msgv1                    = sy-msgv1e_msgv2                    = sy-msgv2e_msgv3                    = sy-msgv3e_msgv4                    = sy-msgv4TABLESt_blntab                   = gt_blntabt_ftclear                  = gt_ftcleart_ftpost                   = gt_ftpostt_fttax                    = gt_fttaxEXCEPTIONSclearing_procedure_invalid = 1clearing_procedure_missing = 2table_t041a_empty          = 3transaction_code_invalid   = 4amount_format_error        = 5too_many_line_items        = 6company_code_invalid       = 7screen_not_found           = 8no_authorization           = 9OTHERS                     = 10."获取消息文本MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_msg.IF sy-msgid = 'F5' AND sy-msgty = 'S' AND sy-msgno = '312' .es_msg = lv_msg .es_type = 'S' .es_belnr = sy-msgv1 .es_bukrs = sy-msgv2 .IF lt_ztfi020 IS NOT INITIAL .DO 10 TIMES.SELECT * FROM bseg INTO TABLE @DATA(lt_bseg) WHERE belnr = @es_belnr AND bukrs = @es_bukrs .IF sy-subrc = 0 .LOOP AT lt_ztfi020 ASSIGNING FIELD-SYMBOL(<fs_ztfi020>).READ TABLE lt_bseg INTO DATA(ls_bseg) WITH KEY buzei = <fs_ztfi020>-buzei .IF sy-subrc = 0 .<fs_ztfi020>-belnr = ls_bseg-belnr .<fs_ztfi020>-bukrs = ls_bseg-bukrs .<fs_ztfi020>-zqzbs = '' .CLEAR : ls_bseg .ENDIF .ENDLOOP .IF sy-subrc = 0 .MODIFY ztfi020 FROM TABLE lt_ztfi020 .ENDIF .EXIT .ELSE .WAIT UP TO '0.5' SECONDS .ENDIF .ENDDO.ENDIF .ELSE .es_msg = lv_msg .es_type = 'E' .ENDIF .CALL FUNCTION 'POSTING_INTERFACE_END'EXCEPTIONSsession_not_processable = 1OTHERS                  = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.es_msg = lv_msg .es_type = sy-msgty .ENDIF .ELSE .es_type = 'E' .ENDIF .ENDFUNCTION.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11831.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Llama 3.2-Vision 多模态大语言模型

1. 引言 Llama 3.2-Vision多模态大型语言模型(文本 图像)是一个图像推理生成模型&#xff0c;按照官方的说法&#xff0c;在常见行业基准测试上&#xff0c;其性能优于许多可用的开源和闭源多模态模型。Llama 3.2-Vision有两个版本&#xff0c;一个是11B (7.9G)&#xff0c;另…

OpenObserve云原生平台指南:在Ubuntu上快速部署与远程观测

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址 6. 配置固定公网地址 前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可…

隧道论文阅读2-采用无人融合扫描数据的基于深度学习的垂直型隧道三维数字损伤图

目前存在的问题&#xff1a; 需要开发新的无人测量系统测量垂直隧道图像数据量巨大&#xff0c;基于深度学习完成损伤评估跟踪获取图像位置的困难&#xff0c;对大型基础设施感兴趣区域(roi)的2d和3d地图建立进行了研究&#xff0c;对整个目标结构的损伤定位仍然具有挑战性。为…

【从VAE到LDM】Variational Auto Encoder原理以及关于Latent Diffusion的思考

论文链接&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models 官方实现&#xff1a;CompVis/latent-diffusion、CompVis/stable-diffusion 视频讲解&#xff1a;一个视频看懂VAE的原理以及关于latent diffusion的思考 前言 目前的扩散模型范式基本上都…

1111fxh,MYSQL加锁规则

怎么查看一个事务中对索引的加锁情况 -- 这条语句可以看到事务执行过程中加了哪些锁 select * from performance_schema.data_locks X是next-key lock 混合锁 X,REC_NOT_GAP就是行锁 X,GAP是间隙锁 可重复读下的加锁规则 2原则2优化 1.加锁的基本单位是next-key lock,即行…

mysql中数据不存在却查询到记录?

前言 首先看下面的查询语种 select * from AudioKnowledgeChatInfo where AudioId297795550566600706; 查询结果如下 看到上面的查询结果&#xff0c;是不是一脸懵&#xff1f;这audioId明显不对啊&#xff0c;怎么查询到了&#xff1f; 原因剖析 首先我们来看看数据库表…

拿不下总统之位,那就用热加载拿下验证码识别与爆破好了!

大家好&#xff0c;这里是在总统选举中惜败的超级牛 虽然没能拿下阿美利卡总统之位 但是牛牛的热加载功能&#xff0c;却能轻松拿下验证码的识别与爆破 验证码一般会在注册、登录等功能&#xff0c;用来防止自动化工具的攻击。一般的验证码生成过程如下图所示&#xff1a; …

闯关leetcode——202. Happy Number

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/happy-number/description/ 内容 Write an algorithm to determine if a number n is happy. A happy number is a number defined by the following process: Starting with any positive inte…

如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息

目录 前言一、什么是Web Scraper API二、Web Scraper API 的优势&#xff1a;三、Web Scraper API 适用场景四、实践案例目标需求视频讲解1、选择Web Scraper API2、登录注册3、进入用户控制面板4、选择API5、触发数据收集 API6、获取爬虫结果7、分析爬虫结果&#xff08;1&…

json转excel,读取json文件写入到excel中【rust语言】

一、rust代码 将json文件写入到 excel中。&#xff08;保持json &#xff1a;key原始顺序&#xff09; use indexmap::IndexMap; use serde::Deserialize; use serde_json::{Value, from_str}; use std::error::Error; use std::io::{self, Write}; use std::path::{Path}; u…

2024年下半年系统规划与管理师论文真题

试题一、论IT服务规划设计 IT服务规划设计处于整个IT服务生命周期中的前端&#xff0c;可以帮助IT服务供方了解客户的需求并对其进行全面的需求分析&#xff0c;规划设计的范围不仅包括新的服务&#xff0c;还包括服务连续性保障服务水平的满足和对标准、规则的遵从&#xff0…

无人机动力测试台如何快速外接第三方传感器

前言 动力测试台对于测试动力系统的拉力、扭矩、RPM 和效率至关重要。将传感器集成到您的测试中增加了另一层优化&#xff0c;可以将您的性能提升到一个新的水平。 在无人驾驶行业中&#xff0c;有充分的证据表明&#xff0c;从外部传感器收集数据可能具有挑战性。为了解决这…

金蝶云星空与旺店通数据集成解决方案实例

金蝶云星空与旺店通旗舰奇门的数据集成案例分享 在企业日常运营中&#xff0c;数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将聚焦于一个具体的系统对接集成案例&#xff1a;如何将金蝶云星空中的直接调拨单数据无缝集成到旺店通旗舰奇门平台。 本次集成方案命名…

gorm使用注意事项

1. 使用updates更新字段为0或""时 在updates更新时&#xff0c;会默认将数值为0、字符串为""等忽略掉&#xff0c;不会更新&#xff1b;比如 db.Model(&user).Updates(User{Name: "hello", Age: 18, Active: false, Games: 0, Friend: &qu…

docker compose - 设置名字

只使用 docker compose up 启动容器&#xff0c;默认名字为当前文件夹的名字 设置 project-name&#xff0c;docker 客户端会显示设置的名字&#xff0c;方便区分 docker compose --project-name webtest up错误&#xff1a; docker compose up --project-name webtest 效果…

破解反向代购复杂挑战,一站式简化逆向海淘购物

在全球化日益加深的今天&#xff0c;反向代购行业迎来了前所未有的发展机遇&#xff0c;同时也伴随着一系列挑战。这些企业不仅需要穿梭于世界各地的商场与网店&#xff0c;搜罗各式各样的商品&#xff0c;还要应对商品众多、客户下单繁杂以及客户细分需求多样化的现实问题。想…

户型超赞!招商“超级大城”再腾飞!三期新品全面升级!即将首开!

2024年9月底&#xff0c;美联储降息带来整体政策方向全面转变楼市组合大招密集落地&#xff0c;力度非同寻常。先是降息、降准、降存量房贷利率等货币宽松政策&#xff0c;到国家首提“止跌回稳”再到上海、深圳等一线城市连夜出台限购优化政策。在利好扶持重磅加码&#xff0c…

Web3 游戏周报(11.03 - 11.09)

回顾上周的区块链游戏概况&#xff0c;查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【11.03 - 11.09】Web3 游戏行业动态&#xff1a; Ton Accelerator 推出名为「Synergy」的 500 万美元计划&#xff0c;旨在推动跨链创新&#xff0c;创造 TON 用户与 EVM 网络适应…

Kafka面试题解答(一)

1.kafka消息发送的流程&#xff1f; 生产者&#xff1a; 在消息发送的过程中涉及到了两个线程&#xff1a;main线程和sender线程。在main线程中创建了一个双端队列RecordAccumulator&#xff08;默认32m&#xff09;。main线程将消息发送到RecordAccumulator,sender线程不断地…

从规划到执行:高效项目进度管理流程与技巧

项目进度管理是项目管理的一个重要组成部分&#xff0c;包括规划、组织和管理活动和资源&#xff0c;确保项目按时完成。 该流程首先明确定义实现项目目标所需的所有任务和活动&#xff0c;并将它们细分为更小、更易管理的项目模块&#xff0c;以便于全面规划和执行。项目进度…