02-12-2012 PO Creation Using BAPI
Transcript of 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.
*&---------------------------------------------------------------------**& 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
* 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>.*
*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,
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
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
* 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 =
. write : / po_num. clear po_num. ENDIF.
endat.
endloop.ENDFORM. " create_po