前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在ABAP中实现账单详情查询功能

如何在ABAP中实现账单详情查询功能

作者头像
不会写代码的杰尼
发布2022-05-19 12:40:27
8670
发布2022-05-19 12:40:27
举报
文章被收录于专栏:CSDN专栏CSDN专栏

账单详情查询功能函数

函数语法:ABAP 开发工具:SAP GUI 740

  • 基本逻辑: 通过账单编号billid取数,仅传输应收账单日期小于等于次月最后一天的账单信息 功能函数实现代码如下,很简单的函数,主要是实现三块逻辑:
  1. 调用系统内部函数,获取当前操作时间的次月最后一天值;
  2. 按照功能说明书要求进行取值;
  3. 做一个筛选判断,查找符合基本逻辑的信息;

补充:账单信息的传输通过PO接口发送实现,在接口METHOD调用此函数即可。

代码语言:javascript
复制
FUNCTION zsrefm_check_bill.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      ET_ZSS0120 STRUCTURE  ZSSFI0120
*"      IT_ZSS0120A STRUCTURE  ZSSFI0120A
*"----------------------------------------------------------------------
*  描述:        账单详情查询接口
************************************************************************
*  版本号 日期      修改描述   功能更改说明书
************************************************************************
*  1.  2020/10/29  账单详情查询接口
************************************************************************
*声明表:应收账单信息、收款明细表、条件类型 、条件类型文本
  TABLES:zstyc0002,zstyc0042b,zstyc0042a,tivcdcondtype,tivcdcondtypet.

*声明获取次月最后一天函数相关变量
  DATA: lv_months LIKE  p0001-begda, "指系统当前时间的下一个月
        lv_days   LIKE  sy-datum.   "指该月最后一天的日期

*定义内表  ///可以用另一种方式调用-type 已有表或结构  TYPES ty_bill TYPE ZSSFI0120.
  TYPES: BEGIN OF  ty_bill,
           zprojid    TYPE zstyc0002-zprojid,       "商管项目
           billid     TYPE zstyc0002-billid,        	"账单编号
           zstatus    TYPE zstyc0002-zstatus,      "账单状态
           ztype      TYPE zstyc0002-ztype,         "账单类型
           recnnr     TYPE zstyc0002-recnnr,        "合同
           recntype   TYPE zstyc0002-recntype,   "合同类型
           brand_name TYPE zstyc0002-brand_name,       "品牌名称
           ronumber   TYPE zstyc0002-ronumber,     		 "铺位编号
           condtype   TYPE zstyc0002-condtype,   		     "条件类型
           xcondtypel TYPE tivcdcondtypet-xcondtypel, 	"费项名称
           paymdate   TYPE zstyc0042b-paymdate,    		 "收款日期
           checkdate  TYPE zstyc0042a-checkdate,    	"复核日期
           reciptamt1 TYPE zstyc0042b-reciptamt1,  	    "收款金额
           reciptid   TYPE zstyc0042b-reciptid,   			   "收款单编号
         END OF ty_bill.


*定义内表和工作区
  DATA:lt_bill TYPE TABLE OF ty_bill,
       ls_bill TYPE ty_bill.    "工作区命名  ///一般用ls_


**定义判断语句
* DATA:lt_con TYPE TABLE OF ZSSFI0120.


*获取应收账单日期的下一个月
  CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date      = sy-datum    "系统当前时间
      days      = 0
      months    = 1
      signum    = '+'
      years     = 0
    IMPORTING
      calc_date = lv_months.


* 获得一个月的最后一天
  CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
    EXPORTING
      day_in            = lv_months
    IMPORTING
      last_day_of_month = lv_days
* EXCEPTIONS
*     DAY_IN_NO_DATE    = 1
*     OTHERS            = 2
    .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  IF it_zss0120a[] IS NOT INITIAL.  "如果传入的表不为空
*读取数据
  SELECT
    a~zprojid,       "商管项目
    a~billid,        "账单编号
    a~zstatus,       "账单状态
    a~ztype,   	     "账单类型
    a~recnnr,        "合同
    a~recntype,      "合同类型
    a~brand_name,    "品牌名称
    a~ronumber,    	 "铺位编号
    a~condtype,      "条件类型
    c~xcondtypel,    "费项名称
    b~paymdate,      "收款日期
    d~checkdate,     "复核日期
    b~reciptamt1,    "收款金额
    b~reciptid       "收款单编号
  FROM zstyc0002 AS a
  LEFT JOIN zstyc0042b AS b
  ON a~billid = b~billid  "用同一个账单编号来取数,多条数据明细全部列出来
  LEFT JOIN tivcdcondtypet AS c
  ON a~condtype = c~condtype  "通过ZSTYC0002–CONDTYPE=TIVCDCONDTYPE-CONDTYPE,取出TIVCDCONDTYPE-XCONDTYPEL,也可以直接取
  LEFT JOIN zstyc0042a AS d
  ON b~reciptid = d~reciptid   "通过收款单编号取复核日期
  INTO CORRESPONDING FIELDS  OF TABLE @et_zss0120        "传出参数,自动匹配字段,不需要排序
  FOR ALL ENTRIES IN @it_zss0120a
  WHERE a~paydate LE @lv_days
  AND a~billid = @it_zss0120a-billid.     "billid接口传入的参数 执行筛选,只取需要的字段


  ELSE.
    MESSAGE '账单编号传入数据为空,取数未成功' TYPE 'E'.
  ENDIF.
*传输应收日期 ZSTYC0002-PAYDATE 小于等于次月最后一天的账单


*返回一个消息,判断取数是否成功
*  IF sy-subrc NE 0.                 "如果sy-subrc不等于0
*    MESSAGE '账单编号取数未成功' TYPE 'E'.
*  ENDIF.

ENDFUNCTION.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 账单详情查询功能函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档