Sorry,
hab Mist gebaut. Eigentlich wollte ich sagen:
"Alle Belege (FI und SD) der Kreditoren
IF P_KRED = 'X' AND SO_BELNR IS INITIAL AND SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM VBRK
INTO CORRESPONDING FIELDS OF TABLE IT_H_VBRK
WHERE VBRK~VBELN IN SO_VBELN.
SELECT *
FROM LFA1
INNER JOIN BSIK ON LFA1~LIFNR = BSIK~LIFNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE LFA1~LIFNR IN SO_LIFNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT
AND BELNR IN SO_BELNR.
"Bestimmte FI Belegnummer der Kreditoren
ELSEIF P_KRED = 'X' AND NOT SO_BELNR IS INITIAL AND SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM LFA1
INNER JOIN BSIK ON LFA1~LIFNR = BSIK~LIFNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE LFA1~LIFNR IN SO_LIFNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT
AND BELNR IN SO_BELNR.
"Nur bestimmte SD Belegnummer der Kreditoren
ELSEIF P_KRED = 'X' AND NOT SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM LFA1
INNER JOIN BSIK ON LFA1~LIFNR = BSIK~LIFNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE LFA1~LIFNR IN SO_LIFNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT.
SELECT *
FROM VBRK
INTO CORRESPONDING FIELDS OF TABLE IT_H_VBRK
WHERE VBRK~VBELN in SO_VBELN.
LOOP AT ITAB INTO WA.
READ TABLE IT_H_VBRK INTO LS_VBRK WITH KEY VBELN = wa-VBELN.
IF SY-SUBRC = 0.
MOVE LS_VBRK-VBELN TO WA-VBELN.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
"Alle Belegnummer (FI und SD) der Debitoren
ELSEIF P_DEB = 'X' AND SO_BELNR IS INITIAL AND SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM VBRK
INTO CORRESPONDING FIELDS OF TABLE IT_H_VBRK
WHERE VBRK~VBELN IN SO_VBELN.
SELECT *
FROM KNA1
INNER JOIN BSID ON KNA1~KUNNR = BSID~KUNNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE KNA1~KUNNR IN SO_KUNNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT
AND BELNR IN SO_BELNR.
LOOP AT ITAB INTO WA.
READ TABLE IT_H_VBRK INTO LS_VBRK WITH KEY VBELN = WA-VBELN.
IF SY-SUBRC = 0.
MOVE LS_VBRK-VBELN TO WA-VBELN.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
"Nur bestimmte FI Belegnummer der Debitoren
ELSEIF P_DEB = 'X' AND NOT SO_BELNR IS INITIAL AND SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM KNA1
INNER JOIN BSID ON KNA1~KUNNR = BSID~KUNNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE KNA1~KUNNR IN SO_KUNNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT
AND BELNR IN SO_BELNR.
"Nur bestimmte SD Belegnummer der Debitoren
ELSEIF P_DEB = 'X' AND NOT SO_VBELN IS INITIAL.
REFRESH ITAB.
SELECT *
FROM VBRK
INTO CORRESPONDING FIELDS OF TABLE IT_H_VBRK
WHERE VBRK~VBELN IN SO_VBELN.
SELECT *
FROM KNA1
INNER JOIN BSID ON KNA1~KUNNR = BSID~KUNNR
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE KNA1~KUNNR IN SO_KUNNR
AND BUKRS = PA_BUKRS
AND WRBTR IN SO_WRBTR
AND MANST IN SO_MANST
AND BUDAT IN SO_BUDAT.
LOOP AT ITAB INTO WA.
READ TABLE it_h_VBRK INTO LS_VBRK WITH KEY VBELN = SO_VBELN.
IF SY-SUBRC = 0.
MOVE LS_VBRK-VBELN TO WA-VBELN.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
ELSE.
ENDIF.
Das Problem:
Meine SD Belegnummern selektiert er immer noch nicht, er gibt mir wieder alles raus
