일단 1-3p만 했읍니다.
<문제>
문제는 화면으로 대체
1. 라디오 버튼 가로 생성
2. 라디오버튼 구매오더 default 지정
3. 구매오더 범위값으로 defalut 값 지정
4. 라디오버튼 판매오더 클릭시 default 값 지정
까지만 일단.
0. 일단 참조 필드를 structure로 선언하고,
structure 참조해서 work area와 internal table을 만든다.
(하나만 예시로 넣어줌)
*DATA: BEGIN OF gs_ekko. "structure 생성"
*DATA: ebeln_ko TYPE ekko-ebeln,
* bstyp TYPE ekko-bstyp,
* bsart TYPE ekko-bsart,
* ekorg TYPE ekko-ekorg,
* ekgrp TYPE ekko-ekgrp,
* waers TYPE ekko-waers,
* maktx TYPE makt-maktx,
* spras TYPE makt-spras,
* END OF gs_ekko, wa_ekko LIKE gs_ekko, gt_ekko LIKE TABLE OF gs_ekko. "work area, internal table 생성"
1. radio button 가로로 생성
(블럭을 그려준다)
2.구매오더에 default값 설정
*SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE TEXT-003. 1)
*
*SELECTION-SCREEN BEGIN OF LINE. 2)
*PARAMETERS p_rabuy RADIOBUTTON GROUP a DEFAULT 'X' USER-COMMAND 123. 3)
*
*SELECTION-SCREEN POSITION 3. 4)
*SELECTION-SCREEN COMMENT (6) TEXT-r01. 5)
*
*SELECTION-SCREEN POSITION 15. 4)
*PARAMETERS p_rasell RADIOBUTTON GROUP a. 3)
*SELECTION-SCREEN POSITION 17. 4)
*SELECTION-SCREEN COMMENT (6) TEXT-r02. 5)
*
*SELECTION-SCREEN END OF LINE. 2)
1) 블럭 그려줌 : 타이틀 - 예제1
2) begin of line으로 해서 radiobutton이 가로로 생성됨 / end of line로 끝내줘야한다.
3) 라디오버튼을 그룹짓고 p_rabuy를 defalut 'x'를 통해 초기값으로 지정,
<user-command 123관련 부분 easyabap 통해 정리함 >
- user-command 123을 넣어야 라디오버튼 구매오더 판매오더 클릭시 select-options 초기값이 변경된다.
- 이해한 바로는 user-command는 라디오버튼, 드롭리스트, 체크박스와 같은 parameter에서 값을 선택하는 경우에 동적인 상황을 인지하게 하기 위한 명령어다.
4) SELECTION-SCREEN POSITION 을 통해 comment나 radiobutton의 위치를 잡아준다.
5) SELECTION-SCREEN COMMENT (6) TEXT-r01 을 통해 radiobutton앞에 출력될 텍스트를 지정해준다.
/ TEXT-R01 - 구매오더 / TEXT-R02 - 판매오더
3. 구매오더 범위값으로 defalut 값 지정
4. 라디오버튼 판매오더 클릭시 default 값 지정
*SELECT-OPTIONS : s_ebeln FOR ekko-ebeln DEFAULT '4500000000' TO '4500000476' MODIF ID EB, 0)
* s_vbeln FOR vbak-vbeln DEFAULT '0000000012' TO '007000005'MODIF ID VB.
*
*SELECTION-SCREEN END OF BLOCK a01.
*AT SELECTION-SCREEN OUTPUT. 1)
* IF p_rabuy EQ 'X'. 2)
* LOOP AT SCREEN. 3)
* IF screen-group1 EQ 'VB'. 4)
* SCREEN-INPUT = 0. 5)
* SCREEN-INVISIBLE = 1. 6)
* MODIFY SCREEN. 7)
* ENDIF. 4)
* ENDLOOP. 3)
* ENDIF. 2)
*
* IF p_rasell EQ 'X'. 2)
* LOOP AT SCREEN. 3)
* IF screen-group1 EQ 'EB'. 4)
* screen-INPUT = 0. 5)
* SCREEN-INVISIBLE = 1. 6)
* MODIFY SCREEN. 7)
* ENDIF. 4)
* ENDLOOP. 3)
* ENDIF. 2)
0) 구매문서인 ebeln과 판매문서인 vbeln필드를 범위값(select-options)으로 파라미터를 지정하고/ 각 필드에 초기값을 설정한 후 / IF문을 사용하기 위해 MODIF ID를 EB, VB로 지정해준다.
1) at selection-screen output은 screen 제어할 때 타는 로직 구문입니다.
2) 만약 pa_rabuy 가 선택되어있다면
3) 라디오버튼을 선택할때마다 MODIFY SCREEN이 시행되어야 하기때문에 LOOP AT SCREEN 구문을 사용한다.
4) 만약 SCREEN-GROUP1 이 VB라면
5) SCREEN-INPUT = 0 - 입력 못하게한다(NO) (<->SCREEN-INPUT = 1 - 입력할 수 있게 한다.(YES))
6) SCREEN-INVISIBLE = 1 - 필드에 입력된 값이 안 보이게(INVISIBLE) 한다.(YES)
(<->SCREEN-INVISIBLE = 0 - 필드에 입력된 값이 보이게(INVISIBLE)한다.(NO)
7) (LOOP 돌릴 때마다) MODIFY 를 수행한다.
<결과값>
갈길이 머노...
잘 알려주신 선생님들께 감사드립니다 후후후
'어쩌다 SAP > 어쩌다 ABAP' 카테고리의 다른 글
14일차) ALV - DESONG님 유튜브 보고 정리 - 초급편 (0) | 2020.09.17 |
---|---|
12일차) Structure, View, Table Type, DOMAIN, Data element (0) | 2020.09.11 |
11일차) ABAP Dictionary Overview, Table (0) | 2020.09.09 |
10일차) Debugging (0) | 2020.09.07 |
9일차) 인터널 테이블 데이터 추가, 변경, 삭제, 읽기 (0) | 2020.09.04 |