应付暂估的明细查询还是很麻烦的一件事情,系统本身并不提供相关功能。其开发源代码如下:

REPORT  ZRFI0950. 
*********************************************************************** 
* TABLES 
*********************************************************************** 
tables: 
  bkpf, 
  kna1, "客户账户 
  knb1, "公司代码 
  knc1, "会计年度 
  bsid. "凭证日期

*********************************************************************** 
* ALV ABOUT 
*********************************************************************** 
type-pools: 
  slis.

DATA: i_events    TYPE slis_t_event          WITH HEADER LINE, 
      i_fieldcat  TYPE slis_t_fieldcat_alv   WITH HEADER LINE, 
      i_listcomm  TYPE slis_t_listheader     WITH HEADER LINE, 
      i_layout    TYPE slis_layout_alv. 
*********************************************************************** 
* GLOBAL VARIABLES 
*********************************************************************** 
data: begin of gt_detail occurs 0,  " 暂估入库列表 
        hkont like bsis-hkont,  " 科目号 
        belnr like bsis-belnr,  " 凭证编号 
        buzei like bsis-buzei,  " 凭证行项目 
        shkzg like bsis-shkzg,  " 借贷标识 
        budat like bsis-budat,  " 过帐日期 
        dmbtr like bsis-dmbtr,  " 发生金额 
        ebeln like bseg-ebeln,  " 采购凭证 
        lifnr like ekko-lifnr,  " 供应商号 
        lname LIKE lfa1-name1, 
        dnume type i,           " 帐龄 
      end of gt_detail, 
      BEGIN OF gt_out OCCURS 0, 
        id    type i, " 序号 
        lifnr LIKE ekko-lifnr, "供应商号 
        lname like lfa1-name1, "供应商名 
        ncdat like bsis-dmbtr, "年初余额 
        qmdat like bsis-dmbtr, "期末余额 
        qjone like bsis-dmbtr, "0-90天 
        qjtwo like bsis-dmbtr, "91-180 
        qjthr like bsis-dmbtr, "181-270 
        qjfou like bsis-dmbtr, "271-360 
        qjfiv like bsis-dmbtr, ">360 
      END OF gt_out. 
data: gt_ebeln LIKE STANDARD TABLE OF gt_detail WITH HEADER LINE, 
      wa_lname LIKE lfa1-name1.

*********************************************************************** 
* INTERNAL TABLES AND WORK AREAS 
*********************************************************************** 
selection-screen begin of block count with frame title text-001. 
  parameters: p_budat like bsis-budat obligatory default sy-datum. 
selection-screen end of block count. 
*********************************************************************** 
* EVENT 
***********************************************************************

start-of-selection. 
  perform get_data. 
  perform process_data. 
end-of-selection. 
  perform data_output.

***======>>>>>> End of main program <<<<<<======***

************************************************************************ 
* FORM 子程序 
************************************************************************ 
form get_data. 
  select a~hkont a~belnr a~buzei a~shkzg a~budat a~dmbtr b~txt50 
    from bsis as a join GL_ACCT_CA_TEXT as b on a~hkont = b~SAKNR 
    into CORRESPONDING FIELDS OF table gt_detail 
   where hkont = '2202980000' 
     and budat <= p_budat.

select a~hkont a~belnr a~buzei a~shkzg a~budat a~dmbtr b~txt50 
    from bsas as a join GL_ACCT_CA_TEXT as b on a~hkont = b~SAKNR 
    appending CORRESPONDING FIELDS OF table gt_detail 
   where hkont = '2202980000' 
     and budat <= p_budat. 
endform.

form process_data. 
  data year(4) type n VALUE '0000'. 
  year = p_budat+0(4) - 1. 
  loop at gt_detail. 
    if gt_detail-shkzg = 'S'. 
      gt_detail-dmbtr = 0 - gt_detail-dmbtr. 
    endif.

select single ebeln from bseg 
      into gt_detail-ebeln 
     where belnr = gt_detail-belnr 
       and buzei = gt_detail-buzei 
       and gjahr = gt_detail-budat+0(4). 
    select single lifnr from ekko 
      into gt_detail-lifnr 
     where ebeln = gt_detail-ebeln.

