IF_EX_ME_PROCESS_PO_CUST~PROCESS_SCHEDULE
DATA: ls_poitem TYPE mepoitem.
DATA: ls_jhh TYPE meposchedule.
DATA: ls_poitemc TYPE REF TO if_purchase_order_item_mm.
DATA: lto_jhh TYPE purchase_order_schedules.
DATA: jhh_obj TYPE purchase_order_schedule.
DATA: ls_jhh2 TYPE meposchedule.
DATA: is_persistent TYPE mmpur_bool.
DATA: lt_eket TYPE TABLE OF eket.
DATA: ls_eket TYPE eket.
DATA: lv_flag.
***计划行拆分行时,新
行交期不用带出PR原始交期,参考被拆分行交期 20230608-yuchengyi-begin
IF is_persistent = ‘’ AND ( sy-tcode = ‘ME23N’ OR sy-tcode = ‘ME22N’). "新增计划行
REFRESH lt_eket.
SELECT * INTO TABLE lt_eket FROM eket WHERE ebeln = ls_jhh-ebeln AND ebelp = ls_jhh-ebelp.
IF sy-subrc = 0.
CALL METHOD ls_poitemc->get_schedules
RECEIVING
re_schedules = lto_jhh.
CLEAR lv_flag.
LOOP AT lto_jhh INTO jhh_obj.
CLEAR:ls_jhh2.
ls_jhh2 = jhh_obj-schedule->get_data( ).
IF ls_jhh2-etenr <> ls_jhh-etenr. "待保存eket缓存表循环行 <> 当前新增计划行
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_jhh2-ebeln
ebelp = ls_jhh2-ebelp
etenr = ls_jhh2-etenr.
IF sy-subrc = 0. "待保存eket缓存表循环行在eket表存在,说明为当前已存在计划行
IF ls_jhh2-menge + ls_jhh-menge = ls_eket-menge. "待保存eket缓存表循环行数量 + 当前新增计划行数量 = 当前eket表对应计划行的数量
ls_jhh-eindt = ls_eket-eindt.
ls_jhh-eeind = ls_eket-eindt.
im_schedule->set_data( ls_jhh ).
lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_flag = ''. "放宽条件,不用数量相等
LOOP AT lto_jhh INTO jhh_obj.
CLEAR:ls_jhh2.
ls_jhh2 = jhh_obj-schedule->get_data( ).
IF ls_jhh2-etenr <> ls_jhh-etenr. "待保存eket缓存表循环行 <> 当前新增计划行
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_jhh2-ebeln
ebelp = ls_jhh2-ebelp
etenr = ls_jhh2-etenr.
IF sy-subrc = 0. "待保存eket缓存表循环行在eket表存在,说明为当前已存在计划行
IF ls_jhh2-menge <> ls_eket-menge. "待保存eket缓存表循环行数量 <> 当前eket表对应计划行的数量 说明次行被拆分
ls_jhh-eindt = ls_eket-eindt.
ls_jhh-eeind = ls_eket-eindt.
im_schedule->set_data( ls_jhh ).
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
***计划行拆分行时,新行交期不用带出PR原始交期,参考被拆分行交期 20230608-yuchengyi-begin