02-12-2012 PO Creation Using BAPI

9
*&-------------------------------------------------------------------- -* *& Report ZUT_PO_CREATE_EXCEL_SHEET *& *&-------------------------------------------------------------------- -* *& *& *&-------------------------------------------------------------------- -* REPORT ZUT_PO_CREATE_EXCEL_SHEET. type-pools : TRUXS. types : begin of ty_file, No(1), ccode type BAPIMEPOHEADER-COMP_CODE, doc_type type bapimepoheader-DOC_TYPE, vendor type bapimepoheader-VENDOR, porg type bapimepoheader-PURCH_ORG, purgroup type bapimepoheader-PUR_group, currency type bapimepoheader-CURRENCY, item type BAPIMEPOITEM-PO_ITEM, matnr type bapimepoitem-MATERIAL, plant type bapimepoitem-plant, quantity type bapimepoitem-QUANTITY, netprice type bapimepoitem-NET_PRICE, end of ty_file. data : it_file type standard table of ty_file, wa_file like line of it_file. parameters p_file type IBIPPARMS-PATH. at selection-screen on value-request for p_file.

Transcript of 02-12-2012 PO Creation Using BAPI

Page 1: 02-12-2012 PO Creation Using BAPI

*&---------------------------------------------------------------------**& Report  ZUT_PO_CREATE_EXCEL_SHEET*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZUT_PO_CREATE_EXCEL_SHEET.

type-pools : TRUXS.types : begin of ty_file,        No(1),        ccode type BAPIMEPOHEADER-COMP_CODE,         doc_type type bapimepoheader-DOC_TYPE,         vendor type bapimepoheader-VENDOR,         porg   type bapimepoheader-PURCH_ORG,        purgroup type bapimepoheader-PUR_group,        currency  type bapimepoheader-CURRENCY,        item    type BAPIMEPOITEM-PO_ITEM,        matnr   type bapimepoitem-MATERIAL,        plant   type bapimepoitem-plant,        quantity type bapimepoitem-QUANTITY,         netprice type bapimepoitem-NET_PRICE,        end of ty_file.

data : it_file type standard table of ty_file,       wa_file like line of it_file.

parameters p_file type IBIPPARMS-PATH.

at selection-screen on value-request for p_file.  perform browse_file.

start-of-selection.  perform load_excel.

  perform create_po.

Page 2: 02-12-2012 PO Creation Using BAPI

*&---------------------------------------------------------------------**&      Form  browse_file*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM browse_file .  CALL FUNCTION 'F4_FILENAME'* EXPORTING*   PROGRAM_NAME        = SYST-CPROG*   DYNPRO_NUMBER       = SYST-DYNNR*   FIELD_NAME          = ' '   IMPORTING     FILE_NAME           = p_file            .

ENDFORM.                    " browse_file*&---------------------------------------------------------------------**&      Form  load_excel*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM load_excel .*  DATA : IT_EXCEL TYPE STANDARD TABLE OF ALSMEX_TABLINE,*         WA_EXCEL TYPE ALSMEX_TABLINE.*CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'*  EXPORTING*    FILENAME                      = p_file*    I_BEGIN_COL                   = 1*    I_BEGIN_ROW                   = 1*    I_END_COL                     =  12*    I_END_ROW                     = 1000*  TABLES*    INTERN                        = IT_EXCEL* EXCEPTIONS*   INCONSISTENT_PARAMETERS       = 1*   UPLOAD_OLE                    = 2

Page 3: 02-12-2012 PO Creation Using BAPI

*   OTHERS                        = 3*          .*IF SY-SUBRC <> 0.** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.*ENDIF.*data : l_index type sy-index.*FIELD-SYMBOLS : <fs>.*LOOP AT IT_EXCEL INTO WA_EXCEL.***  CASE WA_EXCEL-COL.**    WHEN '1'.**      WA_FILE-NO = WA_EXCEL-VALUE.**    WHEN '2'.**      WA_FILE-ccode = WA_EXCEL-VALUE.**          WHEN '3'.**      WA_FILE-doc_type = WA_EXCEL-VALUE.**          WHEN '4'.**      WA_FILE-vendor = WA_EXCEL-VALUE.**          WHEN '5'.**      WA_FILE-PORG = WA_EXCEL-VALUE.**          WHEN '6'.**      WA_FILE-purgroup = WA_EXCEL-VALUE.**          WHEN '7'.**      WA_FILE-CURRENCY = WA_EXCEL-VALUE.**          WHEN '8'.**      WA_FILE-ITEM = WA_EXCEL-VALUE.**          WHEN '9'.**      WA_FILE-MATNR = WA_EXCEL-VALUE.**          WHEN '10'.**      WA_FILE-PLANT = WA_EXCEL-VALUE.**          WHEN '11'.**      WA_FILE-QUANTITY = WA_EXCEL-VALUE.**        WHEN '12'.**      WA_FILE-NETPRICE = WA_EXCEL-VALUE.**    WHEN OTHERS.**  ENDCASE.**MOVE WA_EXCEL-col TO l_index.*      ASSIGN COMPONENT l_index OF STRUCTURE wa_file TO  <fs>.*      MOVE wa_excel-value TO <fs>.*

Page 4: 02-12-2012 PO Creation Using BAPI

