SAP 预付款清账程序

预付款批量清账程序,也是来自于网上,稍微改了一下。依据付款参考清账。

原文参考:【ABAP】供应商、客户的特殊总账和非特殊总账清账_sap f-44 bapi-CSDN博客

&---------------------------------------------------------------------*
*& Report ZC_CLEAR1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZC_CLEAR1.TABLES:bseg,t100.DATA:BEGIN OF lt_bseg OCCURS 0,contract(30),"FAFW合同号
*  kunnr LIKE bseg-kunnr,lifnr LIKE bseg-lifnr,bukrs LIKE bseg-bukrs,belnr LIKE bseg-belnr,gjahr LIKE bseg-gjahr,buzei LIKE bseg-buzei,bschl LIKE bseg-bschl,koart LIKE bseg-koart,umskz LIKE bseg-umskz,shkzg LIKE bseg-shkzg,mwskz LIKE bseg-mwskz,wrbtr LIKE bseg-wrbtr,zuonr LIKE bseg-zuonr,sgtxt LIKE bseg-sgtxt,kidno LIKE bseg-KIDNO,bewar LIKE bseg-bewar, "事务类型del,"删除标记
*  sign,"清账标记END OF lt_bseg.DATA:BEGIN OF lt_bsegx OCCURS 0,lifnr LIKE bseg-lifnr,kidno LIKE bseg-KIDNO,contract(30),"FAFW合同号wrbtr LIKE bseg-wrbtr,END OF lt_bsegx.DATA:lt_clear LIKE TABLE OF lt_bseg WITH HEADER LINE.FIELD-SYMBOLS:<f_bseg> LIKE lt_bseg.
DATA:delflag,start TYPE i.DATA:t_bdc LIKE TABLE OF bdcdata WITH HEADER LINE,mess LIKE  STANDARD TABLE OF bdcmsgcoll INITIAL SIZE  0  WITH HEADER LINE.DATA:lflag VALUE 0,lv_lifnr LIKE bseg-lifnr,lv_contract(30).DATA:message(300).
DATA: l_mstring(480).SELECTION-SCREEN BEGIN OF BLOCK bl00  WITH FRAME.
PARAMETERS: p_bukrs LIKE bseg-bukrs OBLIGATORY DEFAULT '1000'.
PARAMETERS: p_gjahr LIKE bseg-gjahr OBLIGATORY DEFAULT sy-datum+0(4).
PARAMETERS: p_monat LIKE bkpf-monat OBLIGATORY DEFAULT sy-datum+4(2).
PARAMETERS: p_augdt LIKE bsik-augdt OBLIGATORY DEFAULT sy-datum.
SELECT-OPTIONS:s_lifnr FOR bseg-lifnr.
PARAMETERS: p_umskz LIKE bseg-umskz.
PARAMETERS: p_fafw AS CHECKBOX DEFAULT 'X'.
PARAMETERS: p_mode DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK bl00.START-OF-SELECTION.IF s_lifnr IS INITIAL.MESSAGE '请输入供应商号!' TYPE 'I'.ELSE.PERFORM selectdata.IF p_fafw = 'X'.PERFORM contractmode.ENDIF.PERFORM clear.ENDIF.*&---------------------------------------------------------------------*
*&      Form  selectdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM selectdata.
* 查询数据IF p_umskz IS NOT INITIAL.SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_bseg FROM bsikWHERE bukrs =  p_bukrsAND   lifnr IN s_lifnrAND   umskz IN ('',p_umskz).ELSE.SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_bseg FROM bsikWHERE bukrs =  p_bukrsAND   lifnr IN s_lifnrAND   umskz = ''.ENDIF.ENDFORM.                    "selectdata*&---------------------------------------------------------------------*
*&      Form  subdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM contractmode.*  提取合同号delflag = 0.LOOP AT lt_bseg ASSIGNING <f_bseg>.
*    IF <f_bseg>-sgtxt CS 'FA' OR <f_bseg>-sgtxt CS 'FW'.
*      SEARCH <f_bseg>-sgtxt FOR 'FA'.
*      IF sy-subrc = 0.
*        start = sy-fdpos.
*        <f_bseg>-contract = <f_bseg>-sgtxt+start(10).
*      ELSE.
*        SEARCH <f_bseg>-sgtxt FOR 'FW'.
*        start = sy-fdpos.
*        <f_bseg>-contract = <f_bseg>-sgtxt+start(10).
*      ENDIF.
*    ELSE.
*      <f_bseg>-del = 'X'.
*      IF delflag = 0.
*        delflag = 1.
*      ENDIF.
*    ENDIF.IF <f_bseg>-kidno IS NOT INITIAL.<f_bseg>-contract = <f_bseg>-kidno.ELSE.<f_bseg>-del = 'X'.IF delflag = 0.delflag = 1.ENDIF.ENDIF.IF <f_bseg>-shkzg = 'H'.<f_bseg>-wrbtr = <f_bseg>-wrbtr * -1.ELSE.<f_bseg>-wrbtr = <f_bseg>-wrbtr.ENDIF.ENDLOOP.IF delflag = 1.SORT lt_bseg BY del.DELETE lt_bseg WHERE del = 'X'.ENDIF.IF lt_bseg[] IS INITIAL.MESSAGE '没有要清账的项目!' TYPE 'E'.ENDIF.* 查找要清账的合同SORT lt_bseg BY lifnr contract.SORT lt_bseg BY lifnr kidno.LOOP AT lt_bseg.lt_bsegx-lifnr    = lt_bseg-lifnr.lt_bsegx-wrbtr    = lt_bseg-wrbtr.lt_bsegx-contract = lt_bseg-contract.lt_bsegx-kidno    = lt_bseg-kidno.COLLECT lt_bsegx.ENDLOOP.SORT lt_bsegx BY wrbtr DESCENDING.DELETE lt_bsegx WHERE wrbtr NE 0.RANGES:lr_contract FOR lt_bseg-contract.SORT lt_bsegx BY lifnr contract.LOOP AT lt_bsegx.lr_contract-low    = lt_bsegx-contract.lr_contract-sign   = 'I'.lr_contract-option = 'EQ'.APPEND lr_contract.ENDLOOP.IF lr_contract[] IS INITIAL.MESSAGE '没有要清账的项目!' TYPE 'E'.ELSE.
*    DELETE ADJACENT DUPLICATES FROM lr_contract.SORT lt_bseg BY contract.DELETE lt_bseg WHERE contract NOT IN lr_contract.ENDIF.SORT lt_bseg BY contract lifnr.ENDFORM.                    "subdata*&---------------------------------------------------------------------*
*&      Form  clear
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM clear.IF lt_bseg[] IS INITIAL.MESSAGE '没有要清账的项目!' TYPE 'E'.ENDIF.LOOP AT lt_bseg.CLEAR lt_clear.REFRESH lt_clear.CLEAR lv_lifnr.AT NEW contract.lflag = 1.ENDAT.IF lflag = 1.lv_lifnr    = lt_bseg-lifnr.lv_contract = lt_bseg-contract.LOOP AT lt_bseg WHERE lifnr = lv_lifnr AND contract = lv_contract.MOVE lt_bseg TO lt_clear.APPEND lt_clear.ENDLOOP.PERFORM frmbdc.lflag = 0.ENDIF.ENDLOOP.ENDFORM.                    "clear*&---------------------------------------------------------------------*
*&      Form  frmbdc
*&---------------------------------------------------------------------*
*       录屏
*----------------------------------------------------------------------*
FORM frmbdc.CLEAR   t_bdc.REFRESH t_bdc.DATA:fnam(15),num(2),i TYPE i.PERFORM fill_bdc_table USING '1' 'SAPMF05A' '0131'.PERFORM fill_bdc_table USING '' 'BDC_OKCODE' '=PA'.PERFORM fill_bdc_table USING '' 'RF05A-AGKON' lv_lifnr.PERFORM fill_bdc_table USING '' 'BKPF-BUDAT' p_augdt.PERFORM fill_bdc_table USING '' 'BKPF-MONAT' p_monat.PERFORM fill_bdc_table USING '' 'BKPF-BUKRS' p_bukrs.PERFORM fill_bdc_table USING '' 'BKPF-WAERS' 'CNY'.PERFORM fill_bdc_table USING '' 'RF05A-AGUMS' p_umskz.PERFORM fill_bdc_table USING '' 'RF05A-XNOPS' 'X'.PERFORM fill_bdc_table USING '' 'RF05A-XPOS1(03)' 'X'.PERFORM fill_bdc_table USING '1' 'SAPMF05A' '0731'.PERFORM fill_bdc_table USING '' 'BDC_OKCODE' '=BU'.LOOP AT lt_clear.num = sy-tabix.*  如果超过7,则先录OKCODE,再录新屏幕号IF i <= 28.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGinput  = numIMPORTINGoutput = num.CONCATENATE 'RF05A-SEL01(' num ')' INTO fnam.PERFORM fill_bdc_table USING '' fnam lt_clear-belnr.ELSE.
* 翻页ENDIF.ENDLOOP.CALL TRANSACTION 'F-44' USING t_bdc MODE p_mode MESSAGES INTO mess.DATA:message(100).LOOP AT mess FROM 2.
*调试用SELECT SINGLE * FROM t100 WHERE sprsl = mess-msgspraAND   arbgb = mess-msgidAND   msgnr = mess-msgnr.IF sy-subrc = 0.l_mstring = t100-text.IF l_mstring CS '&1'.REPLACE '&1' WITH mess-msgv1 INTO l_mstring.REPLACE '&2' WITH mess-msgv2 INTO l_mstring.REPLACE '&3' WITH mess-msgv3 INTO l_mstring.REPLACE '&4' WITH mess-msgv4 INTO l_mstring.ELSE.REPLACE '&' WITH mess-msgv1 INTO l_mstring.REPLACE '&' WITH mess-msgv2 INTO l_mstring.REPLACE '&' WITH mess-msgv3 INTO l_mstring.REPLACE '&' WITH mess-msgv4 INTO l_mstring.ENDIF.CONDENSE l_mstring.ENDIF.IF mess-msgid = 'F5' AND mess-msgnr = '312'.EXIT.ELSE.CONCATENATE '供应商' lv_lifnr '付款参考' lv_contract '清账失败,请手工清账或联系IT中心!' INTO message.MESSAGE message TYPE 'E'.ENDIF.ENDLOOP.ENDFORM.                    "frmbdc*&---------------------------------------------------------------------*
*&      Form  fill_bdc_table
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->:          text
*      -->TMP_FLAG   text
*      -->TMP_VAR1   text
*      -->TMP_VAR2   text
*----------------------------------------------------------------------*
FORM fill_bdc_table  USING:tmp_flagtmp_var1tmp_var2.CLEAR t_bdc.IF tmp_flag = '1'.t_bdc-program  = tmp_var1.t_bdc-dynpro   = tmp_var2.t_bdc-dynbegin = 'X'.ELSE.t_bdc-fnam     = tmp_var1.t_bdc-fval     = tmp_var2.ENDIF.APPEND t_bdc.
ENDFORM.                    "fill_bdc_table

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老生常谈 - 从输入URL到页面加载的过程(详细版)

