Запрос в abap, используя выбранное поле - PullRequest
0 голосов
/ 17 декабря 2018

Привет, так что есть это поле, которое я должен выбрать, пока ничего не может быть выбрано.

например,

field 1 | field 2
________|__________
aaa     |  bbb
bbb     |  fff
fff     |  ccc
ccc     |  kkk

Мне нужно выбрать поле 2 с помощью поля 1 и изменить внутреннюю таблицу, затем найти его в поле 1, а затем снова получить поле 2, изменить таблицу и затем найти ее вполе 1, та же самая процедура продолжается, пока ничего не может быть выбрано.

Это мой код.

     DATA : BEGIN OF IT OCCURS 0,
         PARTNER  TYPE BUT000-PARTNER,
         PARTNER1 TYPE BUT050-PARTNER1,
         2        TYPE BUT050-PARTNER1,
         3        TYPE BUT050-PARTNER1,
         4        TYPE BUT050-PARTNER1,
         5        TYPE BUT050-PARTNER1,
         6        TYPE BUT050-PARTNER1,
         7        TYPE BUT050-PARTNER1,
         8        TYPE BUT050-PARTNER1,
         9        TYPE BUT050-PARTNER1,
         10       TYPE BUT050-PARTNER1,
       END OF IT.

SELECT BUT000~PARTNER BUT050~PARTNER2
  FROM BUT000
  INNER JOIN BUT050 ON BUT000~PARTNER EQ BUT050~PARTNER1
  INTO TABLE IT.

FIELD-SYMBOLS <FS_WA> TYPE ANY.
FIELD-SYMBOLS <FS_WA1> TYPE ANY.

data num type i value 1.
data num2 type string.
data str type string.
data partner(255) type c.

LOOP AT IT.
  partner =  it-partner1.
 while partner <> space.

    num = num + 1.
    num2 = num.
    concatenate 'it-' num2 into str.
    condense str.
    assign str to <fs_wa>.

    select single but050~partner2 into
      <fs_wa> from but050  where partner1 eq partner.

     partner = <fs_wa>.
    modify it from <fs_wa>.

    if num = 10.
      clear num.
     stop.
    exit.
    endif.

 endwhile.

ENDLOOP.

мне нужен мой внутренний стол, чтобы он выглядел следующим образом.

field 1 | field 2 | field 3 | field 4 | field 5
________|_________|_________|_________|________
aaa     | bbb     | fff     | ccc     | kkkk

Надеюсь, вы поможете мне с этим.

1 Ответ

0 голосов
/ 18 декабря 2018

Спасибо, я решил свою проблему, хотя это не тот результат, которого я пытался достичь, но это вполне нормально.

это то, что решило мою проблему.

    LOOP AT IT.

  INDEX = 2.
  DATA(PART) = IT-PARTNER1.
  DO .
    INDEX = INDEX + 1.
    ASSIGN COMPONENT INDEX OF STRUCTURE IT TO <FS>.

    IF SY-SUBRC <> 0.
      EXIT.
    ENDIF.

    SELECT BUT050~PARTNER2 FROM BUT050
      WHERE PARTNER1 EQ  @PART
      AND  RELTYP IN ('ZBP002',
                      'ZBP003',
                      'ZBP004',
                      'ZBP005',
                      'ZBP006',
                      'ZBP007',
                      'ZBP008',
                      'ZBP009',
                      'ZBP010',
                      'ZBP011')
      ORDER BY RELTYP ASCENDING
      INTO @<FS>.
    ENDSELECT.

    IF IT-PARTNER NE <FS>  AND IT-PARTNER1 NE <FS>.
      PART = <FS>.
      MODIFY IT.
    ELSE.
      PART = ''.
    ENDIF.
  ENDDO.

ENDLOOP.

Большое спасибо!С наилучшими пожеланиями:)

...