2015년 3월 9일 월요일

GOS download

DATA: GT_LIST    LIKE SRGBTBREL OCCURS 0 WITH HEADER LINE.
DATA: LS_DOCUMENT_DATA LIKE  SOFOLENTI1,
      LT_OBJECT_HEADER LIKE  SOLISTI1 OCCURS 0 WITH HEADER LINE,
      LT_OBJECT_CONTENT LIKE  SOLISTI1 OCCURS 0 WITH HEADER LINE,
      LT_OBJECT_PARA LIKE  SOPARAI1 OCCURS 0 WITH HEADER LINE,
      LT_OBJECT_PARB LIKE  SOPARBI1 OCCURS 0 WITH HEADER LINE,
      LT_ATTACHMENT_LIST LIKE  SOATTLSTI1 OCCURS 0 WITH HEADER LINE,
      LT_RECEIVER_LIST LIKE  SORECLSTI1 OCCURS 0 WITH HEADER LINE,
      LT_CONTENTS_HEX LIKE  SOLIX OCCURS 0 WITH HEADER LINE,
      OBJCONT_TAB LIKE SOLI  OCCURS 0 WITH HEADER LINE.
DATA: LV_DOCID  TYPE SOFOLENTI1-DOC_ID,
      LV_PATH(255),
      LV_STR1(255),
      LV_STR2(255),
      LV_TYPE(3).
*&---------------------------------------------------------------------*
*& MACRO                                                               *
*&---------------------------------------------------------------------*
DEFINE M_CLS.
  CLEAR &1. REFRESH &1.
END-OF-DEFINITION.

SELECT * INTO TABLE GT_LIST
  FROM SRGBTBREL
 WHERE TYPEID_A = 'EQUI'.
LOOP AT GT_LIST.
  M_CLS: LT_OBJECT_HEADER,
         LT_OBJECT_CONTENT,
         LT_OBJECT_PARA,
         LT_OBJECT_PARB,
         LT_ATTACHMENT_LIST,
         LT_RECEIVER_LIST,
         LT_CONTENTS_HEX,
         OBJCONT_TAB.
  CLEAR: LS_DOCUMENT_DATA.
  LV_DOCID = GT_LIST-INSTID_B.
  CALL FUNCTION 'SO_DOCUMENT_READ_API1'
    EXPORTING
      DOCUMENT_ID                = LV_DOCID
*     FILTER                     = 'X '
    IMPORTING
      DOCUMENT_DATA              = LS_DOCUMENT_DATA
    TABLES
      OBJECT_HEADER              = LT_OBJECT_HEADER
      OBJECT_CONTENT             = LT_OBJECT_CONTENT
      OBJECT_PARA                = LT_OBJECT_PARA
      OBJECT_PARB                = LT_OBJECT_PARB
      ATTACHMENT_LIST            = LT_ATTACHMENT_LIST
      RECEIVER_LIST              = LT_RECEIVER_LIST
      CONTENTS_HEX               = LT_CONTENTS_HEX
    EXCEPTIONS
      DOCUMENT_ID_NOT_EXIST      = 1
      OPERATION_NO_AUTHORIZATION = 2
      X_ERROR                    = 3
      OTHERS                     = 4.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
  CHECK LT_OBJECT_CONTENT[] IS NOT INITIAL.
  LOOP AT LT_OBJECT_CONTENT.
    OBJCONT_TAB-LINE = LT_OBJECT_CONTENT-LINE.
    APPEND OBJCONT_TAB.   CLEAR OBJCONT_TAB.
  ENDLOOP.
  LOOP AT LT_OBJECT_HEADER.
    IF LT_OBJECT_HEADER-LINE CS 'SO_FILENAME'.
      SPLIT LT_OBJECT_HEADER-LINE AT '=' INTO LV_STR1 LV_STR2.
      CONCATENATE 'C:\TEMP\' GT_LIST-INSTID_A '\'LV_STR2 INTO LV_PATH.
    ELSEIF LT_OBJECT_HEADER-LINE CS 'SO_FORMAT'.
      SPLIT LT_OBJECT_HEADER-LINE AT '=' INTO LV_STR1 LV_STR2.
      LV_TYPE = LV_STR2.
    ENDIF.
  ENDLOOP.
  IF LV_TYPE IS INITIAL.
    LV_TYPE = 'BIN'.
  ENDIF.
  CALL FUNCTION 'SO_OBJECT_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE           = 0
*      DEFAULT_FILENAME       =  ' '
      FILETYPE               = LV_TYPE
      PATH_AND_FILE          = LV_PATH
*     EXTCT                  = ' '
      NO_DIALOG              = 'X'
*     CODEPAGE               =
*   IMPORTING
*     FILELENGTH             =
*     F_CANCELLED            =
*     ACT_FILETYPE           =
*     ACT_FILENAME           =
    TABLES
      OBJCONT                = OBJCONT_TAB
*   EXCEPTIONS
*     FILE_WRITE_ERROR       = 1
*     INVALID_TYPE           = 2
*     X_ERROR                = 3
*     KPRO_ERROR             = 4
*     OTHERS                 = 5
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
ENDLOOP.