从输入URL到页面加载的过程 之前一直都是直接看一下总结的八股文章&#xff0c;对于实际的整个链路并不是特别熟悉&#xff0c;这次花了一天多的时间看了很多资料&#xff0c;对于整个页面加载的流程有了自己的理解&#xff0c;从前端开始访问的浏览器多线程、缓存等问题&#…

5-11一个球从100米自由落下

#include<stdio.h> int main(){double down100;double back down/2;int n;//次数for(n2;n<10;n){downdownback*2;backback/2; }printf("第10次落地经过%f米\n",down);printf("第10次反弹%f米\n",back);return 0;}

href和src的区别

1、请求资源类型不同 &#xff08;1&#xff09; href是Hypertext Reference的缩写&#xff0c;表示超文本引用。用来建立当前元素和文档之间的链接。常用的有&#xff1a;link、a。 &#xff08;2&#xff09;在请求 src 资源时会将其指向的资源下载并应用到文档中&#xff0…

分布式事务seata的AT模式介绍

分布式事务seata的AT模式介绍 seata是阿里开源的一款分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;本文主要介绍AT模式的使用。 seata安装 下载seata服务&#xff0c;官方地址…

测试数据不会造?可以用这个工具Faker

在测试过程中&#xff0c;大家应该都遇到过各种各样的数据构造问题。e.g. 构造一批通讯录、构造一批用户三要素(姓名手机号身份证)、构造一批银行卡数据…… 这时候&#xff0c;测试数据大多数可能是这样的: 张三, 130 0000 0001 李四, 130 0000 0002 王五, 130 0000 0003 …

