메뉴 건너뛰기

SAP 한국 커뮤니티



abap 교육정리

열공아밥 2010.02.02 06:52 조회 수 : 16427 추천:2

http://hanoori.pe.kr/122?srchid=BR1http%3A%2F%2Fhanoori.pe.kr%2F122































3-2장 .

SE11 -> SE16으로 볼때...

SPFLI  Table 을 이용하여 확인을 하여본다.

파란색은  Key

노란색은 Check Table을 가지고 있음을 뜻한다.

spfli -> zkdn_spfli08 로 복사.

Single insert를 하기 위하여.

z08_kdn_20091007_1  의 Excutable program을 만든다.


REPORT  z08_kdn_20091007_1.

DATA: wa1 TYPE zkdn_spfli08.

SELECT SINGLE * FROM spfli INTO wa1.

INSERT into zkdn_spfli08 values wa1.

WRITE: / sy-subrc.


이렇게 하고 SE16 에서 Table 에 데이터가 들어가 있는지 확인해본다.

0 이 나오고 데이터가 삽입 된 것을 볼 수 있다.


자 이제 전체 데이터를 삽입 하는 것을 해보자.



DATA: wa1 TYPE zkdn_spfli08,
              it1 TYPE TABLE OF zkdn_spfli08.

SELECT *
  FROM spfli
     INTO TABLE it1.

INSERT zkdn_spfli08
  FROM TABLE it1.
 

 
업데이트도 해보자~



DATA: wa1 TYPE zkdn_spfli08,
              it1 TYPE TABLE OF zkdn_spfli08.

SELECT *
   FROM spfli
    INTO TABLE it1
 WHERE  carrid EQ 'AA'.


UPDATE zkdn_spfli08
       SET cityfrom = 'SEOUL'
   WHERE carrid EQ 'AA'.



modifying single Record / Several Records 중요합니다.


원래는 modify가 인터널 테이블만 수정하게 되어있거든요

하지만 데이터베이스에도 적용이 됩니다.

있으면 업데이트 없으면 인서트~


MODIFY zkdn_spfli08 FROM TABLE it1.


update는 있는 데이터에 대해서만 적용을 할 수 있지만...

modify 는 없는 데이터도 넣어 줄 수 있다.

oracle 의 merge insert 와 똑같다.

14 page

Rollback 을 일으킬수 있는 방법은 2가지 방법.

☆★☆ ,, causing a database rollback.

1. Sending a termination dialog message (A-Message)

2. Using the ROLLBACK WORK ABAP Statement.



Message A Type 을 이용하는 방법과 Abap Statement 인 Rollback Work 를 이용하는 방법

이 있는데 .. Rollback Work 를 이용하면 DB는 Rollback 되지만 프로그램이 종료되지 않는 문제가 있다.

이 때문에 A-Message 를 사용하는것이 올바르다.

terminates program  - program 을 끝낸다.

Page 44

LUW - Logical Unit of Work


Commit WORK

여기서 시험문제가 간혹 나오는데...

각 데이터베이스에 대한 테이블들은 하나인것처럼 움직이게 되고 이것이 바로 LUW이다.

Hint

Due to the abobe-mentioned, implicit DB commits, changes that belong to an

SAP LUW may not be placed in different dialog steps( dialog step = program

processing after a screen). The reson is because these steps would thus not because

within a DB LUW.


Locks Concept

1. Lock 걸고                2. Read 하고                   3.  Change 하고                     4.    Lock 풀어라

E-WP(LockTable)

1. Lock Object(se11에서 생성)  / (EZ* / EY*)                                   
  
                                                                                                            
      Lock mode   ┌   E : Write Lock                           - 누적 O            
                         ├   S : Shared Lock(Read Lock)      - 누적 O               
                         └   X : Exclusive Write Lock            - 누적 X                 --------------------┼-------------------
                                                                                                             
     Lock Parameter - (Lock Argument.)Key Field                               
                                 Key field 들의 묶음.                                                                  


    예를 들어 SPFLI Table 을 보면
    MANDT, CARRID , CONNID 가  Key Field 인데...
    MANDT 만 제공 하였을때와  MANDT , CARRID , CONNID 까지 모두를 제공 하였을 때의 
    범위가 틀리다는 이야기이다.

