У меня проблема с отображением записей, в которых есть повторяющиеся поля. Мой код получает только 1 запись за один раз, когда код выполняется.
Мой запрос:
SELECT * FROM QALS INTO TABLE IT_QALS
WHERE WERK = P_WERK AND
BUDAT IN P_BUDAT AND
ERSTELDAT IN RSTELDAT AND
SELMATNR IN SELMATNR.
IF IT_QALS IS NOT INITIAL.
SELECT * FROM QASE INTO TABLE IT_QASE
FOR ALL ENTRIES IN IT_QALS
WHERE PRUEFLOS = IT_QALS-PRUEFLOS.
ENDIF.
IF IT_QASE IS NOT INITIAL.
SELECT * FROM QAMV INTO TABLE IT_QAMV
FOR ALL ENTRIES IN IT_QASE
WHERE PRUEFLOS = IT_QASE-PRUEFLOS AND
VORGLFNR = IT_QASE-VORGLFNR AND
MERKNR = IT_QASE-MERKNR.
ENDIF.
И это код для заполнения внутренней таблицы IT_PRINT
, которая позже отображается:
FORM F_LSTDT.
LOOP AT IT_QALS INTO WA_QALS.
WA_PRINT-PRUEFLOS = WA_QALS-PRUEFLOS.
WA_PRINT-ERSTELDAT = WA_QALS-ERSTELDAT.
WA_PRINT-SELMATNR = WA_QALS-SELMATNR.
WA_PRINT-BUDAT = WA_QALS-BUDAT.
WA_PRINT-LOSMENGE = WA_QALS-LOSMENGE.
WA_PRINT-LMENGE01 = WA_QALS-LMENGE01.
WA_PRINT-LMENGE04 = WA_QALS-LMENGE04.
WA_PRINT-CHARG = WA_QALS-CHARG.
WA_PRINT-KTEXTLOS = WA_QALS-KTEXTLOS.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
INPUT = 'ZFDM_NO_OPTIM'
IMPORTING
OUTPUT = P_ATTIN.
.
SELECT SINGLE ATINN, KLART FROM AUSP
WHERE ATINN = @P_ATTIN AND
KLART = '023'
INTO CORRESPONDING FIELDS OF @WA_PRINT.
IF WA_PRINT-ATINN IS NOT INITIAL AND WA_PRINT-KLART IS NOT INITIAL.
SELECT SINGLE CUOBJ_BM FROM MCH1
INTO WA_PRINT-CUOBJ
WHERE MATNR = WA_QALS-MATNR AND
CHARG = WA_PRINT-CHARG.
ENDIF.
SELECT SINGLE MAKTX FROM MAKT
INTO WA_PRINT-MAKTX
WHERE MATNR = WA_PRINT-SELMATNR.
LOOP AT IT_QASE INTO WA_QASE.
LOOP AT IT_QAMV INTO WA_QAMV.
WA_PRINT-VERWMERKM = WA_QAMV-VERWMERKM.
IF WA_PRINT-VERWMERKM IS NOT INITIAL.
WA_PRINT-KURZTEXT = WA_QAMV-KURZTEXT.
ENDIF.
IF WA_PRINT-PRUEFLOS IS NOT INITIAL AND WA_QASE-PRUEFLOS = WA_PRINT-PRUEFLOS AND WA_QAMV-PRUEFLOS = WA_QASE-PRUEFLOS.
IF WA_QASE-MESSWERTNI = 'X'.
WA_PRINT-WERT = WA_QASE-MESSWERT.
ELSE.
SELECT SINGLE KURZTEXT FROM QPCT
INTO WA_PRINT-WERT
WHERE KATALOGART = '1' AND
CODEGRUPPE = WA_QASE-GRUPPE1 AND
CODE = WA_QASE-CODE1.
ENDIF.
WA_PRINT-MBEWERTG = WA_QASE-MBEWERTG.
WA_PRINT-PRUEFBEMKT = WA_QASE-PRUEFBEMKT.
IF WA_PRINT-PRUEFBEMKT IS INITIAL.
WA_PRINT-PRUEFBEMKT = WA_QASE-PRLTEXTKZ.
WA_PRINT-KTEXTLOS = WA_QASE-PRLTEXTKZ.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
APPEND WA_PRINT TO IT_PRINT.
CLEAR: WA_PRINT, WA_QALS, WA_QASE, WA_QAMV.
ENDLOOP.
ENDFORM.
И вывод, который я получил, вот так:
Выход
Когда я проверяю код транзакции se16n, он должен выглядеть следующим образом:
Даже если я использую запрос соединения для отображения этих данных, я все еще не может отобразить эти дубликаты записей. Это мой запрос на присоединение.
SELECT QALS~WERK, QALS~PRUEFLOS, QALS~ERSTELDAT, QALS~SELMATNR, QALS~BUDAT, QALS~LOSMENGE, QALS~LMENGE01, QALS~LMENGE04, QALS~LIFNR, QALS~CHARG, QALS~KTEXTLOS, QALS~MBLNR, QAMV~VERWMERKM, QAMV~KURZTEXT, QASE~MESSWERT, QASE~MESSWERTNI, QASE~MBEWERTG,
QASE~PRUEFBEMKT, QASE~PRLTEXTKZ, QASE~VORGLFNR, QASE~MERKNR FROM QALS
INNER JOIN QASE ON QALS~PRUEFLOS EQ QASE~PRUEFLOS
INNER JOIN QAMV ON QASE~PRUEFLOS EQ QAMV~PRUEFLOS
* QASE~VORGLFNR EQ @QAMV-VORGLFNR
* QASE~MERKNR EQ QAMV~MERKNR
INTO CORRESPONDING FIELDS OF TABLE @IT_ZVBR
WHERE QALS~WERK = @P_WERK AND
QALS~BUDAT IN @P_BUDAT AND
QALS~ERSTELDAT IN @RSTELDAT AND
QALS~SELMATNR IN @SELMATNR.
Примечание. В этом запросе у меня все еще есть проблема. код, который я изменяю в комментариях, я думаю, якобы работает. Потому что у меня есть выборка между этими таблицами и имеют одинаковые значения.
Может кто-нибудь мне помочь? Я очень запутан, чтобы решить эту проблему.