*AT END OF ROW.*  APPEND WA_FILE TO IT_FILE.*  CLEAR WA_FILE.*ENDAT.* ENDLOOP.  data : lv_trux type TRUXS_T_TEXT_DATA.  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'    EXPORTING*   I_FIELD_SEPERATOR          =*   I_LINE_HEADER              =      I_TAB_RAW_DATA             = lv_trux      I_FILENAME                 = p_file    TABLES      I_TAB_CONVERTED_DATA       = it_file   EXCEPTIONS     CONVERSION_FAILED          = 1     OTHERS                     = 2            .  IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  ENDIF.

ENDFORM.                    " load_excel*&---------------------------------------------------------------------**&      Form  create_po*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM create_po .

  data : po_head type BAPIMEPOHEADER,         po_headx type BAPIMEPOHEADERX,         it_return  type standard table of BAPIRET2,         wa_return type BAPIRET2,         it_poitem type standard table of BAPIMEPOITEM,         wa_poitem type BAPIMEPOITEM,         it_poitemx type standard table of BAPIMEPOITEMX,

Page 5: 02-12-2012 PO Creation Using BAPI

         wa_poitemx type BAPIMEPOITEMX.

data : po_num type BAPIMEPOHEADER-PO_NUMBER.  loop at it_file into wa_file.

    po_head-COMP_CODE = wa_file-ccode.    po_head-DOC_TYPE =  wa_file-doc_type.    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      EXPORTING        INPUT         = wa_file-vendor     IMPORTING       OUTPUT        = wa_file-vendor              .

    po_head-VENDOR = wa_file-vendor.    po_head-PURCH_ORG = wa_file-porg.        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      EXPORTING        INPUT         = wa_file-purgroup     IMPORTING       OUTPUT        = wa_file-purgroup.

    po_head-PUR_GROUP =  wa_file-purgroup.    po_head-CURRENCY =  wa_file-currency.

    po_headx-COMP_CODE = 'X'.    po_headx-DOC_TYPE =  'X'.    po_headx-VENDOR = 'X'.    po_headx-PURCH_ORG = 'X'.    po_headx-PUR_GROUP =  'X'.    po_headx-CURRENCY =  'X'.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      EXPORTING        INPUT         = wa_file-item     IMPORTING

Page 6: 02-12-2012 PO Creation Using BAPI

       OUTPUT        = wa_file-item              .

    wa_poitem-PO_ITEM = wa_file-item.    wa_poitem-MATERIAL = wa_file-matnr.    wa_poitem-PLANT = wa_file-plant.    wa_poitem-QUANTITY =  wa_file-quantity.    wa_poitem-net_price = wa_file-netprice.    append wa_poitem to it_poitem.    clear wa_poitem.

    wa_poitemx-PO_ITEM = wa_file-item.    wa_poitemx-PO_ITEMX = 'X'.    wa_poitemx-MATERIAL = 'X'.    wa_poitemx-PLANT = 'X'.    wa_poitemx-QUANTITY = 'X'.    wa_poitemx-net_price = 'X'.    append wa_poitemx to it_poitemx.    clear wa_poitemx.

    at end of no.

    CALL FUNCTION 'BAPI_PO_CREATE1'      EXPORTING        POHEADER                     = po_head    POHEADERX                    = po_headx*   POADDRVENDOR                 =*   TESTRUN                      =*   MEMORY_UNCOMPLETE            =*   MEMORY_COMPLETE              =*   POEXPIMPHEADER               =*   POEXPIMPHEADERX              =*   VERSIONS                     =*   NO_MESSAGING                 =*   NO_MESSAGE_REQ               =*   NO_AUTHORITY                 =*   NO_PRICE_FROM_PO             = IMPORTING   EXPPURCHASEORDER             = po_num

Page 7: 02-12-2012 PO Creation Using BAPI

*   EXPHEADER                    =*   EXPPOEXPIMPHEADER            = TABLES   RETURN                       = it_return   POITEM                       = it_poitem   POITEMX                      = it_poitemx*   POADDRDELIVERY               =*   POSCHEDULE                   =*   POSCHEDULEX                  =*   POACCOUNT                    =*   POACCOUNTPROFITSEGMENT       =*   POACCOUNTX                   =*   POCONDHEADER                 =*   POCONDHEADERX                =*   POCOND                       =*   POCONDX                      =*   POLIMITS                     =*   POCONTRACTLIMITS             =*   POSERVICES                   =*   POSRVACCESSVALUES            =*   POSERVICESTEXT               =*   EXTENSIONIN                  =*   EXTENSIONOUT                 =*   POEXPIMPITEM                 =*   POEXPIMPITEMX                =*   POTEXTHEADER                 =*   POTEXTITEM                   =*   ALLVERSIONS                  =*   POPARTNER                    =*   POCOMPONENTS                 =*   POCOMPONENTSX                =*   POSHIPPING                   =*   POSHIPPINGX                  =*   POSHIPPINGEXP                =              . read table it_return into wa_return with key type = 'E'.  IF sy-subrc ne 0.   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'    EXPORTING      WAIT          = 'X'*    IMPORTING*      RETURN        =

Page 8: 02-12-2012 PO Creation Using BAPI

             .  write : / po_num.  clear po_num.  ENDIF.

endat.

  endloop.ENDFORM.                    " create_po