SAP ABAP 程序 解读
关联表EKKO、EKPO、EKETMAKT,取出采购订单号、物料、物料描述、采购订单下单量、下单日期、交期、请购部门DATA:BEGINOFWA,EBELNTYPEEKK...
关联表EKKO、EKPO、EKET MAKT,取出采购订单号、物料、物料描述、采购订单下单量、下单日期、交期、请购部门
DATA:BEGIN OF WA,
EBELN TYPE EKKO-EBELN,
BEDAT TYPE EKKO-BEDAT,
LIFNR TYPE LFA1-LIFNR,
NAME1 TYPE LFA1-NAME1,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
MAKTX TYPE MAKT-MAKTX,
MENGE TYPE EKPO-MENGE,
MEINS TYPE EKPO-MEINS,
EINDT TYPE EKET-EINDT,
AFNAM TYPE EKPO-AFNAM,
YI type n, "已交货
WEI TYPE n, ''未交货
SHKZG type EKBE-SHKZG,''借贷标记
VGABE type EKBE-VGABE,
END OF WA.
DATA ITAB LIKE TABLE OF WA with header line.
SELECT
EKKO~BEDAT
EKKO~EBELN
EKPO~EBELP
EKPO~AFNAM
EKPO~MENGE
EKPO~MEINS
EKET~EINDT
MAKT~MATNR
MAKT~MAKTX
LFA1~LIFNR
LFA1~NAME1
EKBE~VGABE
EKBE~SHKZG ''借贷标记
INTO CORRESPONDING FIELDS OF TABLE ITAB
From LFA1 inner join EKKO on LFA1~LIFNR = EKKO~LIFNR
inner join EKET on EKET~EBELN = EKKO~EBELN
inner join EKPO on EKET~EBELN = EKPO~EBELN
AND EKET~EBELP = EKPO~EBELP
inner join MAKT on EKPO~TXZ01 = MAKT~MATNR
inner join EKBE on MAKT~MATNR = EKBE~MATNR
where LFA1~NAME1 in m1.
接下来 计算已收货量:根据采购订单号、项目号关联采购订单历史表EKBE,首先根据借贷标识EKBE-SHKZG将EKBE-MENGE(数量)赋予正负号,SHKZG为S时为正数,SHKZG为H时为负数。再将相同采购订单号、项目号、EKBE-VGABE=1的数量(EKBE-MENGE)汇总,计算出已收货量
请问这一步 接下来怎么做
如何把计算的收获量填入内表 并且根据相同的订单号 项目包 和EKBE-VGABE=1的数量汇总 求代码 分数不是问题
我这这么继续写的 可是发现 显示的结果不对 没法给已交货的那一列赋值 求 正确方法的代码
LOOP AT itab INTO wa.
If wa-SHKZG = 'S'.
wa-YI = wa-MENGE.
Else.
wa-YI = wa-MENGE * -1.
MODIFY itab from wa.
Endif. 展开
DATA:BEGIN OF WA,
EBELN TYPE EKKO-EBELN,
BEDAT TYPE EKKO-BEDAT,
LIFNR TYPE LFA1-LIFNR,
NAME1 TYPE LFA1-NAME1,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
MAKTX TYPE MAKT-MAKTX,
MENGE TYPE EKPO-MENGE,
MEINS TYPE EKPO-MEINS,
EINDT TYPE EKET-EINDT,
AFNAM TYPE EKPO-AFNAM,
YI type n, "已交货
WEI TYPE n, ''未交货
SHKZG type EKBE-SHKZG,''借贷标记
VGABE type EKBE-VGABE,
END OF WA.
DATA ITAB LIKE TABLE OF WA with header line.
SELECT
EKKO~BEDAT
EKKO~EBELN
EKPO~EBELP
EKPO~AFNAM
EKPO~MENGE
EKPO~MEINS
EKET~EINDT
MAKT~MATNR
MAKT~MAKTX
LFA1~LIFNR
LFA1~NAME1
EKBE~VGABE
EKBE~SHKZG ''借贷标记
INTO CORRESPONDING FIELDS OF TABLE ITAB
From LFA1 inner join EKKO on LFA1~LIFNR = EKKO~LIFNR
inner join EKET on EKET~EBELN = EKKO~EBELN
inner join EKPO on EKET~EBELN = EKPO~EBELN
AND EKET~EBELP = EKPO~EBELP
inner join MAKT on EKPO~TXZ01 = MAKT~MATNR
inner join EKBE on MAKT~MATNR = EKBE~MATNR
where LFA1~NAME1 in m1.
接下来 计算已收货量:根据采购订单号、项目号关联采购订单历史表EKBE,首先根据借贷标识EKBE-SHKZG将EKBE-MENGE(数量)赋予正负号,SHKZG为S时为正数,SHKZG为H时为负数。再将相同采购订单号、项目号、EKBE-VGABE=1的数量(EKBE-MENGE)汇总,计算出已收货量
请问这一步 接下来怎么做
如何把计算的收获量填入内表 并且根据相同的订单号 项目包 和EKBE-VGABE=1的数量汇总 求代码 分数不是问题
我这这么继续写的 可是发现 显示的结果不对 没法给已交货的那一列赋值 求 正确方法的代码
LOOP AT itab INTO wa.
If wa-SHKZG = 'S'.
wa-YI = wa-MENGE.
Else.
wa-YI = wa-MENGE * -1.
MODIFY itab from wa.
Endif. 展开
展开全部
虽然我不懂MM模块,但是你可以在LOOP里面写个AT END OF XXX来完成这个动作,希望我的回答对你有所帮助
LOOP AT itab INTO wa.
If wa-SHKZG = 'S'.
wa-YI = wa-MENGE.
Else.
wa-YI = wa-MENGE * -1.
Endif.
MODIFY itab from wa.
clear : wa.
endloop.
因为不懂模块,所以我只能在程序方面上给你解答,模块方面请教别人吧
LOOP AT itab INTO wa.
If wa-SHKZG = 'S'.
wa-YI = wa-MENGE.
Else.
wa-YI = wa-MENGE * -1.
Endif.
MODIFY itab from wa.
clear : wa.
endloop.
因为不懂模块,所以我只能在程序方面上给你解答,模块方面请教别人吧
更多追问追答
追问
测试居然成功了 这个循环我写过 当时有错误 就想别的办法了 我好像就少写了个clear wa, 哎 懂得似是而非的 不过还是非常感谢
追答
你不是因为少写了CLEAR WA,而是你吧MODIFY ITAB写在了ELSE里面,上面IF里的改完之后因为没有MODIFY ,所以他就没法修改,你没发现,我把ELSE里的MODIFY 拿到ENDIF下面了吗?
迈杰
2024-11-30 广告
2024-11-30 广告
RNA-seq数据分析是转录组研究的核心,包括数据预处理、序列比对、定量分析、差异表达分析、功能注释和可视化等步骤。数据预处理主要是质量控制和去除低质量序列。序列比对使用HISAT2、STAR等工具将reads比对到参考基因组。定量分析评估...
点击进入详情页
本回答由迈杰提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询