gt_detail-dnume = p_budat - gt_detail-budat. 
    gt_out-lifnr = gt_detail-lifnr.

IF gt_detail-budat+0(4) <= year. 
      gt_out-ncdat = gt_detail-dmbtr. 
    ENDIF. 
    gt_out-qmdat = gt_detail-dmbtr. 
    if gt_detail-dnume <= 90. 
      gt_out-qjone = gt_detail-dmbtr. 
    elseif gt_detail-dnume <= 180. 
      gt_out-qjtwo = gt_detail-dmbtr. 
    elseif gt_detail-dnume <= 270. 
      gt_out-qjthr = gt_detail-dmbtr. 
    elseif gt_detail-dmbtr <= 360. 
      gt_out-qjfou = gt_detail-dmbtr. 
    else. 
      gt_out-qjfiv = gt_detail-dmbtr. 
    endif.

COLLECT gt_out. 
    CLEAR gt_out.

modify gt_detail. 
    clear gt_detail. 
  endloop. 
  sort gt_out by lifnr. 
  loop at gt_out. 
    gt_out-id = sy-tabix. 
    SELECT SINGLE NAME1 FROM LFA1 
      INTO GT_OUT-LNAME 
     WHERE LIFNR = GT_OUT-LIFNR. 
    MODIFY gt_out. 
    clear gt_out. 
  ENDLOOP.

endform.

FORM data_output. 
  PERFORM events_build. 
  PERFORM layout_build. 
  PERFORM fields_build. 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
    EXPORTING 
      i_callback_program = sy-repid 
      i_save             = '' 
      i_callback_user_command  = 'USER_COMMAND' 
      is_layout          = i_layout 
      it_events          = i_events[] 
      it_fieldcat        = i_fieldcat[] 
    TABLES 
      t_outtab           = gt_out.

ENDFORM.                    "data_output

FORM events_build . 
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 
    EXPORTING 
      i_list_type = 0 
    IMPORTING 
      et_events   = i_events[]. 
  READ TABLE i_events WITH KEY name = slis_ev_top_of_page. 
  IF sy-subrc = 0. 
    i_events-form = 'ALV_TOP_OF_PAGE'. 
    MODIFY i_events INDEX sy-tabix. 
  ENDIF. 
ENDFORM.                    "events_build

*&---------------------------------------------------------------------* 
*&      Form  alv_top_of_page 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM alv_top_of_page. 
  DATA itoc(10) TYPE c. 
  DATA: lv_temp(60). 
  CLEAR: i_listcomm,i_listcomm[]. 
  i_listcomm-typ = 'H'. 
  i_listcomm-key = ''. 
  i_listcomm-info = '材料暂估表'. 
  APPEND i_listcomm. 
  CLEAR i_listcomm.

i_listcomm-typ = 'S'. 
  lv_temp = '编制单位:'. 
  APPEND i_listcomm. 
  CLEAR  i_listcomm.

i_listcomm-typ = 'S'. 
  CONCATENATE '查询时间: ' p_budat+0(4) '年' p_budat+4(2) '月' p_budat+6(2) '日' 
         INTO lv_temp. 
  i_listcomm-info = lv_temp. 
  APPEND i_listcomm. 
  CLEAR  i_listcomm.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
    EXPORTING 
      it_list_commentary = i_listcomm[]. 
ENDFORM.                    "alv_top_of_page

*&---------------------------------------------------------------------* 
*&      Form  layout_build 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM layout_build . 
  i_layout-zebra                = 'X'. 
  i_layout-detail_popup         = 'X'. 
  i_layout-no_vline             = ''. 
  i_layout-colwidth_optimize    = 'X'. 
  i_layout-detail_initial_lines = 'X'. 
  i_layout-detail_titlebar      = '物料暂估明细'. 
ENDFORM.                    " layout_build

