Rekordy tabeli na pola rekordu - składnia

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
emil
Posty: 82
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 19 times
Been thanked: 25 times

Rekordy tabeli na pola rekordu - składnia

Post autor: emil »

Wymyśliłem sobie następujące zadanie:

Tabela1 ma 0..8 rekordów z danymi w kolumnach tabela1-pies tabela1-kot tabela1-papuga.

Tabela2 musi zostać zasilona danymi z tabeli 1, układ kolumn jest następujący:
tabela2-pies1 tabela2-kot1 tabela2-papuga1 tabela2-pies2 tabela2-kot2 tabela2-papuga2... itd do 8.

Zabierałem się do tego przez do N times/enddo po sprawdzeniu ile jest rekordów w tabela1,
ale poddałem się przy próbie pospawania N przez <fs> z polami tabeli2.

Mogę prosić o sugestię, którędy zaatakować ten temat?
DenzelWaszyngton
Posty: 50
Rejestracja: czw maja 23, 2013 6:49 pm
Has thanked: 13 times
Been thanked: 14 times

Re: Rekordy tabeli na pola rekordu - składnia

Post autor: DenzelWaszyngton »

skoro układ kolumn jest ten sam, to nie wystarczy odczytać tabeli1 i przypisać jej do tabeli2?
ZETKA
Posty: 68
Rejestracja: czw lis 04, 2010 10:49 pm
Has thanked: 1 time
Been thanked: 66 times

Re: Rekordy tabeli na pola rekordu - składnia

Post autor: ZETKA »

Cześć, możesz to narysowac? ;)
Pozdrawiam,
Krzysiek
emil
Posty: 82
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 19 times
Been thanked: 25 times

Re: Rekordy tabeli na pola rekordu - składnia

Post autor: emil »

Poniższa forma działa i chyba będzie w stanie zasygnalizować, co należałoby zmienić ;)

Docelowo zasilam sobie gs_data_gorn danymi z infotypowego pa0183.
P_gorn to zakres interesujących mnie odznaczeń, otrzymany z ekranu selekcji.

Kod: Zaznacz cały

     IF p_gorn IS NOT INITIAL.

       SELECT * FROM pa0183 INTO CORRESPONDING FIELDS OF TABLE lt_pa0183_g
                UP TO 8 ROWS
                WHERE pernr = pernr-pernr AND awdtp IN p_gorn ORDER BY datawyd DESCENDING.

       IF sy-subrc NE 0.
         gs_data_gorn-stopien_gorn_11 = 'nie posiada'.
       ELSE.
         "mamy zasilony itab więc popracujmy na nim
         LOOP AT lt_pa0183_g INTO ls_pa0183_g.

           IF sy-tabix = 1.
             SELECT  SINGLE awdtx FROM t5r02 INTO gs_data_gorn-stopien_gorn_11 WHERE sprsl = 'L' AND molga = '46' AND awdtp = ls_pa0183_g-awdtp.
             gs_data_gorn-stopien_gorn_12 = ls_pa0183_g-nrllegit.
             gs_data_gorn-stopien_gorn_13 = ls_pa0183_g-datawyd.
           ENDIF.
           IF sy-tabix = 2.
             SELECT  SINGLE awdtx FROM t5r02 INTO gs_data_gorn-stopien_gorn_21 WHERE sprsl = 'L' AND molga = '46' AND awdtp = ls_pa0183_g-awdtp.
             gs_data_gorn-stopien_gorn_22 = ls_pa0183_g-nrllegit.
             gs_data_gorn-stopien_gorn_23 = ls_pa0183_g-datawyd.
           ENDIF.

*         (kolejne 3 4 5 6 7 w tym samych schemacie)

           IF sy-tabix = 8.
             SELECT  SINGLE awdtx FROM t5r02 INTO gs_data_gorn-stopien_gorn_81 WHERE sprsl = 'L' AND molga = '46' AND awdtp = ls_pa0183_g-awdtp.
             gs_data_gorn-stopien_gorn_82 = ls_pa0183_g-nrllegit.
             gs_data_gorn-stopien_gorn_83 = ls_pa0183_g-datawyd.
           ENDIF.
         ENDLOOP.
       ENDIF.
     ENDIF.
Na ten moment sytuacja jest prosta, mam tylko 8 rekordów do obsłużenia, ale może ich być... dowolnie więcej.
Na chłopski rozum, jeśli kawałek kodu:

Kod: Zaznacz cały

           IF sy-tabix = 8.
             SELECT  SINGLE awdtx FROM t5r02 INTO gs_data_gorn-stopien_gorn_81 WHERE sprsl = 'L' AND molga = '46' AND awdtp = ls_pa0183_g-awdtp.
             gs_data_gorn-stopien_gorn_82 = ls_pa0183_g-nrllegit.
             gs_data_gorn-stopien_gorn_83 = ls_pa0183_g-datawyd.
           ENDIF.
...cały czas się powtarza, to chętnie bym zamiast "8" wstawił jakąś zmienną, która rosłaby razem z sy-indexem do momentu, gdy zostaną przebadane wszystkie rekordy spełniające jakiś warunek.
Na 100% widziałem już gdzieś interesującą mnie składnię, ale nie jestem w stanie jej znaleźć/odtworzyć.
DenzelWaszyngton
Posty: 50
Rejestracja: czw maja 23, 2013 6:49 pm
Has thanked: 13 times
Been thanked: 14 times

Re: Rekordy tabeli na pola rekordu - składnia

Post autor: DenzelWaszyngton »

jest coś takiego:
https://answers.sap.com/questions/66580 ... cally.html
powinieneś to być w stanie tym obsłużyć
wojtas7
Posty: 937
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 58 times
Been thanked: 255 times

Re: Rekordy tabeli na pola rekordu - składnia

Post autor: wojtas7 »

Musisz to zrobić na field-symbolach i zmiennych tekstowych typu assign-field symbol (lv_nazwa_zmiennej), i wypełniać nazwę tekstowo. Ew asign component of jeśli masz strukturę.

Uważaj tylko żeby nie używać w pętli LOOP Selecta bo wydajność jest kiepska.

Linki pierwsze z brzegu

https://stackoverflow.com/questions/519 ... ld-symbols
https://stackoverflow.com/questions/723 ... ynamically
https://stackoverflow.com/questions/541 ... rnal-table