news 2026/4/23 15:43:18

读取工艺路线唯一工序的代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
读取工艺路线唯一工序的代码

1、DB02中SQL代码,下面代码是读取直接人工数字最大的工序

SELECT
m.WERKS AS plant,
m.MATNR AS material,
m.PLNNR AS route_no,
a.PLNKN AS operation,
o.VGW01 AS direct_labor
FROM
MAPL m
INNER JOIN PLKO k ON m.PLNNR = k.PLNNR AND m.PLNAL = k.PLNAL
INNER JOIN PLAS a ON k.PLNNR = a.PLNNR AND k.PLNAL = a.PLNAL
INNER JOIN PLPO o ON a.PLNNR = o.PLNNR AND a.PLNKN = o.PLNKN
WHERE
m.MATNR = '8014217002'
AND m.WERKS = '8201'
AND k.PLNTY = 'N'
AND m.LOEKZ = ''
AND k.LOEKZ = ''
AND a.LOEKZ = ''
AND o.LOEKZ = ''
AND o.VGW01 = (
SELECT MAX(o2.VGW01)
FROM MAPL m2
INNER JOIN PLKO k2 ON m2.PLNNR = k2.PLNNR AND m2.PLNAL = k2.PLNAL
INNER JOIN PLAS a2 ON k2.PLNNR = a2.PLNNR AND k2.PLNAL = a2.PLNAL
INNER JOIN PLPO o2 ON a2.PLNNR = o2.PLNNR AND a2.PLNKN = o2.PLNKN
WHERE m2.MATNR = '801421002'
AND m2.WERKS = '8201'
AND k2.PLNTY = 'N'
AND m2.LOEKZ = ''
AND k2.LOEKZ = ''
AND a2.LOEKZ = ''
AND o2.LOEKZ = ''
)
ORDER BY
a.PLNKN;

2、对应的ABAP代码段:

方法1:

SELECT m~werks,

m~matnr,

o~vgw01,

o~zcode “增强字段,用于存储该工序的人数

INTO TABLE @lt_ops

FROM mapl AS m

INNER JOIN plko AS k

ON m~plnnr = k~plnnr

AND m~plnal = k~plnal

AND k~werks = m~werks

INNER JOIN plas AS a

ON k~plnnr = a~plnnr

AND k~plnal = a~plnal

AND k~plnty = a~plnty

INNER JOIN plpo AS o

ON a~plnnr = o~plnnr

AND a~plnkn = o~plnkn

AND a~plnty = o~plnty

FOR ALL ENTRIES IN @lt_matnr_werks

WHERE m~werks = @lt_matnr_werks-werks

AND m~matnr = @lt_matnr_werks-matnr

AND k~plnty = 'N'

AND m~loekz = ''

AND m~plnal = ( SELECT MAX( m2~plnal )

FROM mapl AS m2

WHERE m2~werks = m~werks

AND m2~matnr = m~matnr

AND m2~plnty = m~plnty

AND m2~plnnr = m~plnnr

AND m2~loekz = '' )

AND k~delkz = ''

AND a~loekz = ''

AND o~loekz = ''.

方法2:

FORM frm_get_sta_lab .
DATA: BEGIN OF ls_matnr_werks,
werks TYPE werks_d,
matnr TYPE matnr,
END OF ls_matnr_werks,
lt_matnr_werks LIKE TABLE OF ls_matnr_werks.

DATA: BEGIN OF ls_max_vgw01,
werks TYPE werks_d,
matnr TYPE matnr,
max_vgw01 TYPE plpo-vgw01,
zcode TYPE plpo-zcode,
END OF ls_max_vgw01,
lt_max_vgw01 LIKE TABLE OF ls_max_vgw01.

FIELD-SYMBOLS: <fs_out> LIKE LINE OF gt_out.

CHECK gt_out[] IS NOT INITIAL.

LOOP AT gt_out ASSIGNING <fs_out>.
ls_matnr_werks-werks = <fs_out>-werks.
ls_matnr_werks-matnr = <fs_out>-plnbez.
COLLECT ls_matnr_werks INTO lt_matnr_werks.
ENDLOOP.

SORT lt_matnr_werks BY werks matnr.

IF lt_matnr_werks[] IS NOT INITIAL.

DATA: BEGIN OF ls_op,
werks TYPE werks_d,
matnr TYPE matnr,
vgw01 TYPE plpo-vgw01,
zcode TYPE plpo-zcode,
END OF ls_op,
lt_ops LIKE TABLE OF ls_op.

SELECT m~werks,
m~matnr,
o~vgw01,
o~zcode
INTO TABLE @lt_ops
FROM mapl AS m
INNER JOIN plko AS k
ON m~plnnr = k~plnnr
AND m~plnal = k~plnal
AND k~werks = m~werks
INNER JOIN plas AS a
ON k~plnnr = a~plnnr
AND k~plnal = a~plnal
AND k~plnty = a~plnty
INNER JOIN plpo AS o
ON a~plnnr = o~plnnr
AND a~plnkn = o~plnkn
AND a~plnty = o~plnty
FOR ALL ENTRIES IN @lt_matnr_werks
WHERE m~werks = @lt_matnr_werks-werks
AND m~matnr = @lt_matnr_werks-matnr
AND k~plnty = 'N'
AND m~loekz = ''
AND k~delkz = ''
AND a~loekz = ''
AND o~loekz = ''.



