do.
write:/ sy-index.
if sy-index >= 10. exit. endif.
ENDDO.
결과
1
2
3
4
5
6
7
8
9
10
F5: Single Step
현재 실행 중인 명령어를 한 단계씩 실행합니다. 이 기능을 사용하면 코드의 흐름을 자세히 살펴보고, 각 단계에서 변수의 값이 어떻게 변하는지 확인할 수 있습니다. 함수 모듈 호출 시, 호출된 함수 모듈 내부로 진입할 수 있습니다.
F6: Execute
현재 라인을 실행하고 다음 라인으로 이동합니다. 함수 모듈이나 서브루틴 호출 시, 내부의 코드에 진입하지 않고 호출된 함수 모듈이나 서브루틴이 완료될 때까지 계속 실행됩니다.
F7: Return
현재 서브루틴이나 함수 모듈을 종료하고 호출된 위치로 돌아갑니다. 함수 모듈이나 서브루틴이 끝날 때까지 실행을 기다리며, 호출한 코드로 돌아가서 계속 디버깅을 진행할 수 있습니다.
F8: Continue
디버깅 세션을 계속 진행하여 중단점을 설정한 위치까지 또는 프로그램 실행이 종료될 때까지 계속 실행합니다. 현재 위치에서 디버깅을 중단하고 코드 실행을 계속할 수 있습니다.
SAP ABAP에서 SY-INDEX
, SY-DBCNT
, SY-TABIX
는 프로그램 실행 중에 유용하게 사용되는 시스템 필드입니다. 각각의 용도는 다음과 같습니다:
SY-INDEX
:
LOOP AT itab INTO wa.
, 이 루프 안에서 SY-INDEX
는 현재 루프의 순번을 나타냅니다. LOOP AT itab INTO wa.
WRITE: / SY-INDEX, wa-field.
ENDLOOP.
SY-DBCNT
:
DELETE FROM dbtab WHERE field = 'value'.
WRITE: / 'Records deleted:', SY-DBCNT.
SY-TABIX
:
SY-TABIX
는 LOOP AT
루프 내에서 사용됩니다.LOOP AT itab INTO wa.
WRITE: / SY-TABIX, wa-field.
ENDLOOP.
이 시스템 필드는 ABAP 프로그램의 흐름을 제어하고, 데이터베이스 작업을 관리하는 데 유용하게 사용됩니다. 각 필드는 특정 작업에서 현재 상태를 추적하는 데 도움을 줍니다.
message i000(zt_msg_03) with sy-datum.
&1, &2, &3, &4: placeholder
결과
message i001(zt_msg_03) with sy-datum sy-uzeit sy-mandt sy-uname.
결과
message class 생성/관리
data: carrid1 type s_carr_id,
carrid2 like carrid1.
BREAK-POINT.
carrid1 = 'AA'.
write:/ carrid1.
carrid1 = 'LH'.
write:/ carrid1.
carrid1 = 'SQ'.
write:/ carrid1.
carrid1 = 'UA'.
write:/ carrid1.
carrid2 = carrid1.
write:/ carrid2.
f8키
확인
se37: function builder
se24: class builder
subroutine (local): se80
function group / function module (global): se80 -> se37
class / method (global): se24
Call by Value (값에 의한 호출):
정의: 실제 데이터의 값 복사본이 프로시저에 전달됩니다.
특징: 프로시저 내에서의 변경이 원본 데이터에 영향을 미치지 않습니다.
용도: 데이터가 변경되지 않도록 할 때 적합합니다.
Call by Value and Result (값과 결과에 의한 호출):
정의: 값 복사본이 전달되며, 프로시저 내에서의 변경이 호출 후 원본 변수에 반영됩니다.
특징: 프로시저 내에서의 변경이 원본 데이터에 영향을 미칩니다.
용도: 프로시저에서 값을 수정하고 그 결과를 원본 변수에 반영하고자 할 때 사용됩니다.
Call by Reference (참조에 의한 호출):
정의: 데이터의 참조가 프로시저에 전달됩니다.
특징: 프로시저 내에서의 변경이 원본 데이터에 직접 영향을 미칩니다.
용도: 프로시저에서 원본 데이터를 수정해야 할 때 사용됩니다.
DATA: c1(2), c2(2), c3(2).
c1 = c2 = c3 = 'AA'.
WRITE:/ c1, c2, c3.
PERFORM subroutine1 USING c1
CHANGING c2
c3.
WRITE:/ c1, c2, c3.
FORM subroutine1 USING VALUE(p_c1) " call by value
CHANGING VALUE(p_c2) " call by value and result
p_c3. " call by reference
p_c1 = 'BB'.
p_c2 = 'BB'.
p_c3 = 'BB'.
ENDFORM.
결과
AA AA AA
AA BB BB
f8 눌러서 실행
패턴 버튼 클릭
bc400_mos_power 입력
주석 해제하고 파라미터 입력
DATA: value1 TYPE bc400_compute_base VALUE 2,
value2 TYPE bc400_compute_power VALUE 4,
result TYPE bc400_compute_result.
CALL FUNCTION 'BC400_MOS_POWER'
EXPORTING
iv_base = value1
iv_power = value2
IMPORTING
ev_result = result
exceptions
power_value_too_high = 1
result_value_too_high = 2
OTHERS = 3.
IF sy-subrc <> 0.
write:/ 'Wrong data.'
ELSE.
write:/ result.
ENDIF.
FUNCTION ZT_03_FM.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(IV_ACT) TYPE BC400_ACT
*" REFERENCE(IV_MAX) TYPE BC400_MAX
*" EXPORTING
*" REFERENCE(EV_PERCENTAGE) TYPE BC400_PERC
*" EXCEPTIONS
*" DIVISION_BY_ZERO
*"----------------------------------------------------------------------
if iv_max = 0.
ev_percentage = 0.
raise division_by_zero.
else.
ev_percentage = iv_act / iv_max * 100.
endif.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Report ZT_03_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zt_03_test.
DATA: value1 TYPE bc400_act VALUE 1,
value2 TYPE bc400_max VALUE 3,
result TYPE bc400_perc.
CALL FUNCTION 'ZT_00_FM'
EXPORTING
iv_act = value1
iv_max = value2
IMPORTING
EV_PERCENTAGE = result
EXCEPTIONS
DIVISION_BY_ZERO = 1
OTHERS = 2
.
case sy-subrc.
when 1.
write:/ 'error in function module.'.
endcase.
write:/ result.
se24: class builder
f8키
DATA: value1 TYPE bc400_compute_base value 2,
value2 TYPE bc400_compute_power value 4,
result TYPE bc400_compute_result.
TRY.
CALL METHOD cl_bc400_compute=>get_power
EXPORTING
iv_base = value1
iv_power = value2
IMPORTING
ev_result = result.
CATCH cx_bc400_power_too_high .
write:/ 'power too high'.
CATCH cx_bc400_result_too_high .
write:/ 'power too high'.
ENDTRY.
DATA: value1 TYPE bc400_act value 1,
value2 TYPE bc400_max value 3,
result TYPE bc400_perc.
CALL METHOD zcl_03_t_compute=>get_percentage
EXPORTING
iv_act = value1
iv_max = value2
IMPORTING
ev_percentage = result
.
write:/ result.