LOOP AT gt_sum01.
IF gt_sum01-bewtp = 'E' AND gt_sum01-shkzg = 'S'.
l_chk01 = l_chk01 + gt_sum01-dmbtr.
ELSEIF gt_sum01-bewtp = 'E' AND gt_sum01-shkzg = 'H'.
l_chk01 = l_chk01 - gt_sum01-dmbtr.
ENDIF.
IF gt_sum01-bewtp = 'Q' AND gt_sum01-shkzg = 'S'.
l_chk02 = l_chk02 + gt_sum01-dmbtr.
ELSEIF gt_sum01-bewtp = 'Q' AND gt_sum01-shkzg = 'H'.
l_chk02 = l_chk02 - gt_sum01-dmbtr.
ENDIF.
AT END OF ebeln.
IF l_chk01 < l_chk02.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln.
gt_list = gt_sum01.
gt_list-grir = 'IR'.
APPEND gt_list.
CLEAR gt_list.
ELSEIF l_chk01 EQ l_chk02.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln.
gt_sum02 = gt_sum01.
APPEND gt_sum02.
CLEAR gt_sum02.
ELSE.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln.
gt_list = gt_sum01.
gt_list-grir = 'GR'.
APPEND gt_list.
CLEAR gt_list.
ENDIF.
CLEAR : l_chk01, l_chk02.
ENDAT.
AT LAST.
IF gt_list[] IS INITIAL AND gt_sum02[] IS NOT INITIAL.
MESSAGE i000 WITH 'GR/IR의 값이 같습니다.'.
ENDIF.
ENDAT.
ENDLOOP.
po번호인 EBELN을 기준으로 GR,IR를 체크 출력해주는 로직인데
여기에 아이템번호인 EBELP를 추가해서
PO번호중에 아이템번호값안에서 GR/IR를 체크하는걸로 수정해야 합니다..
예를 들면
PO번호 아이템번호
1000 10
1000 10
1001 20
1001 20
1004 20
1004 20
1004 30
1004 30
이렇게 되어있다면 기준값을 EBELP로 해서 at end를 걸경우 1001과 1004일부가 겹쳐서 체크를 할테니..
po번호로 분류를 먼저 하고 그안에서 아이템 번호를 기준으로 체크를 해야하는데..
로직이 도무지 생각이 안나네요.. 한 3시간 고민한거 같습니다.
조언좀 부탁드리겠습니다.
동일한 PO번호 및 아이템번호가 여러개 있는 경우,
동일한 PO번호 및 아이템번호에 대해 한번만 GR,IR 체크하시려는거 맞나요?
다른 효율적인 방법이 더 있을지 모르겠지만,
두개 필드를 사용해서 AT END 또는 AT FIRST와 같은 효과를 보려면
아래와 같이 AT END 대신 임시변수를 사용하는 방법도 괜찮지 않을까 싶습니다.
gt_sum01이 ebeln, ebelp sort되있다는 전제로 했습니다.
-------------------------------------------------------------
clear: t_ebeln, t_ebelp. "추가
LOOP AT gt_sum01.
.....
.....
IF t_ebeln NE gt_sum01-ebeln AND
t_ebelp NE gt_sum01-ebelp. "추가 (AT END 대체)
IF l_chk01 < l_chk02.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln
ebelp = gt_sum01-ebelp. "추가
gt_list = gt_sum01.
gt_list-grir = 'IR'.
APPEND gt_list.
CLEAR gt_list.
ELSEIF l_chk01 EQ l_chk02.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln
ebelp = gt_sum01-ebelp. "추가
gt_sum02 = gt_sum01.
APPEND gt_sum02.
CLEAR gt_sum02.
ELSE.
READ TABLE gt_sum01 WITH KEY ebeln = gt_sum01-ebeln
ebelp = gt_sum01-ebelp. "추가
gt_list = gt_sum01.
gt_list-grir = 'GR'.
APPEND gt_list.
CLEAR gt_list.
ENDIF.
CLEAR : l_chk01, l_chk02.
ENDIF "추가 (ENDAT 대체)
t_ebeln = gt_sum01-ebeln. "추가
t_ebelp = gt_sum01-ebelp. "추가
AT LAST.
.....
.....
ENDLOOP.
-------------------------------------------------------------