2015년 4월 10일 금요일

BAPI_PR_CREATE

FUNCTION ZMMK_BAPI_PR_CREATE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(ACCTASSCAT) LIKE  BAPIMEREQITEMIMP-ACCTASSCAT
*"     REFERENCE(MATERIAL) LIKE  BAPIMEREQITEMIMP-MATERIAL
*"     REFERENCE(SHORT_TEXT) LIKE  BAPIMEREQITEMIMP-SHORT_TEXT
*"     REFERENCE(QUANTITY) LIKE  BAPIMEREQITEMIMP-QUANTITY
*"     REFERENCE(UNIT) LIKE  BAPIMEREQITEMIMP-UNIT
*"     REFERENCE(DELIV_DATE) LIKE  BAPIMEREQITEMIMP-DELIV_DATE
*"     REFERENCE(PLANT) LIKE  BAPIMEREQITEMIMP-PLANT
*"     REFERENCE(ORDERID) LIKE  BAPIMEREQACCOUNT-ORDERID
*"     REFERENCE(PREQ_PRICE) LIKE  BAPIMEREQITEMIMP-PREQ_PRICE
*"     REFERENCE(PREQ_ITEM) LIKE  BAPIMEREQITEMIMP-PREQ_ITEM
*"  EXPORTING
*"     VALUE(NUMBER) LIKE  BAPIMEREQHEADER-PREQ_NO
*"     REFERENCE(GV_RESULT) TYPE  CHAR1
*"     REFERENCE(GV_MESSAGE) TYPE  BAPI_MSG
*"  TABLES
*"      RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------


DATA : S_HEADER LIKE BAPIMEREQHEADER OCCURS 0 WITH HEADER LINE.
 S_HEADER-PR_TYPE = 'NB'.
* S_HEADER-CTRL_IND = 'X'.
* S_HEADER-GENERAL_RELEASE = 'X'.
* S_HEADER-CREATE_IND = 'B'.
APPEND S_HEADER. 

DATA : S_HEADERX LIKE BAPIMEREQHEADERX OCCURS 0 WITH HEADER LINE.
 S_HEADERX-PR_TYPE = 'X'.
* S_HEADER-CTRL_IND = 'X'.
* S_HEADER-GENERAL_RELEASE = 'X'.
*  S_HEADERX-CREATE_IND = 'X'.
APPEND S_HEADERX. 

DATA : S_ITEM LIKE BAPIMEREQITEMIMP OCCURS 0 WITH HEADER LINE.
 S_ITEM-PREQ_ITEM = PREQ_ITEM.
 S_ITEM-ACCTASSCAT = 'Z'.
 S_ITEM-MATERIAL = MATERIAL.
 S_ITEM-SHORT_TEXT = SHORT_TEXT.
 S_ITEM-QUANTITY = QUANTITY.
 S_ITEM-UNIT = UNIT.
 S_ITEM-DELIV_DATE = DELIV_DATE.
 S_ITEM-PLANT = PLANT.
 S_ITEM-PREQ_PRICE = PREQ_PRICE.
APPEND S_ITEM. 

DATA : S_ITEMX LIKE BAPIMEREQITEMX OCCURS 0 WITH HEADER LINE.
 S_ITEMX-PREQ_ITEM = PREQ_ITEM.
 S_ITEMX-PREQ_ITEMX = 'X'.
 S_ITEMX-ACCTASSCAT = 'X'.
 S_ITEMX-MATERIAL = 'X'.
 S_ITEMX-SHORT_TEXT = 'X'.
 S_ITEMX-QUANTITY = 'X'.
 S_ITEMX-UNIT = 'X'.
 S_ITEMX-DELIV_DATE = 'X'.
 S_ITEMX-PLANT = 'X'.
 S_ITEMX-PREQ_PRICE = 'X'.
APPEND S_ITEMX. 

DATA : S_ITEMEXP LIKE BAPIMEREQITEM OCCURS 0 WITH HEADER LINE.
S_ITEMEXP-PREQ_ITEM = PREQ_ITEM.
*S_ITEMEXP-DOC_TYPE = 'NB'.
APPEND S_ITEMEXP. 

DATA : S_ACCOUNT LIKE BAPIMEREQACCOUNT OCCURS 0 WITH HEADER LINE.
 S_ACCOUNT-PREQ_ITEM = PREQ_ITEM.
 S_ACCOUNT-SERIAL_NO = '01'.
 S_ACCOUNT-ORDERID = ORDERID.
 S_ACCOUNT-QUANTITY = QUANTITY.
APPEND S_ACCOUNT. 

DATA : S_ACCOUNTX LIKE BAPIMEREQACCOUNTX OCCURS 0 WITH HEADER LINE.
 S_ACCOUNTX-PREQ_ITEM = PREQ_ITEM.
 S_ACCOUNTX-SERIAL_NO = '01'.
 S_ACCOUNTX-PREQ_ITEMX = 'X'.
 S_ACCOUNTX-ORDERID = 'X'.
 S_ACCOUNTX-QUANTITY = 'X'.
APPEND S_ACCOUNTX. 

CALL FUNCTION 'BAPI_PR_CREATE'
  EXPORTING
    PRHEADER = S_HEADER
    PRHEADERX = S_HEADERX
*  VERSIONS =
*  TESTRUN =
  IMPORTING
    NUMBER = NUMBER
*  PRHEADEREXP =
  TABLES
    RETURN = RETURN
    PRITEM = S_ITEM
    PRITEMX = S_ITEMX
    PRITEMEXP = S_ITEMEXP
    PRACCOUNT = S_ACCOUNT
    PRACCOUNTX = S_ACCOUNTX . 

  IF RETURN[] IS INITIAL.
    CALL FUNCTION 'BALW_BAPIRETURN_GET2'
      EXPORTING
        TYPE   = SY-MSGTY
        CL     = SY-MSGID
        NUMBER = SY-MSGNO
        PAR1   = SY-MSGV1
        PAR2   = SY-MSGV2
        PAR3   = SY-MSGV3
        PAR4   = SY-MSGV4
      IMPORTING
        RETURN = RETURN
      EXCEPTIONS
        OTHERS = 1.
  ENDIF. 

  READ TABLE RETURN WITH KEY TYPE = 'S'.
  IF sy-subrc <> 0.
    READ TABLE return WITH KEY type = 'E'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.  

  GV_RESULT = RETURN-TYPE.
  GV_MESSAGE = RETURN-MESSAGE. 

ENDFUNCTION.

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.