2011년 3월 25일 금요일
2011년 3월 23일 수요일
아웃풋 값의 자리수만큼 0으로 채우기
DATA lv_zone1 LIKE tzone-zone1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_mod_cells-value
IMPORTING
output = lv_zone1.
lv_zone1 이라는 변수의 설정된 자리수에 따라 숫자 앞을 0으로 채워준다.
ex) 자리수가 5자리인데 1을 입력하면 00001 로 만들어줌
반대는,
'CONVERSION_EXIT_ALPHA_OUTPUT' 을 사용하면 된다.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' 가 안먹히는 경우
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' 함수는
만들어진 인터널 테이블 속성을 그대로 가져와서 필드카탈로그를 만드는 함수인데
만약 인터널 테이블이 types 로 만들어지면 작동되지 않는다.
DATA ... OCCURS 0 으로 만들어진 인터널 테이블만 적용이 된다.
그렇기 때문에 따로 필드 카탈로그를 설정해 줘야 한다.
PERFORM field_settingv_call USING :
'S' 'ICON' ' ' ,
' ' 'SCRTEXT_S' TEXT-T01 ,
' ' 'COLDDICTXT' 'S' ,
' ' 'JUST' 'C' ,
'E' 'KEY' ' ' ,
'S' 'LIFNR' ' ' ,
' ' 'SCRTEXT_S' TEXT-T02 ,
' ' 'COLDDICTXT' 'S' ,
'E' 'KEY' 'X' .
만들어진 인터널 테이블 속성을 그대로 가져와서 필드카탈로그를 만드는 함수인데
만약 인터널 테이블이 types 로 만들어지면 작동되지 않는다.
DATA ... OCCURS 0 으로 만들어진 인터널 테이블만 적용이 된다.
그렇기 때문에 따로 필드 카탈로그를 설정해 줘야 한다.
PERFORM field_settingv_call USING :
'S' 'ICON' ' ' ,
' ' 'SCRTEXT_S' TEXT-T01 ,
' ' 'COLDDICTXT' 'S' ,
' ' 'JUST' 'C' ,
'E' 'KEY' ' ' ,
'S' 'LIFNR' ' ' ,
' ' 'SCRTEXT_S' TEXT-T02 ,
' ' 'COLDDICTXT' 'S' ,
'E' 'KEY' 'X' .
2011년 3월 21일 월요일
ALV 그리드 화면 동기화 함수
그리드 껍데기를 인터널 테이블과 동기화
form check_changed using p_grid type ref to cl_gui_alv_grid.
data : l_valid, l_refresh.
call method p_grid->check_changed_data
importing
e_valid = l_valid
changing
c_refresh = l_refresh.
endform.
인터널 테이블 내용을 그리드 껍데기와 동기화
form refresh_grid using p_grid type ref to cl_gui_alv_grid.
data: ls_stable type lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
call method p_grid->refresh_table_display
exporting
i_soft_refresh = 'X'
is_stable = ls_stable.
endform.
form check_changed using p_grid type ref to cl_gui_alv_grid.
data : l_valid, l_refresh.
call method p_grid->check_changed_data
importing
e_valid = l_valid
changing
c_refresh = l_refresh.
endform.
인터널 테이블 내용을 그리드 껍데기와 동기화
form refresh_grid using p_grid type ref to cl_gui_alv_grid.
data: ls_stable type lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
call method p_grid->refresh_table_display
exporting
i_soft_refresh = 'X'
is_stable = ls_stable.
endform.
2011년 3월 18일 금요일
인터널 테이블, 워크 에어리어 선언방법
* 구조를 먼저 선언하고 TYPE STANDARD TABLE OF 로 선언하는 방법
워크 에어리어는 생성된 인터널 테이블로부터 LIKE LINE OF 로 선언
TYPES : BEGIN OF g_ty_process, "화면에 출력할 정보를 담을 ITAB
MCODE LIKE ZTCM0140-MCODE, "모듈 코드
MNAME LIKE ZTSD0004-TEXT2, "모듈 이름
PCODE LIKE ZTCM0141-PCODE, "프로세스 코드
PNAME LIKE ZTCM0141-PNAME, "프로세스 이름
END OF g_ty_process.
DATA : gt_process TYPE STANDARD TABLE OF g_ty_process. "인터널 테이블
DATA : gs_process LIKE LINE OF gt_process. "workarea
* OCCURS 0 을 이용해서 바로 선언하는 방법(헤더라인 포함)
인터널 테이블에 헤더라인이 존재해서 인터널 테이블이자 워크에어리어 같이 사용됨
Loop 문으로 인터널 테이블에서 하나씩 값을 꺼내면 그 값이 헤더라인에 저장
DATA : BEGIN OF gt_lang OCCURS 0,
MCODE LIKE ZTCM0140-MCODE, "모듈 코드
MNAME LIKE ZTSD0004-TEXT2, "모듈 이름
PCODE LIKE ZTCM0140-PCODE, "프로세스 코드
PNAME LIKE ZTCM0141-PNAME, "프로세스 이름
END OF gt_lang.
워크 에어리어는 생성된 인터널 테이블로부터 LIKE LINE OF 로 선언
TYPES : BEGIN OF g_ty_process, "화면에 출력할 정보를 담을 ITAB
MCODE LIKE ZTCM0140-MCODE, "모듈 코드
MNAME LIKE ZTSD0004-TEXT2, "모듈 이름
PCODE LIKE ZTCM0141-PCODE, "프로세스 코드
PNAME LIKE ZTCM0141-PNAME, "프로세스 이름
END OF g_ty_process.
DATA : gt_process TYPE STANDARD TABLE OF g_ty_process. "인터널 테이블
DATA : gs_process LIKE LINE OF gt_process. "workarea
* OCCURS 0 을 이용해서 바로 선언하는 방법(헤더라인 포함)
인터널 테이블에 헤더라인이 존재해서 인터널 테이블이자 워크에어리어 같이 사용됨
Loop 문으로 인터널 테이블에서 하나씩 값을 꺼내면 그 값이 헤더라인에 저장
DATA : BEGIN OF gt_lang OCCURS 0,
MCODE LIKE ZTCM0140-MCODE, "모듈 코드
MNAME LIKE ZTSD0004-TEXT2, "모듈 이름
PCODE LIKE ZTCM0140-PCODE, "프로세스 코드
PNAME LIKE ZTCM0141-PNAME, "프로세스 이름
END OF gt_lang.
그리드에 이벤트 발생 시 PBO PAI 한번 더 돌게 하는법
CREATE OBJECT p_grid
EXPORTING
i_parent = p_container
i_appl_events = 'X'. "PBO PAI 를 한번 더 돈다.
EXPORTING
i_parent = p_container
i_appl_events = 'X'. "PBO PAI 를 한번 더 돈다.
2011년 3월 17일 목요일
File 다운로드 dialog
Excel file을 Download 시 File 경로와 이름을 입력 받는 Dialog box를 표시할 때 아래의 Source를 참고하세요.
2가지 방법이 있습니다.
먼저 Function을 사용하는 방법이 있는데 이것을 사용해도 되지만 SAP에서는 폐기한 방식 이라 권장하지 않습니다.
두번째는 Class를 사용하는 방법인데, 아래 Source를 참고하세요.
나타나는 Dialog box는 동일한 것이 나타납니다.
Class의 주석 처리한 부분은 생략이 가능하지만 값을 넣을 경우 초기값 설정 및 Window title로 사용 가능합니다.
*-- 다운로드 파일명 구하기
DATA : lv_fname TYPE string VALUE 'SAMPLE.XLS'.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = 'SAMPLE.XLS'
def_path = 'C:\'
mask = ',*.xls,*.XLS.'
mode = 'S'
IMPORTING
filename = lv_fname
EXCEPTIONS
inv_winsys = 1
no_batch = 1
selection_cancel = 1
selection_error = 1.
WRITE :/1 lv_fname.
SKIP 1.
DATA : lv_title TYPE string VALUE 'Title message',
lv_path TYPE string,
lv_fullpath TYPE string.
*-- 다운로드 파일명 구하기
CALL METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING " 생략가능
* window_title = lv_title " 생략가능
* default_file_name = lv_fname " 생략가능
CHANGING
filename = lv_fname
path = lv_fullpath
fullpath = lv_path.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = 'SAMPLE.XLS'
def_path = 'C:\'
mask = ',*.xls,*.XLS.'
mode = 'S'
IMPORTING
filename = lv_fname
EXCEPTIONS
inv_winsys = 1
no_batch = 1
selection_cancel = 1
selection_error = 1.
WRITE :/1 lv_fname.
SKIP 1.
DATA : lv_title TYPE string VALUE 'Title message',
lv_path TYPE string,
lv_fullpath TYPE string.
*-- 다운로드 파일명 구하기
CALL METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING " 생략가능
* window_title = lv_title " 생략가능
* default_file_name = lv_fname " 생략가능
CHANGING
filename = lv_fname
path = lv_fullpath
fullpath = lv_path.
File 업로드 dialog
*-- 업로드 파일명 구하기
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING " 생략가능
window_title = lv_title " 생략가능
default_filename = lv_fname " 생략가능
initial_directory = lv_path " 생략가능
CHANGING
FILE_TABLE = lv_filetable
RC = lv_answer
USER_ACTION = lv_answer.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING " 생략가능
window_title = lv_title " 생략가능
default_filename = lv_fname " 생략가능
initial_directory = lv_path " 생략가능
CHANGING
FILE_TABLE = lv_filetable
RC = lv_answer
USER_ACTION = lv_answer.
PAI PBO 강제로 테우기
call method cl_gui_cfw=>set_new_ok_code
exporting
new_code = 'ETC'.
강제로 PAI PBO를 호출하는 함수
exporting
new_code = 'ETC'.
강제로 PAI PBO를 호출하는 함수
피드 구독하기:
글 (Atom)