【C/PTA —— 11.函数2(课外实践)】

C/PTA —— 11.函数2&#xff08;课外实践&#xff09; 一.函数题6-1 计算A[n]1/(1 A[n-1])6-2 递归实现顺序输出整数6-3 自然数的位数(递归版)6-4 分治法求解金块问题6-5 汉诺塔6-6 重复显示字符(递归版)6-7 显示平行四边形(右)(递归版) 二.编程题7-2 N阶楼梯上楼问题 一.函数…

python实现存款日利息计算器(窗口界面形式)

输入存款金额&#xff0c;7日年化收益率&#xff0c;输出每日利息 完整源码如下&#xff1a; import tkinter as tk from tkinter import messageboxdef calculate_interest():deposit float(entry_deposit.get())interest_rate float(entry_interest_rate.get())daily_int…

【数据结构】二叉排序树(c风格、结合c++引用)

目录 1 基本概念 结构体定义 各种接口 2 二叉排序树的构建和中序遍历 递归版单次插入 非递归版单次插入 3 二叉排序树的查找 非递归版本 递归版本 4 二叉排序树的删除&#xff08;难点&#xff09; 1 基本概念 普通二叉排序树是一种简单的数据结构&#xff0c;节点的值…

戏说二十三种设计模式_用故事的方式就是让你一定能懂