2. Lock Module.

 
Lock Object를 Active(불) 될때  Lock Module 이 만들어 진다.
  2개   ENQUEUE_EZ* ---------(Function Module) Lock 잡기
          DEQUEUE_EZ* ---------(Function Module) Lock 풀기


3. Using Lock ( Monitering : sm12)


(프로그램에서 호출)


















 프로그램 내에서 호출  서로다른 user가 호출
 E :누적O  Lock걸 수 O  Lock 걸 수 X
 X :누적X  Lock걸 수 O  Lock 걸 수 X
 S :누적O  Lock걸 수 O  Lock 걸 수 O


4. flush_enqueue (Lock Container)     : lock Container 의 데이터를 lock Table 다 쏟아 낸다.(하나라도 안 들어가면..  안 들어간다.)
  Lock Container (RESET_ENQUENE) : lock Container 의 데이터를 초기화 시킨다.


POC 방식 ...:  Perform on commit       

Page 85 (Setting and Releasing Locks - Timecourse)
         

1. Setting locks for the data to be processed.

2. If the lock has been successfully set , read the current data from the database.

3. Change the program data (user inputs) and update the changes to the database

4. Release set locks once again.

이 원칙을 잘 정리해 놓으셔야 합니다.


         
         

Lock 을 먼져 해야하는 이유는?


Lock 을 걸거나 Lock 이 걸린 것을 확인 하는 작업을 먼져 하지 않고 Read를 해버리면...

다른 사람이 같은 테이블을 건드리거나 할때 변경이 일어난 데이터를 가져와서 작업 할 수도 있고

-- 이는 동기화에 대한 문제이다. --

고로 Lock 을 먼져 걸고 모든 작업을 할 수 있도록 해야한다.

lock object 를 생성합니다.

se11 로 이동후 이름은 EZKDN_SPFLI08 로 준다.




Lock Parameter 에 key Field 를 어떻게 주느냐에 따라서 ... 데이터의 양이 틀리다.

키가 3개인데 3개를 다 적용하게 되면 데이터는 범위가 작아지고 1개만 적용하면 데이터의 범위가 더 많아지게 된다.


Lock Object 를 적용 시킨것은 se37 (function module 이기 때문에)  Function Module       ENQUEUE_EZKDN_SPFLI08에 접근하여

확인 할 수 있다.



* SM12 를 이용해서 Table 을 확인 할 수 있다.

Program 을 실행 시키고 Table 명을 주면 어떤 계정이 Table 을 작업하고 있는 것을 확인이 가능하다.


SE11을 이용해서 LOCK OBJECT를 만들어 주고...

LOCK MODULESE38 및 프로그램에서 PATTERNFUNCTION 에서 불러 낸다.

E, X, S  중 어떤 것으로 LOCK 을 실행하는지에 따라 적용이 틀리다.


_COLLECT 를 X 로 지정하면 LOCK 들을 LOCK CONTAINER 에 담아둔다.

FLUSH_ENQUEUE 라는 FUNCTION 을 실행시켜서 작업.

LOCK CONTAINER 를 삭제 하게 하려면...

교재 83  의 RESET ENQUEUE 를 사용한다.


                      function Module : DEQUEUE_ALL 을 하면 Lock 을 모두 풀 때...
  (A, B, C)



(오후)
100 Page 시작

맨 마지막에 지금까지 update해야 할 것들을 묶어서 한방에 update 를 하게 된다.

- last Dialog step


*CHANGE

