SAP/ABAP

ABAP Stored Procedure 호출방법

그녀는애교쟁이 2015. 1. 15. 11:00
반응형

오늘은 오랜만에 ABAP 에 관련된 내용을 포스팅한다. 오늘은 DBCO를 이용한 MS-SQL Stored procedure 를 호출하는 방법이다. 이미 F1을 누르면 설명과 샘플이 나오나 F1 보다 검색을 사용하는 분들을 위해서 포스팅 하고자 한다. 그냥 SQL 을 써도 되지만 Stored Procedure 는 이미 SQL server에서 컴파일이 되어 있고 내용이 변경이 되면 ABAP에서 SQL 을 수정하지 않아도 SQL Server 에서만 변경하면되니 참으로 간단하다.


EXEC SQL 의 예제에 나온 예문이다. ( 오라클 )


PARAMETERS incprice TYPE sflight-price. 

EXEC SQL. 
  CREATE OR REPLACE PROCEDURE increase_price (x IN NUMBER) IS 
  BEGIN 
    UPDATE sflight SET price = price + x 
           WHERE mandt = '000'; 
  END; 
ENDEXEC. 

EXEC SQL. 
  EXECUTE PROCEDURE increase_price ( IN :incprice ) 
ENDEXEC. 


EXEC SQL 의 예제에 나온 예문이다. ( infomix )


DATA scarr_carrid TYPE scarr-carrid. 
SELECT-OPTIONS s_carrid FOR scarr_carrid NO INTERVALS. 
DATA s_carrid_wa LIKE LINE OF s_carrid. 

DATA name TYPE c LENGTH 20. 

TRY. 
    EXEC SQL. 
      CREATE FUNCTION selfunc( input CHAR(3) ) 
        RETURNING char(20); 
        DEFINE output char(20); 
        SELECT carrname 
               INTO output 
               FROM scarr 
               WHERE mandt  = '000' AND 
                     carrid = input; 
        RETURN output; 
        END FUNCTION; 
    ENDEXEC. 
    LOOP AT s_carrid INTO s_carrid_wa 
                     WHERE sign = 'I' AND option = 'EQ'. 
      TRY. 
         EXEC SQL. 
            EXECUTE PROCEDURE selfunc( IN  :s_carrid_wa-low, 
                                       OUT :name ) 
          ENDEXEC. 
          WRITE: / s_carrid_wa-low, name. 
        CATCH cx_sy_native_sql_error. 
          MESSAGE `Error in procedure execution` TYPE 'I'. 
      ENDTRY. 
    ENDLOOP. 
    EXEC SQL. 
      DROP FUNCTION selfunc; 
    ENDEXEC. 
  CATCH cx_sy_native_sql_error. 
    MESSAGE `Error in procedure handling` TYPE 'I'. 
ENDTRY. 

ABAP 의 도움말이 잘 되어 있어서 검색 사이트에 안 물어보는건지 알 수가 없다. 모를 때는 F1을 먼저 눌러서 예제가 없는지 확인하고 검색을 하는 습관을 들여야겠다. 






ABAP 도움말 Stored Procedure 위치