ABAP DUMP ERROR 24시

sap workbench 10 본문

[SAP]ABAP/ABAP 강의 SYNC

sap workbench 10

이운형 2022. 7. 1. 14:59
반응형
data : lv_cnt(5) type p.

DO lv_cnt TIMES.
WRITE :  'a', /.


ENDDO.

****************************************

*lines 를 사용하면 data의 갯수를 확인해준다. .count()
*describe table x lines y  x의 데이터 값을 y에 할당해주세요.

if sy-subrc eq 0.
  
  lv_ct = lines(lt_data).
  
  DESCRIBE TABLE lt_data lines lv_cnt.
  
  
  
  ENDIF
  
****************************************

 

 

특정 index를 읽기 = > read table x into y index z

****************************************
DATA : ls_data TYPE scarr,
       lt_data TYPE TABLE OF scarr.


CLEAR ls_data.
REFRESH lt_data.


SELECT carrid carrname
  INTO CORRESPONDING FIELDS OF TABLE lt_data
  FROM scarr
  WHERE carrid in ( 'AA', 'AZ', 'DL' ).

  if sy-subrc eq 0.

    READ TABLE lt_data into ls_data INDEX 2.

    write ls_data-carrname.

    ENDIF.

****************************************

 

***************************************

DATA : ls_data     TYPE scarr,
       lt_data     TYPE TABLE OF scarr,
       lv_cnt(100) TYPE i.


CLEAR ls_data.
REFRESH lt_data.


SELECT carrid carrname
  INTO CORRESPONDING FIELDS OF TABLE lt_data
  FROM scarr
  WHERE carrid IN ( 'AA', 'AZ', 'DL' ).

IF sy-subrc EQ 0.

  lv_cnt = lines( lt_data ).


  DO lv_cnt TIMES.
    READ TABLE lt_data INTO ls_data INDEX sy-index.

    IF sy-subrc = 0.
      write :  ls_data-carrname.
      NEW-LINE.
    ENDIF.

  ENDDO.


ENDIF.

****************************************

 

loop 는 table 전용으로 사용

do는 일반 for문 처럼 사용.

 

sy-tabix => lt의 index값

sy-index  => 특정 반복문에서의 index값.

 

****************************************
DATA: BEGIN OF ls_data,
        carrid     TYPE sflight-carrid,
        connid     TYPE sflight-connid,
        fldate     TYPE sflight-fldate,
        currency   TYPE sflight-currency,
        planetype  TYPE sflight-planetype,
        seatsocc_b TYPE sflight-seatsocc_b,

      END OF ls_data,

      lv_ct(100) TYPE i,
      lt_data    LIKE TABLE OF ls_data.

CLEAR : ls_data.
REFRESH lt_data.


SELECT carrid connid fldate currency planetype seatsocc_b
  INTO CORRESPONDING FIELDS OF TABLE lt_data
  FROM sflight
  WHERE currency = 'USD'
  AND planetype  = '747-400'.




IF  sy-subrc EQ 0.

  lv_ct = lines( lt_data ).

  DO lv_ct TIMES.

*sy-index를 번호 별로 만들어서 lt_data에 집어넣어라.
    READ TABLE lt_data INTO ls_data INDEX sy-index.

* sy-index 가 정말 잘 되있는지 확인하기.
    IF sy-subrc EQ 0.

      IF ls_data-carrid     = 'UA'.
        ls_data-seatsocc_b += 5.

        MODIFY lt_data FROM ls_data INDEX sy-tabix
        TRANSPORTING seatsocc_b.

      ENDIF.


    ENDIF.


  ENDDO.


ELSE.

  WRITE : 'Error'.

ENDIF.



******************************************************************

 

 

loop를 돌리는 방법 2가지

1) loop 안에 if문을 삽입하거나

2) loop 뒤에 where 조건을 주면 된다.

******************************************************************
IF  sy-subrc EQ 0.

  LOOP AT lt_data INTO ls_data.
    
    IF ls_data-carrid = 'UA'.
       ls_data-seatsocc_b += 5.
       
       MODIFY it_data from is_data INDEX sy-tabix
       TRANSPORTING seatsocc_b.
      
    ENDIF.
   
  ENDLOOP.
  
  
  IF  sy-subrc EQ 0.

  LOOP AT lt_data INTO ls_data WHERE carrid eq 'UA'.
    
       ls_data-seatsocc_b += 5.
       
       MODIFY it_data from is_data INDEX sy-tabix
       TRANSPORTING seatsocc_b.
      
   
  ENDLOOP.
  ******************************************************************
******************************************************************

*
*DATA : ls_data TYPE sbuspart,
*       lt_data TYPE TABLE OF sbuspart,
*       lv_count(10) type i.
*
*CLEAR    : ls_data.
*REFRESH  :lt_data.
*lv_count = 0.
*
*
*SELECT BUSPARTNUM CONTACT CONTPHONO BUSPATYP
*  INTO CORRESPONDING FIELDS OF TABLE lt_data
*  FROM sbuspart
*  WHERE contphono <> ''.
*
*
*LOOP AT lt_data INTO ls_data where contact = 'Meyer' or buspatyp = 'TA'.
*
*    ls_data-contphono ='02-345-2034'.
*    lv_count         += 1.
*
*    modify lt_data from ls_data INDEX sy-tabix
*    TRANSPORTING contphono.
*
*ENDLOOP.
*
*write lv_count.
*
*cl_demo_output=>display( lt_data ).
*

******************************************************************

 

******************************************************************

data : ls_data TYPE ZC5V07002,
       lt_data TYPE TABLE OF ZC5V07002.


clear : ls_data.
refresh : lt_data.


SELECT carrid planetype fldate
  into CORRESPONDING FIELDS OF TABLE lt_data
  from  ZC5V07002
  where carrid = 'UA'
  and   planetype in ( 'A380-800', '767-200' ).

  LOOP AT lt_data INTO ls_data.
    IF ls_data-fldate   = '20210228'.
      ls_data-planetype = '757F'.

      MODIFY lt_data FROM ls_data INDEX sy-tabix
      TRANSPORTING planetype.


    ELSEIF ls_data-fldate = '20210328'.
      ls_data-planetype   = 'L-1011-100'.

      MODIFY lt_data FROM ls_data INDEX sy-tabix
      TRANSPORTING planetype.

    ENDIF.

  ENDLOOP.


cl_demo_output=>display( lt_data ).
  ******************************************************************

 

 

 

 

 

반응형

'[SAP]ABAP > ABAP 강의 SYNC' 카테고리의 다른 글

sap workbench 12  (0) 2022.07.05
sap workbench 11  (0) 2022.07.04
sap workbench 9  (0) 2022.06.30
sap workbench 8  (0) 2022.06.29
SAP WORKBENCH 7  (0) 2022.06.28
Comments