* alv ?? 
FORM fields_build. 
  i_fieldcat-key = 'X'. 
  PERFORM alv_field_column USING 'ID' '序号'. 
  i_fieldcat-key = 'X'. 
  PERFORM alv_field_column USING 'LIFNR' '供应商号'. 
  i_fieldcat-key = 'X'. 
  PERFORM alv_field_column USING 'LNAME' '供应商名称'. 
  i_fieldcat-key = 'X'. 
  PERFORM alv_field_column USING 'NCDAT' '年初余额'. 
  i_fieldcat-key = 'X'. 
  PERFORM alv_field_column USING 'QMDAT' '期末余额'. 
  PERFORM alv_field_column USING 'QJONE' '0-90天'. 
  PERFORM alv_field_column USING 'QJTWO' '91-180天'. 
  PERFORM alv_field_column USING 'QJTHR' '181-270天'. 
  PERFORM alv_field_column USING 'QJFOU' '271-360天'. 
  PERFORM alv_field_column USING 'QJFIV' '大于360天'. 
ENDFORM.                    "fields_build

*&---------------------------------------------------------------------* 
*&      Form  alv_field_column 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->VALUE(P_FIELDNAME)  text 
*      -->VALUE(P_SELTEXT_L)  text 
*----------------------------------------------------------------------* 
FORM alv_field_column USING value(p_fieldname) 
      value(p_seltext_l).

i_fieldcat-fieldname   = p_fieldname. 
  i_fieldcat-seltext_l   = p_seltext_l. 
  IF p_fieldname+0(2) CP 'QJ' OR p_fieldname+0(2) CP 'NC' OR p_fieldname+0(2) = 'QM'. 
    i_fieldcat-edit_mask   = '==Z001'. 
  ENDIF. 
  APPEND i_fieldcat. 
  CLEAR  i_fieldcat. 
ENDFORM.                    "alv_field_column

FORM user_command USING r_ucomm LIKE sy-ucomm 
      rs_selfield TYPE slis_selfield.

CASE r_ucomm. 
    WHEN '&IC1'. 
      if rs_selfield-fieldname = 'LIFNR'. "供应商. 
          CLEAR gt_ebeln[]. 
          PERFORM data_reapp using rs_selfield-value. 
          perform data_outputb. 
      endif.

ENDCASE. 
ENDFORM.

form data_reapp using lifnr. 
  SELECT single name1 from lfa1 into wa_lname. 
  loop at gt_detail where lifnr = lifnr. 
    select single aedat from ekko into gt_ebeln-budat WHERE ebeln = gt_detail-ebeln. 
    gt_ebeln-lifnr = lifnr. 
    gt_ebeln-lname = wa_lname. 
    gt_ebeln-ebeln = gt_detail-ebeln. 
    gt_ebeln-dmbtr = gt_detail-dmbtr. 
    COLLECT gt_ebeln. 
    CLEAR: gt_detail, gt_ebeln. 
  ENDLOOP. 
  sort gt_ebeln by ebeln. 
endform. 
FORM data_outputb. 
  CLEAR: i_layout,i_events[],i_fieldcat[]. 
  PERFORM events_buildb. 
  PERFORM layout_buildb. 
  PERFORM fields_buildb. 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
    EXPORTING 
      i_callback_program = sy-repid 
      i_save             = '' 
      i_callback_user_command  = 'USER_COMMANDB' 
      is_layout          = i_layout 
      it_events          = i_events[] 
      it_fieldcat        = i_fieldcat[] 
    TABLES 
      t_outtab           = gt_ebeln.

ENDFORM.                    "data_output

FORM events_buildb . 
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 
    EXPORTING 
      i_list_type = 0 
    IMPORTING 
      et_events   = i_events[]. 
  READ TABLE i_events WITH KEY name = slis_ev_top_of_page. 
  IF sy-subrc = 0. 
    i_events-form = 'ALV_TOP_OF_PAGEB'. 
    MODIFY i_events INDEX sy-tabix. 
  ENDIF. 
ENDFORM.                    "events_build