~모아서 처리.

 
1. 일반적인 방식(Program 내부:  POC 방식) - WITHIN THE APPLICATION PROGRAM
        EX) PERFORM xxxx ON COMMIT.
        바로 Update 를 하지 않고, Commit work 가 수행될 때 일괄 처리
        SIMPLE ... QUICKLY , LIGHT LUW 를 사용해라.

 
  2. 진보적 방식(Function Module)
        Attribute (update check)
        내부 update 문장들...
           rollback 처리 Message A Type .

 
 

 
  COMMIT WORK 설명 중 짠 PROGRAM - Z08_KDN_20091007_3
 

DATA: wa1 TYPE zkdn_spfli08.

SELECT SINGLE *
  FROM zkdn_spfli08
  INTO wa1
 WHERE carrid = 'AA'
  AND connid = '0007'.

wa1-cityfrom = 'DAEJEON'.
wa1-cityto = 'KWANGJU'
PERFORM update_zkdn_spfli001 ON COMMIT.
COMMIT WORK.
perform update_zkdn_spfli08.
*&---------------------------------------------------------------------*
*&      Form  update_zkdn_spfli08
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM update_zkdn_spfli08 .
  MODIFY sairport FROM wa1.
ENDFORM.                    " update_zkdn_spfli08



Page 109

PROCESS : WRITING REQUESTS

* CALL Function 'XXX' In UPDATE Task
cflcct

Log Table 에  Request 형태로 쌓아지게 된다.

Commit work 을 만날때 수행(일괄처리)


SE37 로 이동.

ZKDN_UPD08_1 로 만들고

attributes tab에

update module 선택 해주기.

FUNCTION 에서 IMPORT 되는 IM_WA 에 대해서

PASS VALUE 를 CHECK 해주기 바람.

SOURCE CODE 에 값을 넣어주기.

       
MODIFY zkdn_spfli08 FROM im_wa.

        IF sy-subrc NE 0.
          MESSAGE a002(z08_kdn) WITH 'could not be update'.
        ENDIF.



PROGRAM 짜기...


DATA: wa1 TYPE zkdn_spfli08.

      SELECT SINGLE *
        FROM zkdn_spfli08
        INTO wa1
       WHERE carrid = 'AA'
        AND connid = '0007'.

      wa1-cityfrom = 'SEOUL'.
      wa1-cityto   = 'BUSAN'.
     
*pattern 을 사용하여...  ZKDN_UPD08_1 을 입력하고~  알맞은 값을 넣어준다.

      CALL FUNCTION 'ZKDN_UPD08_1' IN UPDATE TASK
        EXPORTING
          im_wa = wa1.

      COMMIT WORK.

     

update 에 대한 function module 을 사용하여 작업을 해 보았다.

log table 에 값을 넣어 두었다가 update process 에서 적용을 하더라....



그림 51 밑에 보세요 114 page


Both procedures

delete all previous update flags

delete all previously set locks,

discard all of the updates executed in the current DB LUW,

and discard all of the form routines registered using "PERFORM ON COMMIT".



* Program 까지 함께 죽이려면 Message Type A 를 사용하라.

* ROLLBACK WORK 이나  COMMIT WORK 은 function module에 적지 않는다.


page 117

* update mode 3가지.


1. Asynchronous Update


D - WP                                     U-WP

LUW1

COMMIT WORK   ->       바로 이관

LUW2



2. Synchronous Update



D-WP                                                    U-WP

LUW1

COMMIT WORK AND WAIT         -이관이 될 동안 LUW2 를 실행 안 하고 기다리고 있다.


LUW2


3. Local Update


D-WP
--------------------------
SET UPDATE TASK LOCAL
--------------------------
LUW1

commit work

LUW2
---------------------------


*기다리고 빠르게 느껴진다. (메모리 관리를 한다.)
   


    log Table 에 들어가게 하려면...

    CFIUT 를 해야 request 형태로 들어간다.
       


Function Module 의 내부 :  Attribute


