赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 1630|回复: 1

[ABAP问题] ABAP程序如何处理

[复制链接]
发表于 2017-2-21 14:07:11 | 显示全部楼层 |阅读模式
10赛跑币
各位好:
     我想做两个内表连接,连接为第三个。即通过结算的发票清单 vbrp vbrk fplt vbkd(发票类型为ZCF2)找到预估的发票清单
vbrp vbrk fplt vbkd(发票类型为ZCF1),条件为二者的合同号(BSTKD_M)和汇率(KURRF)相同,然后两个内表找到对应
关系并连接起来。
第三个内表类型定义为:
第二步 定义内表用于存储和展示数据”
TYPES :begin of ty_table,
   est_VBELN  type vbrp-vbeln,"预估发票号
   est_POSNR  type vbrp-POSNR,"预估发票行项目
   est_NETWR  type vbrp-NETWR,"预估发票发票金额
   est_FPLNR  type vbrp-FPLNR,"预估发票计划行
   est_FPLTR  type vbrp-FPLTR,"预估发票计划行项目
   est_VKORG  type vbrk-VKORG,"预估发票公司代码
   est_FKART  type vbrk-FKART,"预估发票开票类型
   est_WAERK  type vbrk-WAERK,"预估发票凭证币种
   est_FKDAT  type vbrk-fkdat,"预估发票计划开票日期
   est_FKSTO  type vbrk-FKSTO,"预估发票是否被冲销
   est_KURRF type fplt-KURRF,"预估发票system invoice id
   est_BSTKD_M type vbkd-BSTKD_M,"预估发票上传合同号码
   set_VBELN  type vbrp-vbeln,"结算发票号
   set_POSNR  type vbrp-POSNR,"结算发票行项目
   set_NETWR  type vbrp-NETWR,"结算发票发票金额
   set_FPLNR  type vbrp-FPLNR,"结算发票计划行
   set_FPLTR  type vbrp-FPLTR,"结算发票计划行项目
   set_VKORG  type vbrk-VKORG,"结算发票公司代码
   set_FKART  type vbrk-FKART,"结算发票开票类型
   set_WAERK  type vbrk-WAERK,"结算发票凭证币种
   set_FKDAT  type vbrk-fkdat,"结算发票计划开票日期
   set_FKSTO  type vbrk-FKSTO,"结算发票是否被冲销
   set_KURRF type fplt-KURRF,"结算发票system invoice id
   set_BSTKD_M type vbkd-BSTKD_M,"结算发票上传合同号码

  end of ty_table.

DATA: GT_TABLE TYPE STANDARD TABLE OF ty_table WITH HEADER LINE,
      GS_TABLE TYPE ty_table.


第一个内部数据定义为:
"定义结算发票结构
  types:begin of gt_table1 ,
   set_VBELN  type vbrp-vbeln,"结算发票号
   set_POSNR  type vbrp-POSNR,"结算发票行项目
   set_NETWR  type vbrp-NETWR,"结算发票发票金额
   set_FPLNR  type vbrp-FPLNR,"结算发票计划行
   set_FPLTR  type vbrp-FPLTR,"结算发票计划行项目
   set_VKORG  type vbrk-VKORG,"结算发票公司代码
   set_FKART  type vbrk-FKART,"结算发票开票类型
   set_WAERK  type vbrk-WAERK,"结算发票凭证币种
   set_FKDAT  type vbrk-fkdat,"结算发票计划开票日期
   set_FKSTO  type vbrk-FKSTO,"结算发票是否被冲销
   set_KURRF type fplt-KURRF,"结算发票system invoice id
   set_BSTKD_M type vbkd-BSTKD_M,"结算发票上传合同号码

  end of gt_table1.

  "定义结算发票内表以及工作区域
  data set_gt_table  type table of gt_table1 .
  data sest_gt_table type gt_table1 .