创建型模式 1、FACTORY—追MM少不了请吃饭了&#xff0c;麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西&#xff0c;虽然口味有所不同&#xff0c;但不管你带MM去麦当劳或肯德基&#xff0c;只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式&…

Cortex-M与RISC-V区别

环境 Cortex-M以STM32H750为代表&#xff0c;RISC-V以芯来为代表 RTOS版本为RT-Thread 4.1.1 寄存器 RISC-V 常用汇编 RISC-V 关于STORE x4, 4(sp)这种寄存器前面带数字的写法&#xff0c;其意思为将x4的值存入sp4这个地址&#xff0c;即前面的数字表示偏移的意思 反之LOA…

【LM358AD运放方波振荡器可控输出幅值】2022-2-25

缘由仿真如何缩小方波振荡电路方波幅值?-有问必答-CSDN问答

使用Pytorch从零开始构建LSTM

长短期记忆&#xff08;LSTM&#xff09;网络已被广泛用于解决各种顺序任务。让我们了解这些网络如何工作以及如何实施它们。 就像我们一样&#xff0c;循环神经网络&#xff08;RNN&#xff09;也可能很健忘。这种与短期记忆的斗争导致 RNN 在大多数任务中失去有效性。不过&a…

发送一个网络数据包的过程解析

在 ip_queue_xmit 中&#xff0c;也即 IP 层的发送函数里面&#xff0c;有三部分逻辑。第一部分&#xff0c;选取路由&#xff0c;也即我要发送这个包应该从哪个网卡出去。 这件事情主要由 ip_route_output_ports 函数完成。接下来的调用链为&#xff1a;ip_route_output_port…

改进YOLOv8 | YOLOv5系列:RFAConv续作,即插即用具有任意采样形状和任意数目参数的卷积核AKCOnv

RFAConv续作,构建具有任意采样形状的卷积AKConv 一、论文yolov5加入的方式论文 源代码 一、论文 基于卷积运算的神经网络在深度学习领域取得了显著的成果,但标准卷积运算存在两个固有缺陷:一方面,卷积运算被限制在一个局部窗口,不能从其他位置捕获信息,并且其采样形状是…

Matlab进阶绘图第33期—双曲面图

在《Matlab论文插图绘制模板第56期—曲面图&#xff08;Surf&#xff09;》中&#xff0c;我分享过曲面图的绘制模板。 然而&#xff0c;有的时候&#xff0c;需要在一张图上绘制两个及以上的曲面图&#xff0c;且每个曲面图使用不同的配色方案。 在Matlab中&#xff0c;一张…

C++基础入门(超详细)

话不多说&#xff0c;序言搞起来&#xff1a; 自从开始学老师布置的任务后&#xff0c;目前还是OpenCV&#xff0c;哈~哈。我就莫名问老师&#xff1a;“以后编程是用C还是python&#xff1f;”&#xff0c;果然还是太年轻&#xff0c;老师说&#xff1a;“两们都要精通”。唉&…

set和map + multiset和multimap(使用+封装(RBTree))

set和map 前言一、使用1. set(1)、模板参数列表(2)、常见构造(3)、find和count(4)、insert和erase(5)、iterator(6)、lower_bound和upper_bound 2. multiset3. map(1)、模板参数列表(2)、构造(3)、modifiers和operations(4)、operator[] 4. multimap 二、封装RBTree迭代器原理R…

9.输出国际象棋盘【2023.11.24】

1.问题描述 要求输出国际象棋棋盘。 2.解决思路 国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j控制列&#xff0c;根据ij的和的变化来控制输出黑方格还是白方格。 3.代码实现 #include<stdio.h> int main(){for(int i0;i&…

各操作系统之间的关系

请移步知乎&#xff1a; 操作系统UNIX、WINDOWS、LINUX、MC OS的联系与区别 - 知乎 (zhihu.com) 移动端的android操作系统就人尽皆知啦&#xff0c;基于linux内核。 完毕。 适用领域&#xff1a; windows,macos:主要面向个人计算机市场 Linux、Windows Server:随着互联网的…

基于广义正态分布算法优化概率神经网络PNN的分类预测 - 附代码

基于广义正态分布算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于广义正态分布算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于广义正态分布优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xf…