nicky555 написал:
Вообще, есть BAPI-модуль BAPI_WHSE_TO_CREATE_STOCK. Вроде бы для ввода пригодный,
но в первых строчках его (4.6С) есть такой код

:
Цитата:
* function module is still under construction and not ready to use.
clear return.
move: 'Function module is not released for public use!'
to return-message.
append return.
exit.
Прикольно, как говорится, но мало... Может, в более старших версиях что-то изменилось?
в erp2004 полноценный код.
Code:
FUNCTION BAPI_WHSE_TO_CREATE_STOCK.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(WHSENUMBER) LIKE BAPI2018E-WHSENUMBER
*" VALUE(WHSEMVMT) LIKE BAPI2018E-WHSE_MVMT
*" VALUE(REQNUMBER) LIKE BAPI2018E-REQ_NUMBER DEFAULT SPACE
*" VALUE(REQTYPE) LIKE BAPI2018E-REQ_TYPE DEFAULT SPACE
*" VALUE(ADDREFNO) LIKE BAPI2018E-ADD_REF_NO DEFAULT SPACE
*" VALUE(NOTPRIIND) LIKE BAPI2018E-NOT_PRI_IND DEFAULT SPACE
*" VALUE(PRICTLIND) LIKE BAPI2018E-PRI_CTL_IND DEFAULT SPACE
*" VALUE(MINWMIND) LIKE BAPI2018E-MIN_WM_IND DEFAULT SPACE
*" VALUE(ADDREM) LIKE BAPI2018E-ADD_REM DEFAULT SPACE
*" TABLES
*" IMPORTDATA STRUCTURE BAPI2018D
*" CREATEDATA STRUCTURE BAPICR2018RET
*" RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------
data: lt_ltap_creat like ltap_creat occurs 0 with header line.
data: lt_ltak_vb like ltak_vb occurs 0 with header line.
data: lt_ltap_vb like ltap_vb occurs 0 with header line.
data: lv_tanum like ltak-tanum.
data: lv_line_no type i.
* function module is still under construction and not ready to use.
clear return.
move: text-001 to return-message.
append return.
exit.
* initialization of local data
refresh: CreateData,
lt_ltap_creat,
lt_ltak_vb,
lt_ltap_vb,
return.
clear: CreateData,
lt_ltap_creat,
lt_ltak_vb,
lt_ltap_vb,
return.
* check if required data are entered
if WHSENUMBER is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'A' to return-type,
'WHSENUMBER' to return-message_v1.
move: 1 to return-row,
'WHSENUMBER' to return-field,
'BAPI2018E' to return-parameter.
append return.
* on error leave fm
exit.
endif.
if WhseMvmt is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'A' to return-type,
'WHSE_MOVEMENT' to return-message_v1.
move: 1 to return-row,
'WHSEMVMT' to return-field,
'BAPI2018E' to return-parameter.
append return.
* on error leave fm
exit.
endif.
* check input data on consistency and authorization
* only existence and authorization for
* warehouse number and movement type is checked
call function 'L_2018_INPUT_DATA_CHECK'
exporting ev_lgnum = whsenumber
ev_bwlvs = WhseMvmt
tables ct_return = return
exceptions no_authority = 01
no_master_data = 02.
if sy-subrc <> 0.
* on error no data are returned to caller
exit.
endif.
* fill import data into transfer data structure for call of fm
loop at ImportData.
clear lt_ltap_creat.
move ImportData-MATERIAL to lt_ltap_creat-MATNR.
move ImportData-PLANT to lt_ltap_creat-WERKS.
move ImportData-REQ_QUTY to lt_ltap_creat-ANFME.
move ImportData-ALT_UNIT to lt_ltap_creat-ALTME.
move ImportData-STGE_LOC to lt_ltap_creat-LGORT.
move ImportData-BATCH to lt_ltap_creat-CHARG.
move ImportData-STOCK_CAT to lt_ltap_creat-BESTQ.
move ImportData-SPEC_STOCK to lt_ltap_creat-SOBKZ.
* Special stock number must be in the internal format !!!
move ImportData-SP_STCK_NO to lt_ltap_creat-SONUM.
move ImportData-STO_UNIT_TYPE to lt_ltap_creat-LETYP.
move ImportData-GR_RCPT to lt_ltap_creat-WEMPF.
move ImportData-D_STGE_TYPE to lt_ltap_creat-NLTYP.
move ImportData-D_STGE_AREA to lt_ltap_creat-NLBER.
move ImportData-D_STGE_BIN to lt_ltap_creat-NLPLA.
move ImportData-D_STGE_BIN_P to lt_ltap_creat-NPPOS.
move ImportData-D_STGE_UNIT_NO to lt_ltap_creat-NLENR.
move ImportData-CONFIRM_IND to lt_ltap_creat-SQUIT.
move ImportData-CERTIFIC_NO to lt_ltap_creat-ZEUGN.
move ImportData-GR_DATE to lt_ltap_creat-WDATU.
move ImportData-S_STGE_TYPE to lt_ltap_creat-VLTYP.
move ImportData-S_STGE_BIN to lt_ltap_creat-VLPLA.
move ImportData-EXPIRYDATE to lt_ltap_creat-VFDAT.
* Get unit of measure thru iso code
IF NOT ImportData-ALT_UNIT_ISO IS INITIAL.
CALL FUNCTION 'UNIT_OF_MEASURE_ISO_TO_SAP'
EXPORTING
ISO_CODE = ImportData-ALT_UNIT_ISO
IMPORTING
SAP_CODE = lt_ltap_creat-ALTME
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
clear return.
move: 'LBAPI' to return-id,
'008' to return-number,
'E' to return-type,
ImportData-ALT_UNIT_ISO to return-message_v1,
'ALT_UNIT_ISO' to return-message_v2.
move: sy-tabix to return-row,
'ALT_UNIT_ISO' to return-field,
'BAPI2018D' to return-parameter.
append return.
* on error this line is skipped and no stock is created
continue.
ENDIF.
ENDIF.
* check if required data are entered
if ImportData-MATERIAL is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'E' to return-type,
'MATERIAL' to return-message_v1.
move: sy-tabix to return-row,
'MATERIAL' to return-field,
'BAPI2018D' to return-parameter.
append return.
* on error this line is skipped and no stock is created
continue.
endif.
if ImportData-PLANT is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'E' to return-type,
'PLANT' to return-message_v1.
move: sy-tabix to return-row,
'PLANT' to return-field,
'BAPI2018D' to return-parameter.
append return.
* on error this line is skipped and no stock is created
continue.
endif.
if ImportData-REQ_QUTY is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'E' to return-type,
'REQUESTED_QUANTITY' to return-message_v1.
move: sy-tabix to return-row,
'REQ_QUTY' to return-field,
'BAPI2018D' to return-parameter.
append return.
* on error this line is skipped and no stock is created
continue.
endif.
if ImportData-ALT_UNIT is initial.
clear return.
move: 'LBAPI' to return-id,
'010' to return-number,
'E' to return-type,
'ALTERNATIV_UNIT' to return-message_v1.
move: sy-tabix to return-row,
'ALT_UNIT' to return-field,
'BAPI2018D' to return-parameter.
append return.
* on error this line is skipped and no stock is created
continue.
endif.
append lt_ltap_creat.
endloop.
* call fm to create transfer orders with quants in the end
* I_COMMIT_WORK always have to be space -> Commit outside fm
CALL FUNCTION 'L_TO_CREATE_MULTIPLE'
EXPORTING
I_LGNUM = whsenumber
I_BWLVS = WhseMvmt
I_BETYP = ReqType
I_BENUM = ReqNumber
I_LZNUM = AddRefNo
I_NIDRU = NotPriInd
I_DRUKZ = PriCtlInd
I_NOSPL = 'X'
I_UPDATE_TASK = ' '
I_COMMIT_WORK = ' '
I_BNAME = SY-UNAME
I_KOMPL = 'X'
I_SOLEX = 0
I_PERNR = 0
I_MINWM = MinWmInd
I_AUSFB = AddRem
IMPORTING
E_TANUM = lv_tanum
TABLES
T_LTAP_CREAT = lt_ltap_creat
T_LTAK = lt_ltak_vb
T_LTAP_VB = lt_ltap_vb
EXCEPTIONS
NO_TO_CREATED = 1
BWLVS_WRONG = 2
BETYP_WRONG = 3
BENUM_MISSING = 4
BETYP_MISSING = 5
FOREIGN_LOCK = 6
VLTYP_WRONG = 7
VLPLA_WRONG = 8
VLTYP_MISSING = 9
NLTYP_WRONG = 10
NLPLA_WRONG = 11
NLTYP_MISSING = 12
RLTYP_WRONG = 13
RLPLA_WRONG = 14
RLTYP_MISSING = 15
SQUIT_FORBIDDEN = 16
MANUAL_TO_FORBIDDEN = 17
LETYP_WRONG = 18
VLPLA_MISSING = 19
NLPLA_MISSING = 20
SOBKZ_WRONG = 21
SOBKZ_MISSING = 22
SONUM_MISSING = 23
BESTQ_WRONG = 24
LGBER_WRONG = 25
XFELD_WRONG = 26
DATE_WRONG = 27
DRUKZ_WRONG = 28
LDEST_WRONG = 29
UPDATE_WITHOUT_COMMIT = 30
NO_AUTHORITY = 31
MATERIAL_NOT_FOUND = 32
LENUM_WRONG = 33
MATNR_MISSING = 34
WERKS_MISSING = 35
ANFME_MISSING = 36
ALTME_MISSING = 37
LGORT_WRONG_OR_MISSING = 38
OTHERS = 39
.
if sy-subrc <> 0.
move: sy-msgid to return-id,
sy-msgno to return-number,
sy-msgty to return-type,
sy-msgv1 to return-message_v1,
sy-msgv2 to return-message_v2,
sy-msgv3 to return-message_v3,
sy-msgv4 to return-message_v4.
append return.
* on error no data are returned to caller
exit.
endif.
* mapping internal to external data format.
loop at lt_ltap_vb.
move lt_ltap_vb-lgnum to CreateData-WHSENUMBER.
move lt_ltap_vb-tanum to CreateData-TRANSFERORDERNO.
move lt_ltap_vb-tapos to CreateData-TRANSFERORDERPOS.
move lt_ltap_vb-nltyp to CreateData-STGE_TYPE.
move lt_ltap_vb-nlpla to CreateData-STGE_BIN.
move lt_ltap_vb-nppos to CreateData-BIN_POSIT.
move lt_ltap_vb-nlqnr to CreateData-QUANT.
append CreateData.
endloop.
ENDFUNCTION.