一、业务情况
先分别进行两次取数,当gty_output-meins的值与lt_meins中的msehi的值相等时,取出msehl的值
二、定义
TYPES: BEGIN OF ty_output,
werks TYPE marc-werks, "工厂
matnr TYPE marc-matnr, "任务号
maktx TYPE makt-maktx, "物料描述
zpm TYPE mara-zpm, "品名
zggxh TYPE mara-zggxh, "规格
meins TYPE mara-meins, "基本计量单位
matkl TYPE mara-matkl, "物料组
mtpos_mara TYPE mara-mtpos_mara, "普通项目类别
disgr TYPE marc-disgr, "MRP组
mtvfp TYPE marc-mtvfp, "可用性检查
vkorg_ana TYPE vbap-vkorg_ana, "销售组织
vtweg_ana TYPE vbap-vtweg_ana, "分销渠道
spart TYPE mara-spart, "产品组
vbeln TYPE vbap-vbeln, "销售订单
bstkd_ana TYPE vbap-bstkd_ana, "合同号
vstel TYPE vbap-vstel, "发货工厂
tragr TYPE mara-tragr, "运输组
ersda TYPE mara-ersda, "创建日期
* msehi TYPE t006a-msehi, "单位
* msehl TYPE t006a-msehl, "单位文本
box TYPE c LENGTH 1,
END OF ty_output.
TYPES: BEGIN OF ly_output,
werks TYPE marc-werks, "工厂
matnr TYPE marc-matnr, "任务号
maktx TYPE makt-maktx, "物料描述
zpm TYPE mara-zpm, "品名
zggxh TYPE mara-zggxh, "规格
meins TYPE mara-meins, "基本计量单位
matkl TYPE mara-matkl, "物料组
mtpos_mara TYPE mara-mtpos_mara, "普通项目类别
disgr TYPE marc-disgr, "MRP组
mtvfp TYPE marc-mtvfp, "可用性检查
vkorg_ana TYPE vbap-vkorg_ana, "销售组织
vtweg_ana TYPE vbap-vtweg_ana, "分销渠道
spart TYPE mara-spart, "产品组
vbeln TYPE vbap-vbeln, "销售订单
bstkd_ana TYPE vbap-bstkd_ana, "合同号
vstel TYPE vbap-vstel, "发货工厂
tragr TYPE mara-tragr, "运输组
ersda TYPE mara-ersda, "创建日期
msehi TYPE t006a-msehi, "单位
msehl TYPE t006a-msehl, "单位文本
box TYPE c LENGTH 1,
END OF ly_output.
TYPES: BEGIN OF lty_meins,
msehi TYPE t006a-msehi,
msehl TYPE t006a-msehl,
END OF lty_meins.
DATA lt_meins TYPE TABLE OF lty_meins.
DATA ls_meins TYPE lty_meins.
DATA gty_output TYPE TABLE OF ty_output.
DATA gsy_output TYPE ty_output.
DATA gt_output TYPE TABLE OF ly_output.
DATA gs_output TYPE ly_output.
三、取数
SELECT
marc~werks,
marc~matnr,
makt~maktx,
mara~zpm,
mara~zggxh,
mara~meins,
mara~matkl,
mara~mtpos_mara,
marc~disgr,
marc~mtvfp,
vbap~vkorg_ana,
vbap~vtweg_ana,
mara~spart,
vbap~vbeln,
vbap~bstkd_ana,
vbap~vstel,
mara~tragr,
mara~ersda
FROM marc
LEFT JOIN makt ON marc~matnr = makt~matnr
LEFT JOIN mara ON marc~matnr = mara~matnr
LEFT JOIN vbap ON marc~matnr = vbap~matnr
WHERE marc~pstat NOT LIKE '%V%'
AND marc~lvorm <> 'X' "工厂级已删除物料标识
AND mara~spart IN (10,30)
AND vbap~vbeln IS NOT INITIAL
AND marc~werks = @p_werks
AND marc~matnr IN @s_matnr
AND vbap~vbeln IN @s_vbeln
AND mara~ersda IN @s_ersda
INTO CORRESPONDING FIELDS OF TABLE @gty_output.
IF gty_output IS NOT INITIAL.
SELECT
t006a~msehi,
t006a~msehl
FROM t006a
INTO CORRESPONDING FIELDS OF TABLE @lt_meins
FOR ALL ENTRIES IN @gty_output
WHERE t006a~spras = 1
AND t006a~msehi = @gty_output-meins.
SORT lt_meins BY msehi.
ENDIF.
LOOP AT gty_output INTO gsy_output.
CLEAR gs_output.
MOVE-CORRESPONDING gsy_output TO gs_output.
READ TABLE lt_meins INTO ls_meins
WITH KEY msehi = gsy_output-meins
BINARY SEARCH
.
IF sy-subrc = 0."读取到
gs_output-msehl = ls_meins-msehl.
ELSE.
CONTINUE."终止当前循环 并执行下一次循环
ENDIF.
APPEND gs_output TO gt_output.
ENDLOOP.