*&---------------------------------------------------------------------* 
*&      Form  alv_top_of_page 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM alv_top_of_pageb. 
  DATA itoc(10) TYPE c. 
  DATA: lv_temp(60). 
  CLEAR: i_listcomm,i_listcomm[]. 
  i_listcomm-typ = 'H'. 
  i_listcomm-key = ''. 
  i_listcomm-info = '材料暂估表-供应商明细'. 
  APPEND i_listcomm. 
  CLEAR i_listcomm.

i_listcomm-typ = 'S'. 
  lv_temp = '编制单位:'. 
  APPEND i_listcomm. 
  CLEAR  i_listcomm.

i_listcomm-typ = 'S'. 
  CONCATENATE '供应商:' wa_lname  '. 查询时间: ' p_budat+0(4) '年' p_budat+4(2) '月' p_budat+6(2) '日' 
         INTO lv_temp. 
  i_listcomm-info = lv_temp. 
  APPEND i_listcomm. 
  CLEAR  i_listcomm.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
    EXPORTING 
      it_list_commentary = i_listcomm[]. 
ENDFORM.                    "alv_top_of_page

*&---------------------------------------------------------------------* 
*&      Form  layout_build 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM layout_buildb . 
  i_layout-zebra                = 'X'. 
  i_layout-detail_popup         = 'X'. 
  i_layout-no_vline             = ''. 
  i_layout-colwidth_optimize    = 'X'. 
  i_layout-detail_initial_lines = 'X'. 
  i_layout-detail_titlebar      = '采购凭证明细'. 
ENDFORM.                    " layout_build

* alv ?? 
FORM fields_buildb. 
  PERFORM alv_field_columnb USING 'LIFNR' '供应商'. 
  PERFORM alv_field_columnb USING 'LNAME' '供应名称'. 
  PERFORM alv_field_columnb USING 'EBELN' '采购凭证'. 
  PERFORM alv_field_columnb USING 'BUDAT' '订单创建时间'. 
  PERFORM alv_field_columnb USING 'DMBTR' '采购成交金额'. 
ENDFORM.                    "fields_build

*&---------------------------------------------------------------------* 
*&      Form  alv_field_column 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->VALUE(P_FIELDNAME)  text 
*      -->VALUE(P_SELTEXT_L)  text 
*----------------------------------------------------------------------* 
FORM alv_field_columnb USING value(p_fieldname) 
      value(p_seltext_l).

i_fieldcat-fieldname   = p_fieldname. 
  i_fieldcat-seltext_l   = p_seltext_l. 
  IF p_fieldname+0(2) CP 'DM'. 
    i_fieldcat-edit_mask   = '==Z001'. 
  ENDIF. 
  APPEND i_fieldcat. 
  CLEAR  i_fieldcat. 
ENDFORM.                    "alv_field_column

FORM user_commandb USING r_ucomm LIKE sy-ucomm 
      rs_selfield TYPE slis_selfield.

CASE r_ucomm. 
    WHEN '&IC1'. 
      if rs_selfield-fieldname = 'EBELN'. "供应商. 
          SET PARAMETER ID 'BES' FIELD rs_selfield-value. 
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN. 
      endif.

ENDCASE. 
ENDFORM.

