Code: Alles auswählen.
PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.
PERFORM bdc_field USING 'RM06E-BSART' 'NB'.
PERFORM bdc_field USING 'EKKO-LIFNR' p_lifnr.
PERFORM bdc_field USING 'EKKO-EKORG' 'BUAU'.
PERFORM bdc_field USING 'EKKO-EKGRP' p_ekgrp.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
zline = 1.
*overview by index - choose item
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_fieldi USING zline 'EKPO-EMATN' i_daten-matnr.
PERFORM bdc_fieldi USING zline 'EKPO-MENGE' i_daten-brgew.
PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
PERFORM bdc_fieldi USING zline 'EKPO-WERKS' i_daten-werks.
PERFORM bdc_fieldi USING zline 'RM06E-EEIND' zw_eeind.
PERFORM bdc_dynpro USING 'SAPLV69A' '9000'.
** PERFORM bdc_fieldi USING zline 'KONP-KBETR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'KONP-KPEIN' i_daten-kpein.
PERFORM bdc_fieldi USING zline 'KONP-KMEIN' i_daten-kmein.
** PERFORM bdc_dynpro USING 'SAPMM06E' '0111'.
** PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
** PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
*endif.
*org tab
ELSE.
ADD 1 TO zline.
* zline = 1.
*overview by index - choose item
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_fieldi USING zline 'EKPO-EMATN' i_daten-matnr.
PERFORM bdc_fieldi USING zline 'EKPO-MENGE' i_daten-brgew.
PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
PERFORM bdc_fieldi USING zline 'EKPO-WERKS' i_daten-werks.
PERFORM bdc_fieldi USING zline 'RM06E-EEIND' zw_eeind.
PERFORM bdc_dynpro USING 'SAPLV69A' '9000'.
** PERFORM bdc_fieldi USING zline 'KONP-KBETR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'KONP-KPEIN' i_daten-kpein.
PERFORM bdc_fieldi USING zline 'KONP-KMEIN' i_daten-kmein.
** PERFORM bdc_dynpro USING 'SAPMM06E' '0111'.
** PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
** PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
* if zline gt 13.
PERFORM bdc_field USING 'BDC_OKCODE' '=NP'.
zline = '1'.
* else.
* PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
PERFORM insert_bdctab USING 'ME21'.
Code: Alles auswählen.
FORM insert_bdctab USING transaktion.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = transaktion
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
TABLES
dynprotab = i_bdctab
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7
.
IF sy-subrc <> 0.
WRITE: / 'BDC_INSERT nicht möglich. Fehlernummer:', sy-subrc.
ENDIF.
REFRESH i_bdctab. "löscht Itab-Einträge
CLEAR i_bdctab. "löscht Kopfzeile
ENDFORM. "insert_bdctab
Code: Alles auswählen.
PERFORM bdc_dynpro USING 'SAPLMEGUI' '0014'.
* PERFORM bdc_dynpro USING 'SAPLMEGUI' '1105'.
PERFORM bdc_fieldh USING 'MEPO_TOPLINE-BSART' 'NB'.
PERFORM bdc_fieldh USING 'MEPO_TOPLINE-SUPERFIELD' p_lifnr.
PERFORM bdc_dynpro USING 'SAPLMEGUI' '1221'.
PERFORM bdc_fieldh USING 'MEPO1222-EKORG' 'BUAU'.
PERFORM bdc_fieldh USING 'MEPO1222-EKGRP' p_ekgrp.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
** poheader-comp_code = '1000'.
** poheader-doc_type = 'NEBP'.
*** POHEADER-VENDOR = I_EKKO-LIFNR.
** poheader-vendor = p_lifnr.
** poheader-purch_org = '200'.
** poheader-pur_group = '910'.
zline = 1.
*overview by index - choose item
** PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
** PERFORM bdc_fieldi USING zline 'EKPO-EMATN' i_daten-matnr.
** PERFORM bdc_fieldi USING zline 'EKPO-MENGE' i_daten-brgew.
** PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
** PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
** PERFORM bdc_fieldi USING zline 'EKPO-WERKS' i_daten-werks.
** PERFORM bdc_fieldi USING zline 'RM06E-EEIND' zw_eeind.
* PERFORM bdc_dynpro USING 'SAPLMEGUI' '1211'.
PERFORM bdc_dynpro USING 'SAPLMEGUI' '0014'.
PERFORM bdc_fieldi USING zline 'MEPO1211-EMATN' i_daten-matnr.
PERFORM bdc_fieldi USING zline 'MEPO1211-MENGE' i_daten-brgew.
PERFORM bdc_fieldi USING zline 'MEPO1211-NETPR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'MEPO1211-PEINH' i_daten-peinh.
PERFORM bdc_fieldi USING zline 'MEPO1211-BPRME' i_daten-bprme.
PERFORM bdc_fieldi USING zline 'MEPO1211-NAME1' i_daten-werks.
PERFORM bdc_fieldi USING zline 'MEPO1211-EEIND' zw_eeind.
** PERFORM bdc_dynpro USING 'SAPLV69A' '9000'.
*** PERFORM bdc_fieldi USING zline 'KONP-KBETR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'KONP-KPEIN' i_daten-kpein.
** PERFORM bdc_fieldi USING zline 'KONP-KMEIN' i_daten-kmein.
* PERFORM bdc_dynpro USING 'SAPMM06E' '0111'.
* PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
* PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
* PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
*endif.
*org tab
ELSE.
ADD 1 TO zline.
* zline = 1.
*overview by index - choose item
** PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
** PERFORM bdc_fieldi USING zline 'EKPO-EMATN' i_daten-matnr.
** PERFORM bdc_fieldi USING zline 'EKPO-MENGE' i_daten-brgew.
** PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
** PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
** PERFORM bdc_fieldi USING zline 'EKPO-WERKS' i_daten-werks.
** PERFORM bdc_fieldi USING zline 'RM06E-EEIND' zw_eeind.
* PERFORM bdc_dynpro USING 'SAPLMEGUI' '1211'.
PERFORM bdc_dynpro USING 'SAPLMEGUI' '0014'.
PERFORM bdc_fieldi USING zline 'MEPO1211-EMATN' i_daten-matnr.
PERFORM bdc_fieldi USING zline 'MEPO1211-MENGE' i_daten-brgew.
PERFORM bdc_fieldi USING zline 'MEPO1211-NETPR' i_daten-netpr.
PERFORM bdc_fieldi USING zline 'MEPO1211-PEINH' i_daten-peinh.
PERFORM bdc_fieldi USING zline 'MEPO1211-BPRME' i_daten-bprme.
PERFORM bdc_fieldi USING zline 'MEPO1211-NAME1' i_daten-werks.
PERFORM bdc_fieldi USING zline 'MEPO1211-EEIND' zw_eeind.
** PERFORM bdc_dynpro USING 'SAPLV69A' '9000'.
*** PERFORM bdc_fieldi USING zline 'KONP-KBETR' i_daten-netpr.
** PERFORM bdc_fieldi USING zline 'KONP-KPEIN' i_daten-kpein.
** PERFORM bdc_fieldi USING zline 'KONP-KMEIN' i_daten-kmein.
* PERFORM bdc_dynpro USING 'SAPMM06E' '0111'.
* PERFORM bdc_fieldi USING zline 'EKPO-NETPR' i_daten-netpr.
* PERFORM bdc_fieldi USING zline 'EKPO-PEINH' i_daten-peinh.
* PERFORM bdc_fieldi USING zline 'EKPO-BPRME' i_daten-bprme.
* if zline gt 13.
PERFORM bdc_field USING 'BDC_OKCODE' '=NP'.
zline = '1'.
* else.
* PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
ENDIF.
ENDLOOP.
PERFORM bdc_field USING 'BDC_OKCODE' '/11'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE' '=YES'.
Code: Alles auswählen.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = i_bdctab_header
** POHEADERX =
** POADDRVENDOR =
** TESTRUN =
** MEMORY_UNCOMPLETE =
** MEMORY_COMPLETE =
** POEXPIMPHEADER =
** POEXPIMPHEADERX =
** VERSIONS =
** NO_MESSAGING =
** NO_MESSAGE_REQ =
** NO_AUTHORITY =
** NO_PRICE_FROM_PO =
** PARK_COMPLETE =
** PARK_UNCOMPLETE =
** IMPORTING
** EXPPURCHASEORDER =
** EXPHEADER =
** EXPPOEXPIMPHEADER =
TABLES
return = t_return
poitem = i_bdctab
** 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 =
** SERIALNUMBER =
** SERIALNUMBERX =
** INVPLANHEADER =
** INVPLANHEADERX =
** INVPLANITEM =
** INVPLANITEMX =
.
Code: Alles auswählen.
types: BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
BUKRS TYPE EKKO-BUKRS,
LIFNR TYPE EKKO-LIFNR,
EKGRP TYPE EKKO-EKGRP,
WAERS TYPE EKKO-WAERS,
name(100) type c,
create(8) type c,
END OF TY_EKKO.
data: i_ekko type table of ty_ekko with header line.
data: wa_ekko like line of i_ekko.
DATA: w_filename TYPE string,
SELECTION-SCREEN BEGIN OF BLOCK bl_001 WITH FRAME TITLE text-001.
PARAMETERS:
* Pfad der Inputdatei
p_path TYPE rlgrap-filename DEFAULT 'C:\Bestellungen\' .
SELECTION-SCREEN END OF BLOCK bl_001.
* EKKO
refresh i_EKKO.
CONCATENATE p_path 'ekko.txt' INTO w_filename.
open dataset w_filename for input in text mode encoding utf-8 IGNORING CONVERSION ERRORS.
do.
read dataset w_filename into str.
if sy-subrc <> 0.
exit.
endif.
split str at cl_abap_char_utilities=>horizontal_tab
into
wa_ekko-ebeln
wa_ekko-bukrs
wa_ekko-lifnr
wa_ekko-ekgrp
wa_ekko-waers
wa_ekko-name
wa_ekko-create.
append wa_ekko to i_ekko.
enddo.
Code: Alles auswählen.
data: pohead type bapimepoheader.
data: poheadx type bapimepoheaderx.
data: poitem type table of bapimepoitem with header line.
data: poitemx type table of bapimepoitemx with header line.
data: exp_head type bapimepoheader.
data: return type table of bapiret2 with header line.
data: ex_po_number type bapimepoheader-po_number.
data: testrun type bapiflag-bapiflag.
*** hier musst du jetzt natürlich vor dem Aufruf die pohead, poheadx, poitem und poitemx füllen.
call function 'BAPI_PO_CREATE1'
EXPORTING
poheader = pohead
poheaderx = poheadx
testrun = testrun
NO_MESSAGING = 'X'
NO_MESSAGE_REQ = 'X'
NO_AUTHORITY = 'X'
NO_PRICE_FROM_PO = 'X'
IMPORTING
exppurchaseorder = ex_po_number
expheader = exp_head
TABLES
return = return
poitem = poitem
poitemx = poitemx.
commit work and wait.
loop at return.
write: return-message.
endloop.
Code: Alles auswählen.
constants : c_x value 'X'.
data: l_count like ekpo-ebelp.
* Header Level Data
pohead-comp_code = '4500'.
pohead-doc_type = 'NB' .
pohead-creat_date = sy-datum.
pohead-vendor = '0000200003'.
pohead-purch_org = '4500'.
pohead-pur_group = '499'.
pohead-langu = sy-langu.
pohead-doc_date = date.
pohead-OUR_REF = 'CN Bestellungen'.
pohead-CURRENCY = 'CNY'.
pohead-LANGU = 'EN'.
* Head Level BAPI X
poheadx-comp_code = c_x.
poheadx-doc_type = c_x.
poheadx-creat_date = c_x.
poheadx-vendor = c_x.
poheadx-langu = c_x.
poheadx-purch_org = c_x.
poheadx-pur_group = c_x.
poheadx-doc_date = c_x.
poheadx-OUR_REF = c_x.
poheadx-CURRENCY = c_x.
poheadx-LANGU = c_x.
* Item Level
loop at i_daten.
add 1 to l_count.
poitem-po_item = l_count.
poitem-material = i_daten-matnr.
poitem-plant = '4500'.
poitem-stge_loc = '4500'.
poitem-quantity = i_daten-mng02.
poitem-PO_UNIT = i_daten-meins.
poitem-net_price = i_daten-verpr.
poitem-price_unit = i_daten-peinh.
poitem-NO_MORE_GR = ' '.
poitem-FINAL_INV = 'X'.
poitem-NO_ROUNDING = 'X'.
poitem-PO_PRICE = '1'.
append poitem.
* Item level BAPI X
poitemx-po_item = l_count.
poitemx-po_itemx = c_x.
poitemx-material = c_x.
poitemx-plant = c_x .
poitemx-stge_loc = c_x .
poitemx-quantity = c_x .
poitemx-PO_UNIT = c_x.
poitemx-net_price = c_x.
poitemx-price_unit = c_x.
poitemx-NO_MORE_GR = c_x.
poitemx-FINAL_INV = c_x.
poitemx-NO_ROUNDING = c_x.
poitemx-PO_PRICE = c_x.
append poitemx.
endloop.
Code: Alles auswählen.
* Kopfdaten
TYPES: BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
lifnr TYPE ekko-lifnr,
ekgrp TYPE ekko-ekgrp,
waers TYPE ekko-waers,
name(100) TYPE c,
create(8) TYPE c,
END OF ty_ekko.
* Positionsdaten
TYPES: BEGIN OF i_fics, " occurs 0,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
brgew LIKE ekpo-brgew,
** menge LIKE ekpo-menge,
netpr(9),
peinh LIKE ekpo-peinh,
bprme LIKE ekpo-bprme,
eeind LIKE sy-datum, "YYYYMMDD
END OF i_fics.
DATA: BEGIN OF i_daten OCCURS 0,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
lgort LIKE ekpo-lgort,
brgew(17),
** menge(17),
netpr(14),
meins LIKE ekpo-meins,
peinh LIKE ekpo-peinh,
bprme LIKE ekpo-bprme,
eeind LIKE sy-datum, "YYYYMMDD
END OF i_daten.
Code: Alles auswählen.
* Kopfdaten
DATA: i_ekko TYPE TABLE OF ty_ekko WITH HEADER LINE.
DATA: wa_ekko LIKE LINE OF i_ekko.
* Positionsdaten (aus dem txt-file)
DATA: gt_import TYPE TABLE OF i_fics.
FIELD-SYMBOLS: <gw_import> LIKE LINE OF gt_import.
Code: Alles auswählen.
PARAMETERS: p_name LIKE apqi-groupid DEFAULT 'BUAU_PO' OBLIGATORY,
p_file(128) TYPE c DEFAULT 'C:\xxxxxxxx.txt' OBLIGATORY LOWER CASE,
p_lifnr LIKE ekko-lifnr OBLIGATORY,
p_ekgrp LIKE ekko-ekgrp OBLIGATORY.
DATA zfile TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_extension = 'txt'
file_filter = '*.txt'
multiselection = abap_false
CHANGING
file_table = retfiletable
rc = retrc
user_action = retuseraction.
READ TABLE retfiletable INTO p_file INDEX 1.
START-OF-SELECTION.
* Unicode / Releasewechsel AJ/03.01.2005
zfile = p_file.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = zfile
has_field_separator = abap_true
CHANGING
data_tab = gt_import.
CHECK gt_import IS NOT INITIAL.
Code: Alles auswählen.
PERFORM i_daten_aufbauen.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Form i_daten_aufbauen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM i_daten_aufbauen.
LOOP AT gt_import ASSIGNING <gw_import>.
IF <gw_import>-matnr CO ' 0123456789'.
UNPACK <gw_import>-matnr TO <gw_import>-matnr.
ENDIF.
IF <gw_import>-matnr IS INITIAL OR
<gw_import>-matnr CN '0123456789'.
CONTINUE.
ENDIF.
TRANSLATE <gw_import>-netpr USING '$ '.
TRANSLATE <gw_import>-netpr USING ',.'.
WRITE <gw_import>-netpr TO i_daten-netpr.
WRITE <gw_import>-brgew TO i_daten-brgew.
MOVE-CORRESPONDING <gw_import> TO i_daten.
APPEND i_daten.
CLEAR i_daten.
ENDLOOP.
ENDFORM. " i_daten_aufbauen
Code: Alles auswählen.
* Header Level Data
pohead-comp_code = '6101'.
pohead-doc_type = 'NB' .
pohead-creat_date = sy-datum.
** pohead-vendor = '0000200003'.
pohead-vendor = p_lifnr.
** pohead-purch_org = '4500'.
pohead-purch_org = 'BUAU'.
** pohead-pur_group = '499'.
pohead-pur_group = p_ekgrp.
pohead-langu = sy-langu.
** pohead-doc_date = date.
pohead-doc_date = i_ekko-create.
pohead-currency = 'AUD'.
pohead-langu = 'EN'.
* Head Level BAPI X
poheadx-comp_code = c_x.
poheadx-doc_type = c_x.
poheadx-creat_date = c_x.
poheadx-vendor = c_x.
poheadx-langu = c_x.
poheadx-purch_org = c_x.
poheadx-pur_group = c_x.
poheadx-doc_date = c_x.
poheadx-currency = c_x.
poheadx-langu = c_x.
* Item Level
LOOP AT i_daten.
ADD 1 TO l_count.
poitem-po_item = l_count.
poitem-material = i_daten-matnr.
** poitem-plant = '4500'.
poitem-plant = i_daten-werks.
poitem-stge_loc = 'BRI'.
poitem-quantity = i_daten-brgew.
** poitem-po_unit = i_daten-meins. "Bestellmengeneinheit
poitem-po_unit = i_daten-bprme. "Bestellpreismengeneinheit
poitem-net_price = i_daten-netpr.
poitem-price_unit = i_daten-peinh.
poitem-no_more_gr = ' '.
poitem-final_inv = 'X'.
poitem-no_rounding = 'X'.
poitem-po_price = '1'.
APPEND poitem.
* Item level BAPI X
poitemx-po_item = l_count.
poitemx-po_itemx = c_x.
poitemx-material = c_x.
poitemx-plant = c_x .
poitemx-stge_loc = c_x .
poitemx-quantity = c_x .
poitemx-po_unit = c_x.
poitemx-net_price = c_x.
poitemx-price_unit = c_x.
poitemx-no_more_gr = c_x.
poitemx-final_inv = c_x.
poitemx-no_rounding = c_x.
poitemx-po_price = c_x.
APPEND poitemx.
ENDLOOP.
Code: Alles auswählen.
* Header Level Data
pohead-comp_code = '6101'.
pohead-doc_type = 'NB' .
pohead-creat_date = sy-datum.
** pohead-vendor = '0000200003'.
pohead-vendor = p_lifnr.
** pohead-purch_org = '4500'.
pohead-purch_org = 'BUAU'.
** pohead-pur_group = '499'.
pohead-pur_group = p_ekgrp.
pohead-langu = sy-langu.
** pohead-doc_date = date.
********************************************************
pohead-doc_date = i_ekko-create.
********************************************************
pohead-currency = 'AUD'.
pohead-langu = 'EN'.
* Head Level BAPI X
Code: Alles auswählen.
* Item Level
LOOP AT i_daten.
ADD 1 TO l_count.
SELECT SINGLE datfm FROM usr01 INTO l_datfm
WHERE bname = sy-uname.
CASE l_datfm.
WHEN '1'.
CONCATENATE i_daten-eeind+6(2) i_daten-eeind+4(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '.'.
WHEN '2'.
CONCATENATE i_daten-eeind+4(2) i_daten-eeind+6(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '/'.
WHEN '3'.
CONCATENATE i_daten-eeind+4(2) i_daten-eeind+6(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '.'.
WHEN '4'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '.'.
WHEN '5'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '/'.
WHEN '6'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '-'.
WHEN OTHERS.
ENDCASE.
poitem-po_item = l_count.
poitem-material = i_daten-matnr.
poitem-plant = i_daten-werks.
poitem-stge_loc = 'BRI'.
poitem-quantity = i_daten-menge. "Bestellmenge
** poitem-quantity = i_daten-brgew. "Bruttogewicht
poitem-orderpr_un = i_daten-bprme. "Bestellpreismengeneinheit
poitem-net_price = i_daten-netpr.
poitem-price_unit = i_daten-peinh.
poitem-no_more_gr = ' '.
poitem-final_inv = 'X'.
poitem-no_rounding = 'X'.
poitem-po_price = '1'.
APPEND poitem.
* Item level BAPI X
poitemx-po_item = l_count.
poitemx-po_itemx = c_x.
poitemx-material = c_x.
poitemx-plant = c_x .
poitemx-stge_loc = c_x .
poitemx-quantity = c_x .
poitemx-orderpr_un = c_x.
poitemx-net_price = c_x.
poitemx-price_unit = c_x.
poitemx-no_more_gr = c_x.
poitemx-final_inv = c_x.
poitemx-no_rounding = c_x.
poitemx-po_price = c_x.
APPEND poitemx.
poschedule-po_item = l_count.
poschedule-del_datcat_ext = 'T'.
poschedule-delivery_date = zw_eeind.
** poschedule-quantity = i_daten-menge.
poschedule-quantity = poitem-quantity.
APPEND poschedule.
* Item level BAPI X
poschedulex-po_item = l_count.
poschedulex-po_itemx = c_x.
poschedulex-del_datcat_ext = c_x.
poschedulex-delivery_date = c_x.
poschedulex-quantity = c_x.
APPEND poschedulex.
ENDLOOP.
Code: Alles auswählen.
** poschedule-quantity = i_daten-menge.
poschedule-quantity = '10'.
APPEND poschedule.
Code: Alles auswählen.
loop at i_daten.
poitem-po_item = l_count.
poitem-material = i_daten-matnr.
poitem-plant = i_daten-werks.
poitem-stge_loc = 'BRI'.
** poitem-quantity = i_daten-menge. "Bestellmenge
poitem-orderpr_un = i_daten-bprme. "Bestellpreismengeneinheit
poitem-net_price = i_daten-netpr.
poitem-price_unit = i_daten-peinh.
poitem-no_more_gr = ' '.
poitem-final_inv = 'X'.
poitem-no_rounding = 'X'.
poitem-po_price = '1'.
APPEND poitem.
* Item level BAPI X
poitemx-po_item = l_count.
poitemx-po_itemx = c_x.
poitemx-material = c_x.
poitemx-plant = c_x .
poitemx-stge_loc = c_x .
** poitemx-quantity = c_x .
poitemx-orderpr_un = c_x.
poitemx-net_price = c_x.
poitemx-price_unit = c_x.
poitemx-no_more_gr = c_x.
poitemx-final_inv = c_x.
poitemx-no_rounding = c_x.
poitemx-po_price = c_x.
APPEND poitemx.
poschedule-po_item = l_count.
poschedule-del_datcat_ext = 'T'.
poschedule-delivery_date = zw_eeind.
poschedule-quantity = i_daten-menge.
** poschedule-quantity = '0'.
** poschedule-quantity = poitem-quantity.
APPEND poschedule.
* Item level BAPI X
poschedulex-po_item = l_count.
poschedulex-po_itemx = c_x.
poschedulex-del_datcat_ext = c_x.
poschedulex-delivery_date = c_x.
poschedulex-quantity = c_x.
APPEND poschedulex.
endloop.
Code: Alles auswählen.
...
* Item Level
LOOP AT i_daten.
ADD 1 TO l_count.
poitem-po_item = l_count.
poitem-material = i_daten-matnr.
poitem-plant = i_daten-werks.
poitem-stge_loc = 'BRI'.
poitem-quantity = i_daten-menge. "Bestellmenge
poitem-orderpr_un = i_daten-bprme. "Bestellpreismengeneinheit
poitem-net_price = i_daten-netpr.
poitem-price_unit = i_daten-peinh.
poitem-no_more_gr = ' '.
poitem-final_inv = 'X'.
poitem-no_rounding = 'X'.
poitem-po_price = '1'.
APPEND poitem.
* Item level BAPI X
poitemx-po_item = l_count.
poitemx-po_itemx = c_x.
poitemx-material = c_x.
poitemx-plant = c_x .
poitemx-stge_loc = c_x .
poitemx-quantity = c_x .
** poitemx-po_unit = c_x.
poitemx-orderpr_un = c_x.
poitemx-net_price = c_x.
poitemx-price_unit = c_x.
poitemx-no_more_gr = c_x.
poitemx-final_inv = c_x.
poitemx-no_rounding = c_x.
poitemx-po_price = c_x.
APPEND poitemx.
* poschedule-po_item = l_count.
* poschedule-del_datcat_ext = 'T'.
* poschedule-delivery_date = zw_eeind.
* poschedule-quantity = i_daten-menge.
*** poschedule-quantity = '0'.
*** poschedule-quantity = poitem-quantity.
* APPEND poschedule.
** Item level BAPI X
* poschedulex-po_item = l_count.
* poschedulex-po_itemx = c_x.
* poschedulex-del_datcat_ext = c_x.
* poschedulex-delivery_date = c_x.
* poschedulex-quantity = c_x.
* APPEND poschedulex.
* poitem-quantity = poitem-quantity - poschedule-quantity.
* APPEND poitem.
** CLEAR poschedule.
CLEAR poitem.
ENDLOOP.
** REFRESH poschedule.
clear l_count.
LOOP AT i_daten.
** LOOP AT poitem.
ADD 1 TO l_count.
SELECT SINGLE datfm FROM usr01 INTO l_datfm
WHERE bname = sy-uname.
CASE l_datfm.
WHEN '1'.
CONCATENATE i_daten-eeind+6(2) i_daten-eeind+4(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '.'.
WHEN '2'.
CONCATENATE i_daten-eeind+4(2) i_daten-eeind+6(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '/'.
WHEN '3'.
CONCATENATE i_daten-eeind+4(2) i_daten-eeind+6(2) i_daten-eeind(4)
INTO zw_eeind SEPARATED BY '.'.
WHEN '4'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '.'.
WHEN '5'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '/'.
WHEN '6'.
CONCATENATE i_daten-eeind(4) i_daten-eeind+4(2) i_daten-eeind+6(2)
INTO zw_eeind SEPARATED BY '-'.
WHEN OTHERS.
ENDCASE.
poschedule-po_item = l_count. "poitem-po_item.
poschedule-del_datcat_ext = 'T'.
poschedule-delivery_date = zw_eeind.
poschedule-quantity = i_daten-menge.
** poschedule-quantity = '0'.
** poschedule-quantity = poitem-quantity.
APPEND poschedule.
* Item level BAPI X
poschedulex-po_item = l_count.
poschedulex-po_itemx = c_x.
poschedulex-del_datcat_ext = c_x.
poschedulex-delivery_date = c_x.
poschedulex-quantity = c_x.
APPEND poschedulex.
CLEAR poschedule.
ENDLOOP.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = pohead
poheaderx = poheadx
testrun = testrun
no_messaging = 'X'
no_message_req = 'X'
no_authority = 'X'
no_price_from_po = 'X'
IMPORTING
exppurchaseorder = ex_po_number
expheader = exp_head
TABLES
return = return
poitem = poitem
poitemx = poitemx
poschedule = poschedule
poschedulex = poschedulex.
COMMIT WORK AND WAIT.
...