2023.07.05

권영은·2023년 7월 5일
0

SAP_수업

목록 보기
4/36
post-custom-banner

Complx Selections

p.524

특이하게 for를 적는다는 것을 볼 수 있으며 so_car -> internal table처럼 보임.
low-high 는 들어가는 field 값이라는 것을 알 수 있음.

  • 만약 LH라고 사용자가 적는다면 sign으로 봤을 땐 i(inclusive_포함하고 EQ와 같단의미로 LH만 찾음
  • AA와 DL의 구간을 선정해서 찾기.
  • Sign 의 E는 Exception (e)를 제외한다는 의미
  • sign에 아무값도 안넣으면 all
  • select options for in으로 사용해야 함.




multiple seletion 클릭 시


airline 과 connection number는 연계되어있어서 하나만 선택해도 아래 값이 같이 들어가는 것을 알 수 있음.


ALB Grid Display 변경방법

utilites - data browser - ALV Grid Display 선택

Exercise 30

p.527
1. BC400_RPS_REP_A 를 copy 해서 ZBC400_01_REP_A 로


헤더라인이 있는 인터널 테이블을 가지고 올 때 [대괄호]를 넣어서 가지고 와야 한다.

icon 더블클릭시 SAP에서 쓸 수 있는 아이콘들이 나와있음.
type pools는 icon이라는 타입에 쓸 수 있는 모든것을 볼 수 있는 것. 원시적인 방법의 신호등이고 클래식 리스트라 인터널 테이블에 있는 값을 한 줄 가져오고 가지고 온 값이 크면 값을 출력 (ALB디자인 방법)


독일어로 보일 때 영어로 변경해주는 방법

언어변경방법


메인테인 오리지널 랭귀지로 눌러주기


Structure and Event Procedures of an Executable ABAP Program

p.534
ABAP report 프로그램의 위치를 알아야 exportable프로그램을 사용할 수 있지만 쓸 일은 없음.

module pool : selection screen + event 들이 들어가 있는 프로그램. Direct program으로 실행이 안되기 때문에 transaction code를 만들어야 함. PAI& PBO를 모두 알아야 사용할 수 있음.

initialization(move A to B)
default : parameters (selection screen을 쓸 때)
value : gc, data, types

event : paramethers 나 data를 선언하는 것은 data object를 만드는 것 instance등을 만드는 creation. 객체지향에서는 instance를 만든다고 얘기하지만 initialization(초기화)는 default, value 를 사용해서 overwrite

아밥프로그램은 이벤트로 처리되는데 이니셜라이즈, 셀렉션 스크린, 스타트 오프 셀렉션 세가지를 메인으로 이뤄지고 어사인먼트를 통해 오버라이트를 하는 단계가 사용자에게 보여주는 단계

  1. at selection-output PAO (process before output)
    사용자가 입력값을 넣기 전
  2. at selection-screen PAI (process after output)
    사용자가 입력값을 넣은 후

Use of ABAP Event

p.536
dynamic : 시스템이 Runtime하는동안 assignment로 값이 바뀐다는 것
main processing : 리스트를 만들게 되는 단계

이벤트 블럭의 특징

  • 이벤트 키가 따로 있다.
  • 내부에 이니셜 내부에 이니셜 불가 ( nest 할 수 없다)
  • 반드시 필요한 것은 아니다
  • 이벤트 블럭의 순서는 중요하지 않다
  • report 프로그램에 있어서 전체를 암묵적으로 (write기반) start of selection 기반 => 디버그를 띄웠을 때 오른쪽 위 이벤트창이 뜨는 것을 볼 수 있음

AT SELECTION-SCREEN Event

p.538

Error messages in AT SELECTION-SCREEN

화면에서는 type check - negative면 error message에서 사용자에게 다시 입력을 할 수 있게 그에 반해서 start-of-selection 에서는 종료
-> event에 따라 처리 환경이 다르다

Syntax Example - Authorization Check with Error Dialog

Exercise 31

p.541
ZBC400_01_REP_A 를 B로 복사

e046(zbc400_01) 다시 클릭



code inspector 해보기

SCI


SCII



create

싱글로 바꾼 뒤 검색할 프로그램 넣어주기


프로그램1번에서는 파라미터 1만 있음.

프로그램2번에서는 파라미터 1개를 받아서 select scarr로 취득해오는 경우
1번의 프로그램은 의미가 없음..

--> 극단적으로 프로그램을 두가지로 나누었을 경우 1번의 파라미터를 2번 프로그램에
주고 싶을 때 actual를 formal에 심는 경우 (내 프로그램이라 가능 user session 에 external session을 실행한 것...)

spa abap shard 메모리 3개
sap abpa 메모리 => 프로그램 두개를 실행 시킬 때 exter session 1, 2 이 돌아가는 것 ( dialog) but user session 은 1. but 프로그램은 동시 6개 밖에 못돌림. 동시에는 불가능 순차적으로 6개 운영 가능(run) ==> 동시에 돌리기 위해 메모리가 있어야함. 그 메모리를 SAP memory라고 함

but SAP memory는 파라미터를 하나밖에 못넣거 건수가 많아도 보낼 방법이 없음.
따라서 abap memory(프로그램 창 1마다 1씩 붙어있음)를 사용해야 함.


p.562-567
데이터는 콜
파라미터나 셀렉션은 서브밋이 더 낫다.


Data Transfer Using an Internal Table, Application Example

p.568


ABAP Compiler and Runtime Object

디벨롭먼트 오브젝트가 레파지토리에 저장되고


Generated Version

디벨롭먼트 오브젝트를 제너레이트할때 런타임 오브젝트를 만드는데 이런타입 오브젝트를 로드라고 하며 로드는 바이트코드 스테이트먼트로 구성되어있다. -> 헥사코드를 바이너리 코드로 바꾸는데 링킹이라고 하는 형태 ( 기존의 컴파일러언어는 내부적으로 씨로 바꿔서 바이너리로 바뀌면서 실행가능한 프로그램으로 바뀌는 것


inactive Sources

p.581
완성되면 엑티브 - 제너레이트버전 - 액티브와 인액티브가 동시에 만들어지고 액티브가 운영되는 것.

동시에 두개의 버전이 존재하며 항상 운영하는건 active.
프로그램의 변경이 있을 경우 inactive를 사용해서 수정 전과 후를 비교하는 것이 가능하다.


Program Activation

p.582
바이너리 바이트 코드를 로드라고 하며 로드는 어떻게 생성되는지 간단하게 설명


Program Execution Area (PXA) and Roll Area

p.583
수정 가능한 부분과 불가능한 부분을 생각하면 PXA는 실행됨에 있어서 수정 가능한 부분들이 들어가 있고 수정 블가능한 베리어블은 Roll Area에 들어가 있음.


st02 - tcode

Detail Analysis Menu





Shared , ABAP, SAP memory .. 등 관리하고 확인할 수 있음


Memory Management from the Program Perspective

user sessioin에는 sap memory가 하나임을 알 수 있음
한개의 exterrnal session에서 여러가지 프로그램이 돌아갈때 (서브밋이나 파라미터) 또는 트랜잭션을 불러서 인터널 테이블을 통해서 할때는 아밥메모리를 통해서 교환할 수 있다는 것을 그림으로 볼 수 있음.

  • internal session은 메모리로 얘기하면 stack memeory. 메인에서 서브루틴을 하나 만들면 한개의 인터널 그 위에 한개의 프로그램이 돌고 빠지고 다시 프로그램을 운영하는 개념 . 제일 먼저 들어온게 제일 먼저 빠짐1234가 들어갈때 4321 순으로 실행돼고 빠짐


    Program Groups

    p.585


    Memory Management for Program Calls

    프로그램을 콜할 때 메모리 모양은 다 다르다.
    하지만 움직이는 모양만 알고 넘어가도 됨.

    프로그램 호출이 이뤄지기 전에 메모리에 메모리가 어떤 상황이라고 전제함.


    Memory Management for Calls of FUnction Modules and Method

    메인프로그램에서 모듈화를 부를 경우


    Same function Group in Different inthernal sessions

    internal session에서 하나하고 Submit해서 프로그램을 하는데 왼쪽그림이 아닌 오른쪽 프로그램이 붙은 것 ( 모듈화) 그런 경우 어떤 모양이 이뤄지는지, 어떤 문제가 발생할 수 있는지의 조건

    펑션그룹을 부른적 없고 펑션모듈을 불렀음 펑션 그룹 밑에 펑션모듈은 n개가 있음. 그 중 하나의 모듈만 불러도 그 펑션 그룹 전체가 내 메모리에 올라오기 때문.

한 개의 프로그램이 펑션 그룹에 모듈을 불렀는데 메인에서 서브밋으로 다른 프로그램을 불렀을 때 한개의 인터널 세션에서 같은 펑션그룹을 공유하지 않는다는 것. (각자 펑션그룹을 올린다는 것)

메모리는 2개가 동시에 접근하면 깨지는 것을 방지하기 위해서 인터널 세션이 새로 올라오면 펑션 모듈도 새로 올린다는 것 .


Same Function Group or Class Within an Internal Session

p.594

메인 프로그램이 펑션 두개에 접근해 동작할 때 메인프로그램이 다른 펑션그룹을 끼고 펑션에 들어가려고 할 때 3번 프로그램을 버퍼를 치지만 2번 프로그램이 의도치않게 그 데이터를 초기화하거나 덮어써버림. 그런 경우 종료되거나 데이터가 사라지는데 찾을 수 없음.


External Subroutine Call

p.595
메인프로그램에 서브루틴을 퍼폼해서 스택을 올리는데
프로그램을 쪼개서 서브루틴 e1, e2해서 부르는걸 external program이라고 함

나중에 메인프로그램 그룹에서 1를 같이 쓸 수 있는 장점이 있음.


Data Transfer Options


Access to ABAP Memory

p.598
아밥메모리로 교환하고 싶으면 export
다른 프로그램에서 import work area 이름과 메모리 아이디를 받아서 쓸 수 있음


BC402MCAR

leave to transaction code를 보기 위한 예시 P.562 참고

factory method 를 쓰면 class 이름에 method

즉 메인 프로그램이 또 다른 프로그램을 하나 던지는 것
아밥메모리에서 하는 것

 SUBMIT bc402_mms_flight_list
               AND RETURN
               WITH pa_car EQ ls_conn-carrid
               WITH so_con EQ ls_conn-connid
               WITH pa_list EQ space.코드를 입력하세요


해당 코드를 보면 SUBMIT ,,, AND RETURN CODE임을 알 수 있음.


Exercise

p.603
se38 - display 확인


프로그램이 눌러지면 쓰레기통 옆 copy를 선택 함

망치클릭

스크린넘버 100 더블클릭


method 사이에

    DATA lt_sflight TYPE TABLE OF sflight.

    DATA ls_conn LIKE LINE OF gt_conn.

    READ TABLE gt_conn INTO ls_conn INDEX row.

    CASE column.
      WHEN 'CARRID'.

        SET PARAMETER ID 'CAR' FIELD ls_conn-carrid.

        CALL TRANSACTION 'BC402MCAR'
        AND SKIP FIRST SCREEN.

      WHEN OTHERS.

        SUBMIT bc402_mms_flight_list
               AND RETURN
               WITH pa_car EQ ls_conn-carrid
               WITH so_con EQ ls_conn-connid
               WITH pa_list EQ space.

        IMPORT flights TO lt_sflight
               FROM MEMORY ID 'BC402_FLIGHTS'.

        IF sy-subrc <> 0.
          MESSAGE e361.
        ELSE.

          CALL FUNCTION 'BC402_DISPLAY_TABLE'
            CHANGING
              ct_table = lt_sflight.
        ENDIF.

        FREE MEMORY ID 'BC402_FLIGHTS'.

    ENDCASE.

값을 넣어줌

profile
SAP/ ABAP Student
post-custom-banner

0개의 댓글