第二个内部定义为:
"定义预估发票结构
   types:begin of gt_table2 ,
   est_VBELN  type vbrp-vbeln,"预估发票号
   est_POSNR  type vbrp-POSNR,"预估发票行项目
   est_NETWR  type vbrp-NETWR,"预估发票发票金额
   est_FPLNR  type vbrp-FPLNR,"预估发票计划行
   est_FPLTR  type vbrp-FPLTR,"预估发票计划行项目
   est_VKORG  type vbrk-VKORG,"预估发票公司代码
   est_FKART  type vbrk-FKART,"预估发票开票类型
   est_WAERK  type vbrk-WAERK,"预估发票凭证币种
   est_FKDAT  type vbrk-fkdat,"预估发票计划开票日期
   est_FKSTO  type vbrk-FKSTO,"预估发票是否被冲销
   est_KURRF type fplt-KURRF,"预估发票system invoice id
   est_BSTKD_M type vbkd-BSTKD_M,"预估发票上传合同号码

  end of gt_table2.

  "定义预估发票内表以及工作区域
  data est_gt_table type table of gt_table2.
  data ests_gt_table type gt_table2.
取数逻辑为:
select
  vbrp~vbeln
  vbrp~POSNR
  vbrp~NETWR
  vbrp~FPLNR
  vbrp~FPLTR
  vbrk~VKORG
  vbrk~FKART
  vbrk~WAERK
  vbrk~fkdat
  vbrk~FKSTO
  fplt~KURRF
  vbkd~BSTKD_M
   into  table set_gt_table
from vbrp INNER JOIN vbrk
                      on vbrp~vbeln = vbrk~vbeln
           INNER JOIN fplt
                      on vbrp~FPLNR = fplt~FPLNR AND vbrp~FPLTR = fplt~FPLTR
           INNER JOIN vbkd
                      on fplt~fplnr = vbkd~fplnr
  where fkart = 'ZCF2'.
select
  vbrp~vbeln
  vbrp~POSNR
  vbrp~NETWR
  vbrp~FPLNR
  vbrp~FPLTR
  vbrk~VKORG
  vbrk~FKART
  vbrk~WAERK
  vbrk~fkdat
  vbrk~FKSTO
  fplt~KURRF
  vbkd~BSTKD_M
   into  table est_gt_table
from vbrp INNER JOIN vbrk
                      on vbrp~vbeln = vbrk~vbeln
           INNER JOIN fplt
                      on vbrp~FPLNR = fplt~FPLNR AND vbrp~FPLTR = fplt~FPLTR
           INNER JOIN vbkd
                      on fplt~fplnr = vbkd~fplnr
  where fkart = 'ZCF1'.
loop at set_gt_table into sest_gt_table.
    move-corresponding sest_gt_table to gt_table.
    read table est_gt_table into ests_gt_table with  key est_KURRF = gt_table-est_KURRF
                                                              est_BSTKD_M = gt_table-est_BSTKD_M.
    if sy-subrc = 0.
   gt_table-est_VBELN = ests_gt_table-est_vbeln.
   gt_table-est_POSNR = ests_gt_table-est_POSNR.
   gt_table-est_NETWR = ests_gt_table-est_NETWR.
   gt_table-est_FPLNR = ests_gt_table-est_FPLNR.
   gt_table-est_FPLTR = ests_gt_table-est_FPLTR.
   gt_table-est_VKORG = ests_gt_table-est_VKORG.
   gt_table-est_FKART = ests_gt_table-est_FKART.
   gt_table-est_WAERK = ests_gt_table-est_WAERK.
   gt_table-est_fkdat = ests_gt_table-est_fkdat.
   gt_table-est_FKSTO = ests_gt_table-est_FKSTO.
   gt_table-est_KURRF = ests_gt_table-est_KURRF.
   gt_table-est_BSTKD_M = ests_gt_table-est_BSTKD_M.
    ENDIF.
append gt_table to  gt_table[].
clear gt_table.
endloop.
ENDFORM.

FORM EDIT_DATA_FORM.          "HANDLE ORIGINAL DATA.

ENDFORM.


现在取数逻辑有问题,请问该如何更改。


代码.txt

10.3 KB, 下载次数: 0, 下载积分: 赛跑币 -1

ABAP代码

最近访客

  • wx_49655
    2023-11-03
  • shuffle1
    2021-02-24
  • Hint
    2020-06-29




上一篇:MFN1 无法把实际作业价格重估到订单 MFN1
下一篇:MM01 物料主数据的销售视图里没有装运数据【运输组,装载组】
本楼点评(0) 收起
 楼主| 发表于 2017-2-28 16:47:29 | 显示全部楼层
已解决
本楼点评(0) 收起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-4-20 16:28 , Processed in 0.177008 second(s), 36 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表