V1 ┌  1번째.   
     │             Priority 중요성 높음 (Async , sync ,local)
     └  2번째.
      
V2  ┌  3번째.
      │            Priority 중요성 낮음 (Async , sync )
      └  4번째.


* V1 은 Memory 사용 , V2는 Memory 미사용.


V1 이 성공해야 V2가 실행... 된다....

Lock 메카니즘은 .. V1까지 ... 적용된다.

sm13에서 확인이 가능하다.

update module 에.. V1update 에서

Page 136

submit 은 report program 만 호출이 가능함.

돌아오지 못함.

external Session 이 열려서 function Call.. 예~

패스패스패스

Page 151

Navigation

Starting new Task 'T1'

  External Session 을 하나 더 열어서 실행.
 
  Call Function
 
  Submit and Return
 
  Call Transaction


땀돌이 08 풀어보기

An Authority-Check 는 At selection-Screen 에서 사용된다.



 
 
     0   0



















이 글의 관련글(트랙백) 주소 ::    http://hanoori.pe.kr/trackback/122



> > > >
관련글 쓰기

































아이디 
비밀번호 
홈페이지 

비밀글   











 











<<이전 | 1 ... | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 ... | 118 | 다음>>





별책부록's Blog is powered by Daum


 





























번호 제목 글쓴이 날짜 조회 수
1104 DBCO-외부 DBMS 연결방법입니다. [6] file 신촌독수리 2010.05.12 15063
1103 Abap CodeInspector [4] file magicsy69 2010.05.04 10034
1102 <img src=c.gif>SAP Tech Table[추천:열공아밥][추천:유리선율] [24] file magicsy69 2010.05.04 9295
1101 Popup 관련 소스 [16] file 사장님 2010.05.01 12103
1100 <img src=d.gif>Class Up-Download 프로그램 소스[추천:e-abap] [23] file 버미! 2010.04.28 9998
1099 <img src=d.gif>ABAP 기초 자료[추천:열공아밥] [41] file 사장님 2010.04.06 10476
1098 table edit 로 모드전환 하는 방법입니다. [18] file 알짜 2010.03.10 11125
1097 <img src=d.gif>Standard 계산기 Function이 있었네요..^^;[추천:e-abap] [22] file UKS 2010.03.05 10581
1096 SAP BASIS - 영어 면접시 질문 답변 리스트 [8] file watchain 2010.03.03 8796
1095 <img src=c.gif>Smartforms의 Style sheet 입니다.[추천:e-abap][추천:보나] [11] file 버미! 2010.02.27 10858
1094 시스템 변수 정리 [17] file 큐라 2010.02.16 11371
1093 <img src=c.gif>ALV Local 파일 다운 로드시 dump 관련.[추천:e-abap][추천:열공아밥] [19] file 곰님MAX 2010.02.18 14989
1092 <img src=d.gif>Dictionary[추천:e-abap] [4] file 아밥 기다리 2010.02.17 9132
1091 트리 생성 [14] file 아밥 기다리 2010.02.17 11893
1090 <img src=d.gif>SD/MM 각종 Description 가져오는 Select문[추천:열공아밥] [15] file 버미! 2010.02.11 8486
1089 <img src=d.gif>SAP메일 발송에 대한 세팅입니다.[추천:e-abap] [24] file 도련님 2010.02.08 15133
1088 <img src=b.gif>DB연결 자료 다시 올립니다. 내용은 기존이랑 같습니다. DLL화일 경로만 추가했고요..DLL화일도 같이 올릴게요[추천:열공아밥] [14] file 도련님 2010.02.04 10641
1087 아밥 초보들 한테 필요한 펑션 공유합니다 [33] file 아바바바 2010.02.04 10867
1086 <img src=b.gif>스마트폼 SAP 교재입니다.[추천:e-abap][추천:열공아밥]img src=b.gif> [32] file 오휘..... 2010.02.05 12094
» abap 교육정리 [5] 열공아밥 2010.02.02 16427