* SELECT m~werks,
* m~matnr,
* o~vgw01,
* o~zcode
* INTO TABLE @lt_ops
* FROM mapl AS m
* INNER JOIN plko AS k
* ON m~plnnr = k~plnnr
* AND m~plnal = k~plnal
* AND k~werks = m~werks
* INNER JOIN plas AS a
* ON k~plnnr = a~plnnr
* AND k~plnal = a~plnal
* AND k~plnty = a~plnty
* INNER JOIN plpo AS o
* ON a~plnnr = o~plnnr
* AND a~plnkn = o~plnkn
* AND a~plnty = o~plnty
* FOR ALL ENTRIES IN @lt_matnr_werks
* WHERE m~werks = @lt_matnr_werks-werks
* AND m~matnr = @lt_matnr_werks-matnr
* AND k~plnty = 'N'
* AND m~loekz = ''
* AND m~plnal = ( SELECT MAX( m2~plnal )
* FROM mapl AS m2
* WHERE m2~werks = m~werks
* AND m2~matnr = m~matnr
** AND m2~plnty = m~plnty
** AND m2~plnnr = m~plnnr
* AND m2~loekz = '' )
* AND k~delkz = ''
* AND a~loekz = ''
* AND o~loekz = ''.

IF lt_ops IS NOT INITIAL.
SORT lt_ops BY werks matnr.
LOOP AT lt_ops INTO ls_op GROUP BY ( werks = ls_op-werks matnr = ls_op-matnr ) ASSIGNING FIELD-SYMBOL(<grp>).
DATA: lv_max TYPE plpo-vgw01,
lv_zc TYPE plpo-zcode.
CLEAR: lv_max, lv_zc.
LOOP AT GROUP <grp> ASSIGNING FIELD-SYMBOL(<row>).
IF <row>-vgw01 >= lv_max.
lv_max = <row>-vgw01.
lv_zc = <row>-zcode.
ENDIF.
ENDLOOP.
CLEAR ls_max_vgw01.
ls_max_vgw01-werks = <grp>-werks.
ls_max_vgw01-matnr = <grp>-matnr.
ls_max_vgw01-max_vgw01 = lv_max.
ls_max_vgw01-zcode = lv_zc.
APPEND ls_max_vgw01 TO lt_max_vgw01.
ENDLOOP.
ENDIF.
ENDIF.

CHECK lt_max_vgw01 IS NOT INITIAL.

SORT lt_max_vgw01 BY werks matnr.

LOOP AT gt_out ASSIGNING <fs_out>.
CLEAR: <fs_out>-zbzrygs.

READ TABLE lt_max_vgw01 INTO ls_max_vgw01
WITH KEY werks = <fs_out>-werks
matnr = <fs_out>-plnbez
BINARY SEARCH.

IF sy-subrc = 0.
IF <fs_out>-gamng IS NOT INITIAL
AND ls_max_vgw01-max_vgw01 IS NOT INITIAL
AND ls_max_vgw01-max_vgw01 <> 0.
IF <fs_out>-mtart = 'Z201' or <fs_out>-mtart = 'Z101'.

<fs_out>-zbzrygs = ls_max_vgw01-max_vgw01 * ls_max_vgw01-zcode * <fs_out>-gamng.

<fs_out>-ZMISM01 = ls_max_vgw01-max_vgw01 * <fs_out>-gamng.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.

ENDFORM.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 1:26:36

上市公司数据风险暴露变量数据(2010-2024)

数据简介CNPaperData数据风险暴露变量作为量化企业数据安全管理水平的核心指标&#xff0c;是衡量上市公司在数字化转型进程中数据治理能力与风险防控实力的关键标尺。随着《中华人民共和国数据安全法》《个人信息保护法》等法规的密集出台&#xff0c;数据风险已成为影响企业持…

作者头像 李华
网站建设 2026/4/23 12:58:24

springboot小区蔬菜水果商城系统设计开发实现

背景分析 随着城市化进程加快&#xff0c;居民对生鲜食品的需求日益增长&#xff0c;但传统农贸市场或超市购物存在时间成本高、商品质量参差不齐等问题。社区化、便捷化的生鲜电商模式成为解决痛点的趋势&#xff0c;尤其在疫情后无接触配送需求激增的背景下。SpringBoot技术…

作者头像 李华
网站建设 2026/4/23 11:29:00

2026年1月房产中介客户管理系统哪一款好

在房产中介行业数字化转型加速的当下&#xff0c;一款好用的房产中介客户管理系统能显著提升团队效率、降低运营成本。无论是夫妻店、中小型团队还是连锁机构&#xff0c;都需依托系统实现房客源精细化管理、业务流程规范化。本文结合市场主流产品&#xff0c;从功能覆盖、操作…

作者头像 李华
网站建设 2026/4/23 11:29:01

矿山“数字皮带秤”:AI纠偏让输送损耗<0.2%

皮带输送是矿山物料转运的核心环节&#xff0c;输送精度与皮带跑偏控制直接决定物料损耗与生产效率。传统矿山皮带秤依赖人工校准&#xff0c;无法实时识别皮带跑偏、物料偏载等问题&#xff0c;不仅计量误差大&#xff0c;还易因跑偏导致物料洒落、皮带磨损&#xff0c;输送损…

作者头像 李华