

1. 初始化合并标志
kopf_gefunden = space. " 初始化为未找到可合并的交货单
abbrechen = space.
clear gefunden_vbeln.
-
kopf_gefunden初始值为space(未找到可合并的交货单)。
2. 查找可合并的交货单抬头
程序遍历临时表 zlikp(存储待生成的交货单抬头),检查当前行项目是否可合并到现有交货单:
read table zlikp with key kunnr = likp-kunnr vkorg = likp-vkorg binary search.
loop at zlikp from zlikp_tabix.
...
perform compare_header_and_set_lgnum(...) " 比较交货单抬头字段
if header_identical eq charx. " 抬头字段完全匹配
...
perform deli_extend_check_schedule_agr(...) " 检查计划协议
if lf_subrc initial. " 计划协议允许合并
...
" 检查合作伙伴是否一致
call function 'SHP_CHECK_PARTNER_COMBINATION'
if lf_partners_identical eq charx. " 合作伙伴一致
gefunden_vbeln = temp_vbeln. " 记录找到的交货单号
kopf_gefunden = charx. " 标记找到可合并抬头
kopf_tabix = zlikp_tabix. " 记录索引位置
exit. " 退出循环
endif.
endif.
endif.
endloop.
-
合并条件:
-
抬头字段匹配:通过
compare_header_and_set_lgnum检查关键字段(如客户kunnr、销售组织vkorg等)是否一致。 -
计划协议兼容:检查计划协议是否允许合并(
deli_extend_check_schedule_agr)。 -
合作伙伴一致:通过函数
SHP_CHECK_PARTNER_COMBINATION验证装运伙伴数据是否完全相同。
-
-
若所有条件满足,设置
kopf_gefunden = charx(找到可合并交货单)。
调用BAPI前,设置参数后,增加具体的差异消息VL 033
SET PARAMETER ID 'LESHP_SPLIT_ANALYSIS' FIELD 'X'.

浙公网安备 33010602011771号