2011년 4월 21일 목요일

번역(사내 프로그램 이용 & SE63)

일반 T-Code SE63 을 이용

SE63 이동 > 번역 > ABAP 오브젝트 > 내역

으로 이동하면 오브젝트 유형 선택 목록이 나온다.

여기에서

S3 ABAP 텍스트 > 텍스트 요소

오브젝트 이름에 프로그램 이름을 적어주고,

소스언어, 대상언어를 선택해 주고 편집을 누른다.

각각의 번역항목을 번역해 주면 된다.

2011년 4월 20일 수요일

유용한 티코드(Transaction Code)

sm50 프로세스 개요 (백그라운드는 type m 이 주로 많음)

sm66 전체작업프로세스 개요 (프로그램 취소를 누르면 프로그램을 중지시킬 수 있음, 디버깅)

se30 아밥 실행시간 분석 프로그램

st22 런타임 에러

st05 퍼포먼스 분석 (추적 설정 -> 프로그램 실행 -> 추적 해제)

sm04 사용자 리스트

sm12 잠금엔트리 선택

abapdocu 아밥 다큐먼트 문서

rsdl DB 연결: 연결용 프로그램 점검

db01 현재 DB 서버의 상태 (Diagnostics -> SQL Command Editor 에서 DB 쿼리를 직접 날릴 수 있음 *대소문자 구분 ex. select * from tdv.MARA)

dbco "데이타베이스 연결 내역"뷰 조회: 개요

smwg RFC 와 커넥션 되어 있는 정보를 보여줌

sbwp 비즈니스 워크 플레이스(메일 발송)

2011년 4월 14일 목요일

인터널 테이블

Tables: MARA. “MARA의 Header 역할을 하는 Working Area생성.

Data: BEGIN OF IT_MARA OCCURS 0.
INCLUDE STRUCTURE MARA.
Data: END OF IT_MARA. “ Header가 기본적으로 생성됨.

Data: IT_MARA_N LIKE TABLE OF MARA. “ Header가 없는 Internal Table.

Data: IT_MARA_H LIKE TABLE OF MARA WITH HEADER LINE.
“ Header가 있는 Internal Table.

2011년 4월 13일 수요일

Document 객체 생성하기

* docking 컨테이너 헤더를 만들어 헤더에 document 객체를 생성하여 삽입한다.

  DATA : gs_docking_container        TYPE REF TO cl_gui_docking_container     ,
        go_docking_container_header TYPE REF TO cl_gui_docking_container,
        go_document                 TYPE REF TO cl_dd_document,             "문서 오브젝트


  CREATE OBJECT go_docking_container_header
      EXPORTING
        repid                       = sy-repid
        dynnr                       = sy-dynnr      "현재화면
        side                        = go_docking_container_header->dock_at_top
        extension                   = 50.

    CREATE OBJECT go_document
      EXPORTING
        style  = 'ALV_GRID'.
*        background_color =
*        bds_stylesheet =
*        no_margins =

    CALL METHOD go_document->add_text
      EXPORTING
        text          = 'Header'
*        text_table    =
*        fix_lines     =
*        sap_style     =
*        sap_color     =
        sap_fontsize  = cl_dd_area=>LARGE    
*        sap_fontstyle =
*        sap_emphasis  =
*        style_class   =
*      CHANGING
*        document      =
        .

    CALL METHOD go_document->new_line.

    CALL METHOD go_document->add_gap
      EXPORTING
        width = 5.

    data lv_hhtxt2(255type c VALUE 'WERKS :'.
  
    CALL METHOD go_document->add_text
      EXPORTING
        text      = lv_hhtxt2
        sap_fontsize = cl_dd_area=>medium.


       CALL METHOD go_document->display_document
      EXPORTING
        parent             = go_docking_container_header.

2011년 4월 11일 월요일

ABAP 중요한 테이블

V_LTDX

DB 뷰 LTDX (ALV 레이아웃) : 프로그램 별 variant 가 저장되는 table

엑셀 유용한 키

Ctrl + ;

데이터 유효성 검사 : 셀 선택 Ctrl + Shift + 방향키

Ctrl + 방향키 sheet 끝 or 처음

1 sheet 이동 : Ctrl + HOME

수식으로 결과값 보기 : Ctrl + ~

절대참조로 셀 바꾸기 : F4

표로 변환 [ ]

1900 년 1월 1일부터 카운트 (날짜)

Ctrl + 1 (셀 서식)

2011년 4월 5일 화요일

Field symbol

field-symbol <FS> type any table.

assign gt_standard [] to <FS>.

<FS> 를 사용.

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'   .

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.

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.

유용한 단축키

Ctrl + O
이동하고자 하는 라인번호를 넣고 OK 버튼이나 ENTER 를 누르면 한번에 이동.

그리드에 이벤트 발생 시 PBO PAI 한번 더 돌게 하는법

  CREATE OBJECT p_grid
    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.

유용한 함수

현재 로그인 한 유저의 사번을 반환하는 함수
ZCM003_GET_USERID

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.

PAI PBO 강제로 테우기

call method cl_gui_cfw=>set_new_ok_code
      exporting
        new_code = 'ETC'.



강제로 PAI PBO를 호출하는 함수