ABAP DUMP ERROR 24시

sap workbench 14 본문

[SAP]ABAP/ABAP 강의 SYNC

sap workbench 14

이운형 2022. 7. 7. 12:47
반응형

 

1> binary search를 하기 위해서는 sort가 꼭 되야한다.

sort 의 carrid carrname 의 순서와 with key 다음의 carrid carrname의 순서는 일치해야 한다.

 

* 꼭 binary search를 해야한다면 sort를 꼭 하자.
*sort lt_data by carrid carrname.
*
*
*read table lt_data with key carrid =''
*                             carrnaem = ''
*                             binary search.

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

 

2> 정렬 sorted table 과 hashed table 이 존재한다.

 

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

data : lt_sflight TYPE TABLE OF sflight,
       ls_sflight like LINE OF lt_sflight,
       lt_temp    like TABLE OF ls_sflight,
       ls_temp    like line of lt_temp.

clear :  ls_sflight.
refresh : lt_sflight, lt_temp.

SELECT carrid connid fldate price currency
  into CORRESPONDING FIELDS OF TABLE lt_sflight
  FROM sflight
  where carrid =  'AA'.
  
  LOOP AT lt_sflight into ls_sflight.
    
*    ls_temp-carrid = ls_temp-carrid.
*    ls_temp-connid = ls_temp-connid.
*    ls_temp-currency = ls_temp-cuurency.
*    ls_temp-fldate = ls_temp-fldate.
*    ls_temp-price = ls_temp-price.
    
     MOVE-CORRESPONDING ls_sflight to ls_temp.
    
    
    append ls_temp to lt_temp.
    clear ls_temp.

  ENDLOOP.
  
  
  sort lt_temp by carrid connid.  
  "lt_temp 에 존재한는 all field 를 써서 중복을ㅇ 제거해 주세요. + 무조건 전처리로 sort 해주기!!!"
  DELETE ADJACENT DUPLICATES FROM lt_temp COMPARING ALL FIELDS.
  

 

2 >  sort by    delete adjacent  duplicates from 활용 sample code

TABLES : sflight, sbook.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.
  PARAMETERS     : pa_carid    TYPE sflight-carrid OBLIGATORY.
  SELECT-OPTIONS : co_conid    FOR  sflight-connid OBLIGATORY.
  PARAMETERS     : pa_ptype    TYPE sflight-planetype AS LISTBOX VISIBLE LENGTH 10.
  SELECT-OPTIONS : so_bokid    FOR  sbook-bookid.
SELECTION-SCREEN END OF BLOCK bl1.

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

DATA : BEGIN OF ls_data_1,

         carrid    TYPE      sflight-carrid,
         connid    TYPE      sflight-connid,
         fldate    TYPE      sflight-fldate,
         planetype TYPE      sflight-planetype,
         currency  TYPE      sflight-currency,
         bookid    TYPE      sbook-bookid,
         customid  TYPE      sbook-customid,
         custtype  TYPE      sbook-custtype,
         class     TYPE      sbook-class,
         agencynum TYPE      sbook-agencynum,

       END OF ls_data_1,

       lt_data_1 like TABLE of ls_data_1.

clear   : ls_data_1.
refresh : lt_data_1.


DATA : BEGIN OF ls_data_2,

         carrid    TYPE      sflight-carrid,
         connid    TYPE      sflight-connid,
         fldate    TYPE      sflight-fldate,
         bookid    TYPE      sbook-bookid,
         customid  TYPE      sbook-customid,
         custtype  TYPE      sbook-custtype,
         agencynum TYPE      sbook-agencynum,

       END OF ls_data_2,

       lt_data_2 like TABLE of ls_data_2.

clear   : ls_data_2.
refresh : lt_data_2.

select sflight~carrid
       sflight~connid
       sflight~fldate
       sflight~planetype
       sflight~currency
       sbook~bookid
       sbook~customid
       sbook~custtype
       sbook~class
       sbook~agencynum
INTO CORRESPONDING FIELDS OF TABLE lt_data_1
FROM sflight as sflight INNER JOIN sbook as sbook
  on  sflight~carrid    =   sbook~carrid
  and sflight~connid    =   sbook~connid
  and sflight~fldate    =   sbook~fldate
where sflight~carrid    =   pa_carid
  and sflight~connid    in  co_conid
  and sflight~planetype =   pa_ptype
  and sbook~bookid      in  so_bokid.




LOOP AT lt_data_1 INTO ls_data_1.

  IF ls_data_1-custtype eq 'B'.

    MOVE-CORRESPONDING ls_data_1 to ls_data_2.

    append ls_data_2 to lt_data_2.
    clear : ls_data_2.

  ENDIF.

ENDLOOP.

sort lt_data_2 by carrid connid fldate.

DELETE ADJACENT DUPLICATES FROM lt_data_2
COMPARING carrid connid fldate.

if sy-subrc eq 0.

  cl_demo_output=>display( lt_data_2 ).

endif.

list-box에 obligatory를 사용하려면 default 값을 설정해 주는 것이 옳다.

 

why ?

단지 obligatory 를 사용하면 공백이 default 값으로 잡히므로, 혹여 db에 공백값으로 가지고 있을 수 있으니까.

사전에 미리 방지하기 위해 default 값을 주자!.

반응형

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

sap (ALV Call-Screen)  (0) 2022.07.14
sap (TOP include 만들기, )  (0) 2022.07.08
sap workbench 13  (0) 2022.07.06
sap workbench 12  (0) 2022.07.05
sap workbench 11  (0) 2022.07.04
Comments