1. 初始化合并标志

abap
 
kopf_gefunden = space.  " 初始化为未找到可合并的交货单
abbrechen     = space.
clear gefunden_vbeln.
  • kopf_gefunden 初始值为 space(未找到可合并的交货单)。


2. 查找可合并的交货单抬头

程序遍历临时表 zlikp(存储待生成的交货单抬头),检查当前行项目是否可合并到现有交货单:

abap
 
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.
  • 合并条件

    1. 抬头字段匹配:通过 compare_header_and_set_lgnum 检查关键字段(如客户 kunnr、销售组织 vkorg 等)是否一致。

    2. 计划协议兼容:检查计划协议是否允许合并(deli_extend_check_schedule_agr)。

    3. 合作伙伴一致:通过函数 SHP_CHECK_PARTNER_COMBINATION 验证装运伙伴数据是否完全相同。

  • 若所有条件满足,设置 kopf_gefunden = charx(找到可合并交货单)。

 

    调用BAPI前,设置参数后,增加具体的差异消息VL  033
    SET PARAMETER ID 'LESHP_SPLIT_ANALYSIS' FIELD 'X'. 

 

posted on 2025-07-15 11:49  夜橙  阅读(52)  评论(0)    收藏  举报