2013년 12월 9일 월요일

스마트폼의 pdf를 이메일 첨부 발송

[출처:http://www.e-abap.net/]

DATA :  OUTPUT_OPTIONS       TYPE SSFCOMPOP,
           CONTROL_PARAMETERS   TYPE SSFCTRLOP.

  CLEAR: CONTROL_PARAMETERS, OUTPUT_OPTIONS, TSP03.

  CONTROL_PARAMETERS-NO_DIALOG = 'X'.
  " "otf 전환***
  CONTROL_PARAMETERS-GETOTF    = 'X'.   
  CONTROL_PARAMETERS-LANGU     = SY-LANGU.
  CONTROL_PARAMETERS-DEVICE    = 'PRINTER'.


  OUTPUT_OPTIONS-TDSENDDATE   = SY-DATLO.      
  OUTPUT_OPTIONS-TDSENDTIME   = SY-TIMLO.       
  OUTPUT_OPTIONS-TDDEST       = 'LP01'.         
  OUTPUT_OPTIONS-TDNEWID      = 'X'.            

   CALL FUNCTION P_FUNC_MOD_NAME
     EXPORTING
       CONTROL_PARAMETERS = CONTROL_PARAMETERS
       OUTPUT_OPTIONS     = OUTPUT_OPTIONS
       G_ITAB02_T         = G_ITAB02_T
     IMPORTING
       JOB_OUTPUT_INFO    = G_JOB_OUTPUT_INFO
       JOB_OUTPUT_OPTIONS = G_JOB_OUTPUT_OPTIONS
     TABLES
       G_ITAB03_T         = G_ITAB03_T
       G_ITAB08_T         = G_ITAB08_T
     EXCEPTIONS
       FORMATTING_ERROR   = 1
       INTERNAL_ERROR     = 2
       SEND_ERROR         = 3
       USER_CANCELED      = 4
       OTHERS             = 5.
   IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
     LEAVE PROGRAM.
   ENDIF.

*&
   DATA : OTF_TAB TYPE TSFOTF.

   OTF_TAB[] = G_JOB_OUTPUT_INFO-OTFDATA[].

*&
  DATA: GS_HEAD     LIKE SODOCCHGI1,
        GT_OBJPACK  LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE,
        GT_OBJHEAD  LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
        GT_OBJBIN   LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
        GT_OBJCON   LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
        GT_RECEIVER LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
        GV_LINES LIKE SY-TABIX,
        GV_DOC_SIZE LIKE SY-TABIX.

*&
  DATA: LT_PDF            TYPE STANDARD TABLE OF TLINE WITH HEADER LINE,
        L_SIZE           TYPE I,
        L_REG_VALUE(128) TYPE C.
  data: L_FILE       TYPE  XSTRING.


*& OTF 파일을 PDF 파일로 CONVERT.
  CALL FUNCTION 'CONVERT_OTF'
     EXPORTING
       FORMAT                = 'PDF'
    TABLES
      OTF                   = P_OTF[]
      LINES                 = LT_PDF
    EXCEPTIONS
      ERR_MAX_LINEWIDTH     = 1
      ERR_FORMAT            = 2
      ERR_CONV_NOT_POSSIBLE = 3
      OTHERS                = 4.

  DATA: I TYPE I,N TYPE I.
  DATA: L_TXT(1000).

* Convert pdf(134) to binary(255) file.
  LOOP AT LT_PDF.
    L_TXT+I = LT_PDF.
    ADD 134 TO I.
    IF I >= 255.
      GT_OBJBIN = L_TXT.
      APPEND GT_OBJBIN.
      SUBTRACT 255 FROM I.
      L_TXT = L_TXT+255.
    ENDIF.
  ENDLOOP.
  IF I <> 0.
    GT_OBJBIN = L_TXT.
    APPEND GT_OBJBIN.
  ENDIF.


*& 메일 수신자 관련
  GT_RECEIVER-RECEIVER   =  'mychoi@lgcns.com'.
  "수신메일주소
  GT_RECEIVER-REC_TYPE   =  'U'.
  GT_RECEIVER-EXPRESS    =  'X'.
  APPEND GT_RECEIVER. CLEAR GT_RECEIVER.

*& 메일 내용
  GT_OBJCON-LINE = 'Smartforms Mail 확인바랍니다.'.
  APPEND GT_OBJCON. CLEAR GT_OBJCON.
*&
  GT_OBJCON-LINE = '감사합니다'.
  APPEND GT_OBJCON. CLEAR GT_OBJCON.

*&
*& 메일 내용 관련된 사항을 PACKING_LIST에 APPEND
  DESCRIBE TABLE GT_OBJCON LINES GV_LINES.

*& 메일 HEADER
  GS_HEAD-OBJ_NAME     =  'MESSAGE'.
  GS_HEAD-OBJ_DESCR    =  '>>SMART PDF MAIL 확인바랍니다.'.   "메일 제목
  GS_HEAD-OBJ_LANGU    =  'E'.
  GS_HEAD-SENSITIVTY   =  'O'.      "'O' : Standard 'P': Confidential
  GS_HEAD-OBJ_PRIO     =  '1'.
  GS_HEAD-NO_CHANGE    =  'X'.
  GS_HEAD-PRIORITY     =  '1'.
*  gs_head-doc_size = gv_lines * 255.

  GT_OBJPACK-HEAD_START = 1.
  GT_OBJPACK-HEAD_NUM = 0.
  GT_OBJPACK-BODY_START = 1.
  GT_OBJPACK-BODY_NUM = GV_LINES.
  GT_OBJPACK-DOC_TYPE = 'RAW'.

  APPEND GT_OBJPACK. CLEAR GT_OBJPACK.

*& 메일 첨부파일에 관련된 사항을 PACKING LIST에 저장
  DESCRIBE TABLE GT_OBJBIN LINES GV_LINES.
  GT_OBJPACK-TRANSF_BIN = 'X'.
  GT_OBJPACK-HEAD_START = 1.
  GT_OBJPACK-HEAD_NUM = 1.
  GT_OBJPACK-BODY_START = 1.
  GT_OBJPACK-BODY_NUM = GV_LINES.
  GT_OBJPACK-DOC_TYPE = 'PDF'.
* GT_OBJPACK-FILE_EXT = 'PDF'.
  GT_OBJPACK-OBJ_NAME = 'Attachment'.
  GT_OBJPACK-OBJ_DESCR = 'ATT_SMART'.

  READ TABLE GT_OBJBIN INDEX GV_LINES.

  GV_DOC_SIZE = GV_LINES * 255.

* GV_DOC_SIZE = ( GV_LINES - 1 ) * 255 + STRLEN( GT_OBJBIN ).
  GT_OBJPACK-DOC_SIZE = GV_DOC_SIZE.

  APPEND GT_OBJPACK. CLEAR GT_OBJPACK.

*& 메일을 전송하는 Function.....
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              = GS_HEAD      "메일TITLE
      PUT_IN_OUTBOX              = 'X'
      COMMIT_WORK                = 'X'
    TABLES
      PACKING_LIST               = GT_OBJPACK
      CONTENTS_BIN               = GT_OBJBIN     "첨부파일
      CONTENTS_TXT               = GT_OBJCON     "메일내용
      RECEIVERS                  = GT_RECEIVER   "수신정보
    EXCEPTIONS
      TOO_MANY_RECEIVERS         = 1
      DOCUMENT_NOT_SENT          = 2
      DOCUMENT_TYPE_NOT_EXIST    = 3
      OPERATION_NO_AUTHORIZATION = 4
      PARAMETER_ERROR            = 5
      X_ERROR                    = 6
      ENQUEUE_ERROR              = 7
      OTHERS                     = 8.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    MESSAGE S002 WITH '메일이 전송 되었습니다.'.
  ENDIF.

2013년 11월 11일 월요일

중국쪽 무료 클라우드 서비스들

[출처 : http://xerror.tistory.com/57 ]
1. 바이두(baidu)
URL : http://yun.baidu.com/1t
소개 : 중국의 구글이라 불리는 중국 대표 검색 포털 업체
환경 : 윈도우, 웹, 안드로이드, 아이폰, 아이패드
용량 : 2TB
제한 : 업로드 최대 4GB
속도 : (웹기준) 다운로드 1MB/S 정도, 업로드 1MB/S 정도
특징 : 미디어 파일을 웹에서 별도 설치 없이 스트리밍 하는 것이 가능하다
         한글파일을 다운받으면 파일명이 깨진다
         추가 요금을 내고 15GB, 30GB, 50GB, 100GB 단위로 추가용량을 구입 할 수 있다

2. 텐센트(Tencent)
URL : http://www.weiyun.com/act/10t.html?WYTAG=weiyun.portal.index
소개 : 야후나 네이버와 비슷한 성격의 종합 포털 업체
환경 : 윈도우, 웹, 안드로이드, 아이폰, 아이패드
용량 : 10TB
제한 : 업로드 최대 4GB (IE 외 다른 웹브라우저에서는 최대 2GB / 플러그인 설치시 최대 36GB)
속도 : (웹기준) 다운로드 1MB/S 이하, 업로드 1MB/S 이하
특징 : 회사가 텐센트 이고 서비스명은 웨이윤(weiyun) 이다
         텐센트 코리아도 있다 (http://www.tencent.co.kr)
         일정기간 로그인을 하지 않으면 자료가 삭제 된다고 한다 (기간은 확실치 않음. 한달 또는 45일)
         개발 API 가 제공된다 (http://www.weiyun.com/api.html?WYTAG=weiyun.portal.download)

3. 치후360(Qihoo360)
URL : http://yunpan.360.cn
소개 : 안랩과 같은 보안 관련 서비스가 주력이며 최근 검색 포털 및 게임 서비스 분야로 확장 중인 업체
환경 : 윈도우, 웹, 안드로이드, 아이폰, 아이패드
용량 : 무제한 (자동 확장)
제한 : 업로드 최대 웹 360MB, PC클라이언트 5GB
속도 : (웹기준) 다운로드 1MB/S 이하, 업로드 1MB/S 정도
특징 : 가입 후 최초 PC 클라이언트를 설치하면 10TB 를 주고 이후 모바일 어플을 설치하면 27TB 를 준다
         초기 사용 가능한 최대 용량은 37TB 이다
         사용 용량이 26TB 부터 최대 용량은 10TB 씩 증가한다 (예로 30TB 를 사용 중이면 최대 용량은 86TB 가 된다)
         사용 용량이 증가함에 따라 최대 용량은 무제한으로 증가한다 (http://p1.qhimg.com/t017746ca443f25ce9e.jpg)

2013년 10월 22일 화요일

Smartforms에서 텍스트 내용을 수정할때 Microsoft Word가 실행되면서 오류발생

Smartforms에서 텍스트 내용을 수정할때 Microsoft Word가 실행되면서 오류발생








SE38에서 RSCPSETEDITOR을 실행하여 Smartforms를 체크 해제 후 Activate 시킨다.















[SAP] Classification의 값 가져오기

품목에 해당되는 Classification의 값들을 가져온다. 

CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
  EXPORTING
    CLASSTYPE    = '001'
    CLINT        = LV_CLINT
    OBJECT       = LV_OBJEK
  TABLES
    T_CLASS      = LT_CLASS
    T_OBJECTDATA = LT_OBJECT.

READ TABLE LT_OBJECT WITH KEY ATNAM = atinn. 

[SAP] 날자 계산하기

- LV_DATUM 날자를 기준으로 10일 전의 날자를 계산하여 준다.

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
  EXPORTING
    DATE           = LV_DATUM
    DAYS           = '10'
    MONTHS      = '00'
    SIGNUM       = '-'
    YEARS         = '00'
  IMPORTING
    CALC_DATE = I_DATE .


- LV_DATUM을 기준으로 XX개월(+/-) 구간의 일자를 구한다.
  CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
    EXPORTING
      MONTHS        = 'XX'
      OLDDATE       = LV_DATUM
    IMPORTING
      NEWDATE       = GV_SDATE.


-  LV_DATUM일자에 해당되는 월의 마지막 일자를 구한다.
  CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
    EXPORTING
      DAY_IN                  = LV_DATUM
    IMPORTING
      LAST_DAY_OF_MONTH       = GV_EDATE.

[SAP] 함수 뒤에 있는 음수 부호를 앞으로 보내는 함수

1.CH의 변수 유형은 문자 타입이어야 한다.

    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        VALUE         = CH.