일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 인터셉터의 정의
- MVC
- abap value in field Data Class error
- 쿠키의 정의
- 유연한 컨트롤러1 - v5
- 필터vs인터셉터
- BindingResult
- 김영한
- spring MVC
- @Controller
- controller
- 세션vs쿠키
- n+1
- 세션의 정의
- 쿠키란
- spring
- SpringMVC
- Validation
- Testcode
- jpa
- optional
- application-properties
- 구글 보안 api 활용
- springSecurityFilterChain 오류
- java.lang.AssertionError
- 필터의 정의
- 401오류
- filter vs interceptor
- .orelseThrow
- 세션이란
- Today
- Total
ABAP DUMP ERROR 24시
sap workbench 12 본문
message 'data not found' type 's' display like 'v'
실제로는 SUCCESS 기능이 아노지만 display에서는 v 라고 나와주세요.
출처 :https://help.sap.com/doc/saphelp_nw75/7.5.5/en-US/4e/c24da36e391014adc9fffe4e204223/content.htm?no_cache=true
T- CODE SE91 에서 MESSAGE CLASS 생성이 가능하다.
REPORT zc5r070007 MESSAGE-ID OO.
MESSAGE S001.
// MESSAGE-ID 는 OO꺼를 사용하고 MESSAGE TYPE 은 S이며 001번을 사용하겠다.
****************************************************************************************************
REPORT zc5r070007 MESSAGE-ID OO.
MESSAGE S002 WITH 'A' 'B' DISPLAY LIKE 'E'
WITH 를 사용하면 &가 있는 부분에 파라미터를 입력해서
"A B IS ALREADY EXIST" 라는 문구를 얻을 수 있다.
"일시적으로 다른 부분에 있는 MESSAGE를 사용하고 싶을때 사용하는 방법.
"MESSAGE 타입+번호+(메세지 CLASS) WITH '나오고 싶은 ERROR 명'
MESSAGE S002(OO) WITH 'DATA EXCEPTION'.
*OBLIGATORY => 필수 입력값 조건을 주는 기능.
*DEFAULT => 기본값 주는 기능.
*LOWER CASE => DISCRIPTION에서 소문자를 사용해야 할떄.
*NO INTERVALS => 박스 하나 사라짐
*NO EXTENSION => 보내기 아이콘 사라짐. => MULTIPLE 한 입력이 불가능해진다.
*사용자의 선택을 하나만 고를수 있게 하는 것 => 라디오 버튼 과 리스트 박스가 있다.
*SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-T01.
*PARAMETERS : P_CARRID TYPE SCARR-CARRID OBLIGATORY DEFAULT 'LH',
* p_currcd type scarr-currcode.
*
*
*SELECTION-SCREEN END OF BLOCK BL1.
*
*
***********************************************************************
*
*OBLIGATORY => 필수 입력값 조건을 주는 기능.
*DEFAULT => 기본값 주는 기능.
*LOWER CASE => DISCRIPTION에서 소문자를 사용해야 할떄.
*NO INTERVALS => 박스 하나 사라짐
*NO EXTENSION => 보내기 아이콘 사라짐. => MULTIPLE 한 입력이 불가능해진다.
*사용자의 선택을 하나만 고를수 있게 하는 것 => 라디오 버튼 과 리스트 박스가 있다.
****************************************************************************************************
"OBLIGATORY 는 필수로 입력해야 할때 사용한다."
"DEFAULT는 SELECTION SCREEN 에 이미 변수 값이 입력해지는 코드"
"BLOCK 다음에 이름을 주는것은 필수!"
*SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-T01.
*PARAMETERS : P_CARRID TYPE SCARR-CARRID OBLIGATORY DEFAULT 'LH',
* p_currcd type scarr-currcode.
*
*
*SELECTION-SCREEN END OF BLOCK BL1.
*DATA : LS_SCARR TYPE scarr,
* LT_SCARR TYPE TABLE OF scarr.
*
*clear : ls_scarr.
*refresh : lt_scarr.
*
*
*select carrid carrname currcode url
* into CORRESPONDING FIELDS OF TABLE lt_scarr
* from scarr
* where carrid = p_carrid
* or currcode = p_currcd.
*
* if sy-subrc eq 0.
*
* cl_demo_output=>display( lt_scarr ).
*
* else.
*MESSAGE s000(zc507) with 'data not found' DISPLAY LIKE 'E'.
*
* endif.
SELECTION-SCREEN을 만들고 PARAMETER 생성
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.
PARAMETERS : p_carrid TYPE sflight-carrid OBLIGATORY,
p_connid TYPE sflight-connid.
SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
DATA : lt_data TYPE TABLE OF sflight.
REFRESH : lt_data.
"P_CONNNID NE SAPCE , P_CONNID NE 0 , P_CONNID IS INITIAL"
IF p_connid EQ ''. "IS INITIAL도 가능하다."
SELECT carrid connid fldate price currency planetype seatsmax
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sflight
WHERE carrid = p_carrid.
"함수화 하기"
IF sy-subrc EQ 0.
cl_demo_output=>display( lt_data ).
ELSE.
MESSAGE s000(zc507) WITH '파라미터 틀렸다'.
ENDIF.
ELSE.
SELECT carrid connid fldate price currency planetype seatsmax
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sflight
WHERE carrid = p_carrid
AND connid = p_connid.
IF sy-subrc EQ 0.
cl_demo_output=>display( lt_data ).
ELSE.
MESSAGE s000(zc507) WITH '파라미터 틀렸다'.
ENDIF.
ENDIF.
-SELECT OPTIONS조건
"여기서 TABLES 는 SELECT-OPTION의 TABLE을 선언하게 해준다. (필수)"
" SO_CARR 구분에서 FOR를 사용했는데 SELECT-OPTION 에서는 TYPE 대신 FOR를 사용한다."
TABLES : SFLIGHT.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.
SELECT-OPTIONS : SO_CARR FOR SFLIGHT-CARRID.
SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
-SELECT OPTIONS의 기능 다루기.
select-options에 서 선언된 변수들은 바로바로 사용이 가능하다.
**********************************************************************
TABLES : sflight.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE Text-t01.
SELECT-OPTIONS : so_carr for sflight-carrid.
SELECTION-SCREEN END OF BLOCK bl1.
data : lt_sflight type table of sflight,
ls_sflight type sflight.
"clear 는 대가리만 날림 == 대가리는 바로 사용이 가능하다. , refresh 는 몸통을 날림"
"clear : so_carr, so_carr[]처럼 써야 몸통과 대가리가 날라간다."
refresh : lt_sflight, so_carr.
select carrid connid fldate price currency planetype seatsmax
INTO CORRESPONDING FIELDS OF TABLE lt_sflight
from sflight
WHERE carrid in so_carr.
"select-option으로 만들어진 녀석들은 header를 가지고 있기 떄문에 structure로써의 변환의 필요 없이 바로 사용이 가능하다."
LOOP AT so_carr.
so_carr-low = 'BB'.
* APPEND ls_sflight to lt_flight.
* Append so_scarr
ENDLOOP.
**********************************************************************
no intervals => 간격 (박스)제거 == high 제거
no-extension => 여러개 확장 아이콘 제거
**********************************************************************
TABLES : sflight.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE Text-t01.
PARAMETERS : pa_carr type sflight-carrid .
SELECT-OPTIONS : so_conn for sflight-connid no INTERVALS no-extension.
SELECTION-SCREEN END OF BLOCK bl1.
data : lt_sflight type table of sflight,
ls_sflight type sflight.
"clear 는 대가리만 날림 == 대가리는 바로 사용이 가능하다. , refresh 는 몸통을 날림"
"clear : so_carr, so_carr[]처럼 써야 몸통과 대가리가 날라간다."
refresh : lt_sflight.
clear : ls_sflight.
select carrid connid fldate price currency planetype seatsmax
INTO CORRESPONDING FIELDS OF TABLE lt_sflight
from sflight
WHERE carrid eq pa_carr
and connid in so_conn.
"select option은 조건을 따로 주지 않으면 사용 안하겠다고 프로그램에서 인지한다."
"마치 if 문으로 select를 나누었던 것처럼!"
cl_demo_output=>display( lt_sflight ).
"select-option으로 만들어진 녀석들은 header를 가지고 있기 떄문에 structure로써의 변환의 필요 없이 바로 사용이 가능하다."
*LOOP AT so_carr.
* so_carr-low = 'BB'.
*
** APPEND ls_sflight to lt_flight.
** Append so_scarr
*
*
*ENDLOOP.
**********************************************************************
간단한 tip 만들기
**********************************************************************
"uline 은 선그려주기"
SELECTION-SCREEN ULINE.
"skip 은 공백 만들어주기."
SELECTION-SCREEN SKIP 9.
**********************************************************************
selection screen 은 View 와 같이 parameter를 사용자로부터 받는 용도로 사용이 된다.
TABLES sbuspart.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.
PARAMETERS : pa_num TYPE sbuspart-buspartnum OBLIGATORY.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS : so_tact FOR sbuspart-contact LOWER CASE NO INTERVALS. "todo high값 입력 불가 속성 No intervals".
SELECTION-SCREEN ULINE.
PARAMETERS : ta RADIOBUTTON GROUP rb1 DEFAULT 'X',
fc RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
DATA : lt_data TYPE TABLE OF sbuspart.
IF ta EQ 'X'.
SELECT buspartnum contact contphono buspatyp
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sbuspart
WHERE buspartnum = pa_num
and contact in so_tact
and buspatyp = 'TA'.
"subrc로 검증"
IF sy-subrc eq 0.
MESSAGE s000(zc507) with 'yes_ta'.
cl_demo_output=>display( lt_data ).
else.
MESSAGE s000(zc507) with 'error-ta'.
ENDIF.
ELSEIF fc EQ 'X'.
SELECT buspartnum contact contphono buspatyp
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sbuspart
WHERE buspartnum = pa_num
and contact in so_tact
and buspatyp = 'FC'.
"subrc로 검증"
IF sy-subrc eq 0.
MESSAGE s000(zc507) with 'yes_fc'.
cl_demo_output=>display( lt_data ).
else.
MESSAGE s000(zc507) with 'error-fc'.
ENDIF.
ENDIF.
CASE 문
*****************************************************
DATA : LV_CASE VALUE '1'.
CASE lv_case.
WHEN '1'.
MESSAGE S000(ZC507) WITH '1이다 '.
WHEN '2'.
MESSAGE S000(ZC507) WITH '2이다 '.
WHEN OTHERS.
MESSAGE S000(ZC507) WITH 'OTHER이다 '.
ENDCASE.
DATA : LV_CASE VALUE '1'.
DATA : LV_CASE2 VALUE '2'.
DATA : LV_CASE3 VALUE '3'.
DATA : LV_CASE4 VALUE '4'.
.
CASE '1'.
WHEN LV_CASE.
MESSAGE S000(ZC507) WITH '1이다 '.
WHEN LV_CASE2.
MESSAGE S000(ZC507) WITH '2이다 '.
WHEN OTHERS.
MESSAGE S000(ZC507) WITH 'OTHER이다 '.
ENDCASE.
case문 실습
abap 의 selection-screen 에서의 제공은
view 에서 parameter의 값을 전달해 주고 @repository에서 사용하듯
when 절에 parameter 를 제공하면 된다.
**********************************************************************
TABLES sbuspart.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.
PARAMETERS : pa_num TYPE sbuspart-buspartnum OBLIGATORY.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS : so_tact FOR sbuspart-contact LOWER CASE NO INTERVALS. "소문자 입력이 이미 domain 선에서 case-sensitive가능했지만 한번 써보세요."
SELECTION-SCREEN ULINE.
PARAMETERS : pa_ta RADIOBUTTON GROUP rb1 DEFAULT 'X',
pa_fc RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
DATA : lt_data TYPE TABLE OF sbuspart.
REFRESH lt_data.
CASE 'X'.
WHEN pa_ta.
SELECT buspartnum contact contphono buspatyp
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sbuspart
WHERE buspartnum = pa_num
and contact in so_tact
and buspatyp = 'TA'.
IF sy-subrc eq 0.
MESSAGE s000(zc507) with 'yes_fc'.
cl_demo_output=>display( lt_data ).
else.
MESSAGE s000(zc507) DISPLAY LIKE 'E' with 'error-fc'.
ENDIF.
WHEN pa_fc.
SELECT buspartnum contact contphono buspatyp
INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM sbuspart
WHERE buspartnum = pa_num
and contact in so_tact
and buspatyp = 'FC'.
IF sy-subrc eq 0.
MESSAGE s000(zc507) with 'yes_fc'.
cl_demo_output=>display( lt_data ).
else.
MESSAGE s000(zc507) DISPLAY LIKE 'E' with 'error-fc'.
ENDIF.
WHEN OTHERS.
ENDCASE.
'[SAP]ABAP > ABAP 강의 SYNC' 카테고리의 다른 글
sap workbench 14 (0) | 2022.07.07 |
---|---|
sap workbench 13 (0) | 2022.07.06 |
sap workbench 11 (0) | 2022.07.04 |
sap workbench 10 (0) | 2022.07.01 |
sap workbench 9 (0) | 2022.06.30 |