如何建立应付暂估明细查询相关推荐

  1. SAP License:如何建立应付暂估明细查询

    应付暂估的明细查询还是很麻烦的一件事情,系统本身并不提供相关功能.其开发源代码如下: *-----------------------* * Report  ZRFI0950 * Created By ...

  2. 应付暂估及在途物资科目用法解析

    1.GR/IR 科目是什么? 首先我们来看一个最简单,最理想化的采购商品或原材料的情况. 采购100元的商品或者原材料,付给供应商100元现金. 会计分录: 借:商品/原材料 100     贷:现金 ...

  3. NetSuite应付暂估报表

    上海疫情防控升级到了足不出户的程度,看了很多视频.文字,大家给上海加油!在这种大事件中,无他法,仅能做到照顾好家人,不抱怨,积极文字,以身作则而已.身修而家园清净,守沪太平. 今天的题目是个古早的话题 ...

  4. SAP 应付暂估分科目核算

    在SAP 实施项目中,对于应付暂估科目通常会要求做一个区分,比如按服务,材料,或公司间等不同的需求进行区分.但在SAP 的标准功能中,WRX 的事务是不能区分的,那这里需要进行增强. 增强的方式有两种 ...

  5. oracle应付暂估怎么清理,暂估成本录入和处理详细说明以及实例

    暂估成本是指采购系统所购存货已入库,但发票未到或未报销时入库单上的估算成本:当已报销后,需进行成本处理.暂估入库成本处理分以下情况:月初回冲单到回冲单到补差一般常使用的方法是单到回冲.有个视频的教程会 ...

  6. 金蝶云·星空——应付暂估冲回模式下存货对账

    业务流程: 应付管理系统启用暂估应付冲回模式,入库单审核自动生成暂估应付单,到票暂估应付下推财务应付单,自动生成暂估红冲单,财务应付和暂估应付跨期差异生成入库调整单: 月末暂估月初一次冲回记账凭证: ...

  7. 六、鼎捷T100采购应付之应付暂估管理篇

    文章目录 一.暂估简介 1.1 暂估核算 1.2 暂估冲销 二.基础数据设置 2.1 基础数据简介 2.2 应付账务类型维护作业 2.3 应付账款类别依账套设置作业 2.4 发票类型维护作业 2.5 ...

  8. SAP FICO 应付暂估账龄表【报表界面展示、程序代码仅作参考,不保证一定可以运行】

    报表展示  源代码 ZFIR302 *&---------------------------------------------------------------------* *& ...

  9. GR/IR和暂估入库设计思路的简单对比

    GR/IR和暂估入库设计思路的简单对比[@more@] 从建立采购单->入库->发票校验实际上会有各种情况,下面简单描述下GR/IR科目的使用. GR/IR科目 相关Tcode:OBYP| ...

最新文章

  1. Linuxshell之高级Shell脚本编程-创建函数
  2. 【已解决】navigateTo:fail page “/pages/.../...“ is not found
  3. sudo spctl --master-disable_量大从优批发--阳离子聚丙烯酰胺--用于生活污水、
  4. R-Tree空间索引算法的研究历程和最新进展分析
  5. 并不对劲的noip2018
  6. CVE-2021-34527: Windows Print Spooler 蠕虫级远程代码执行漏洞
  7. 如何用JavaScript搭建神经网络?90分钟免费课程,上手可操作丨教程
  8. 导出数据报ORA-39002: 操作无效 ORA-39070: 无法打开日志文件。 ORA-39087: 目录名 DUMP_DIR 无效...
  9. Python基于 ImageAI 模块实践 idenprof数据集识别预测分析
  10. Makefile教程(这一篇足够从入门到放弃!!!)
  11. c语言 多核优化,【模型工具】一种对SWMM5的多核优化
  12. mysql--学生表
  13. 固态加装机械计算机不显示,win10不显示机械硬盘怎么办_win10加装机械硬盘不显示的解决方法...
  14. 如何用手机APP实现PLC远程监控
  15. 基于Quartz.net 的任务调度平台Weiz.TaskManager
  16. 2022 最值得学习的编程语言:Python 高人气,Ruby 薪水最优渥
  17. MATLAB反三角函数arcsecx, arccscx, arctanx, arccotx, arcsinx, arccosx绘图表示
  18. DEVONthink + Notion 搭建一个完美的知识管理体系
  19. 微信小程序getuserinfo废弃
  20. 大数据与海量数据的区别

热门文章

  1. 词汇量贫乏只会说yes、no?试试这些高级感替代词!
  2. 来吧,我教你画真正的流程图
  3. 一位互联网老兵分享,社会化运营案例解析(宜信内部干货)
  4. 【独家】搜狗黎志:创新和竞争是推动时代发展的原动力
  5. CUDA学习(三)之使用GPU进行两个数组相加
  6. 英特尔收购人工智能公司 Nervana,开发深度学习技术
  7. 用Xamarin 实现园友的 :Android浮动小球与开机自启动
  8. DIV+CSS实战(四)
  9. 朋友圈玩分身术!逼死用户的节奏?
  10. 二维模式(矩阵)匹配(Rabin-Karp算法推广到二维)[转]