본문 바로가기

어쩌다 SAP/어쩌다 ABAP

13일차) 멘토님 과제를 풀어보았읍니다....

일단 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 를 수행한다.

 

<결과값>

구매오더 RADIOBUTTON 눌렀을 때 화면
판매오더 RADIOBUTTON 버튼 누른 화면

갈길이 머노...

잘 알려주신 선생님들께 감사드립니다 후후후