2012년 5월 15일 화요일

[SAP] 함수들

- HRCM_AMOUNT_TO_STRING_CONVERT : ,와 .을 바꾸기



- BUX_DECIMAL_START : 문자 필드의 숫자에 콤마 찍기














● 자주 사용하는 String 조작 명령어
    ▶  문자열 길이(STRLEN)
       - LV_LEN에  문자열 LV_STRING 길이를 돌려준다.
          LV_LEN = STRLEN(LV_STRING). 






    ▶  문자열 갯수
          FIND ALL OCCURRENCES OF 'A' IN LV_STRING MATCH COUNT LV_CNT.

    ▶  문자열 내 특정 문자의 최초위치 값
          FIND 'A' IN LV_STRING MATCH OFFSET LV_OFF.
     ▶ 문자열 연결 (CONCATENATE)
       CONCATENATE F1 F2 F3 INTO G.
      
       어떤 구분자(Space, Comma ...)로 문자열을 연결하고 문자열 사이를 SPACE를 추가
       CONCATENATE F1 F2 F3 INTO G SEPARATED BY SPACE.


       문자열을 각 변수 고유성질 그대로 붙여준다.
       CONCATENATE F1 F2 F3 INTO RESULT RESPECTING BLANKS.

    ▶좌우 빈 공백 제거(CONDENSE)
       CONDENSE LV_STRING.
       
    ▶ 좌측 문자를 취한다.
        MOVE RESULT+0(10) TO LV_STRING.    <- LEFT
        MOVE RESULT+10(10) TO LV_STRING    <- MID

        LV_OFF =10.                                         <- RIGHT
        LV_CNT = STRLEN)RESULT).
        LV_INT = LV_CNT - LV_OFF.
        MOVE RESULT+LV_INT(LV_OFF) TO LV_STRING.

    ▶ 문자열 나눔 (SPLIT)       - AT 뒤의 문자열을 기준으로 String을 나눔.
       SPLIT G AT SPACE INTO F1 F2 F3.
       SPLIT f AT g INTO TABLE <Internal Table>.
    ▶ 문자열 치환 (REPLACE)      
       STRING = 'ABCDEFGHIJ'.
       STR1 = 'CDEF'.
       STR2 = 'KLMN'
       LEN  = 2

       전체 문자열 치환
       REPLACE <STR1> WITH <STR2> INTO STRING.
       STRING : ABCDEFGHIJ  --> ABKLMNGHIJ

       원하는 길이만큼 치환
       REPLACE <STR1> WITH <STR2> INTO STRING LENGTH LEN.
       STRING : ABCDEFGHIJ  --> ABKLMNEFGH

       
       문자열 내 특정 문자 전체 치환하고 치환횟수 알려줌

       REPLACE ALL COOURRENCES OF 'A' IN LV_STRING WITH 'B'
       REPLACEMENT COUNT LV_CNT.   


       문자열중 첫번째 문자만 치환
        REPLACE 'A' IN LV_STRING WITH 'B'.

    ▶ 대소문자 변환 (TRANSLATE)
       TRANSLATE <C> TO UPPER CASE. (대문자)
       TRANSLATE <C> TO LOWER CASE. (소문자)

    ▶ 문자열 이동 (SHIFT)
       SHIFT <C> LEFT DELETING LEADING <STR>. (왼쪽 <STR>을 지우고 이동)
       SHIFT <C> LEFT DELETING LEADING SAPCE. (왼쪽 Space를 지우고 이동)
       SHIFT <C> CIRCULAR / RIGHT / LEFT . 

       마이너스 부호를 앞자리로 이동하는 예제. ( NUM = '     1000-' )
       SHIFT <NUM> RIGHT CIRCULAR. ( NUM = '-     1000' )
       SHIFT <NUM>+1 LEFT DELETING LEADING SPACE. ( NUM = '-1000     ' )
       SHIFT <NUM> RIGHT DELETING TRAILING SPACE ( NUM = '     -1000' )












2012년 5월 2일 수요일

리눅스 환경에서 테스크탑 실시간 방송하기(우분투, justin.tv)

[출처: http://kldp.org/]

우분투 11.04 기준으로 작성되었습니다.
ffmpeg를 이용하여 리눅스 데스크탑 화면을 실시간으로 방송하는 방법을 정리하였다. 우분투에 포함된 ffmpeg 패키지는 libx264와 libmp3lame등이 포함되어 있지 않으므로, ffmpeg를 빌드 설치 해야 한다.
0. 기존 설치된 ffmpeg 패키지가 있으면 이를 삭제한다.
$ sudo apt-get remove ffmpeg 
1. ffmpeg 빌드 설치하기 위한 의존성 패키지를 설치한다.

$ sudo apt-get update
$ sudo apt-get install build-essential checkinstall git libfaac-dev libjack-jackd2-dev \
  libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev \
  libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev texi2html yasm zlib1g-dev \
  kx11grab libx264-dev libmp3lame-dev
2. ffmpeg 소스 코드를 받아온다.

$ git clone git://source.ffmpeg.org/ffmpeg.git 
3. ffmpeg 컴파일 및 설치한다.

$ cd ffmpeg
$ ./configure --enable-x11grab --enable-memalign-hack --enable-pthreads \
  --enable-libmp3lame--enable-libx264 --enable-gpl --disable-shared --enable-static
$ make
$ sudo make install
4. Justin.tv의 스트림 키를 얻어온다. (Link> http://www.justin.tv/broadcast/adv_other)
5. Justin.tv에 ffmpeg로 데스크탑 화면을 생방송하는 스크립트를 작성한다.
* desktop_stream.sh

#!/bin/sh
INRES="1920x1080" # input resolution
OUTRES="1280x720"
FPS="20" # target FPS
# Justin
STREAM_KEY="live_YOUR_STREAM_KEY"
URL="rtmp://live.justin.tv/app/$STREAM_KEY"
ffmpeg -f x11grab -s "$INRES" -r "$FPS" -i :0.0 \
          -f alsa -ac 2 -i pulse -vcodec libx264 -s "$OUTRES" -ar 22050 \
          -acodec libmp3lame -ab 64k -threads 0 \
          -f flv $URL 
6. 스크립트를 실행하면 데스크탑 화면과 사운드가 Justin.tv에서 생방송 된다.

$ ./desktop_stream.sh