‎2007 Dec 11 4:34 AM
Hi Experts...
When will decide go for custom bapis? if custom bapis r required what r the technical details required to develop custom bapis?
In implementation of Bapi which sap business object can be used?How to find?
please guide me to develop custom bapi which will be create material document no by taking static inputs? BAPI_GOODSMVT_CRATE not suitable for my requirements because import and export parameters r different from my requirement...
points rewarded
thanks in advance..
‎2007 Dec 11 10:06 AM
hi siva,
check this code.
&----
*& Report ZBDCBATCH_CREATE
*&
&----
*&
*&
&----
REPORT ZBDCBATCH_CREATE
NO STANDARD PAGE HEADING LINE-SIZE 255.
PARAMETERS : P_FILE LIKE RLGRAP-FILENAME.
S_MODE LIKE HRVCOST-MODE.
*data: attributes like BAPIBATCHATT,
batch_new like BAPIBATCHKEY-BATCH,
attributes_new like BAPIBATCHATT,
return like BAPIRET2 occurs 0 with header line,
BATCH_CLASS like BAPIBATCHCTRL occurs 0 with header line,
DATA : P_FILE1 TYPE STRING,
L_FNAME1 TYPE STRING.
*data: begin of IT_UPLOAD occurs 0,
material like BAPIBATCHKEY-MATERIAL,
batch like BAPIBATCHKEY-BATCH,
plant like BAPIBATCHKEY-PLANT,
EXPIRYDATE like BAPIBATCHATT-EXPIRYDATE,
VENDRBATCH like BAPIBATCHATT-VENDRBATCH,
LASTGRDATE like BAPIBATCHATT-LASTGRDATE,
NEXTINSPEC like BAPIBATCHATT-NEXTINSPEC,
PROD_DATE like BAPIBATCHATT-PROD_DATE,
Class like BAPIBATCHCTRL-CLASS_NUM,
DOCLASSIFY like BAPIBATCHCTRL-DOCLASSIFY,
end of IT_UPLOAD.
data: begin of it_data occurs 0,
sr_no(5) type n,
maktx like goitem-maktx, "material no.
erfmg(13), "LIKE goitem-erfmg, "quantity
erfme(3),
exbwr(13)," LIKE goitem-exbwr, "value of material
name1 like goitem-name1, "plant
lgobe like goitem-lgobe, "desc. of storage loc
charg like goitem-charg, "batch
hsdat like goitem-hsdat, "manufacture date
vfdat like goitem-vfdat, "expiry date
bwtar like goitem-bwtar, "valuation type
anzgeb(6)," LIKE goitem-anzgeb, "no. of containers
gebeh like goitem-gebeh, "container unit
bldat like gohead-bldat, "document date
budat like gohead-budat, "posting date
bktxt like gohead-bktxt, "document header text
sgtxt like goitem-sgtxt, "item text
bwart like godefault_tv-bwart, "goods movement
flag(1) type c, "erroneous record 'X' is erroneous.
count(10) type c, "record no.
end of it_data.
DATA : V_HSDAT(8),
V_VFDAT(8).
data : it_header like BAPI2017_GM_HEAD_01 OCCURS 0 WITH HEADER LINE,
it_code like BAPI2017_GM_CODE,
it_return like BAPIRET2 OCCURS 0 WITH HEADER LINE,
it_item like BAPI2017_GM_ITEM_CREATE OCCURS 0 WITH HEADER LINE.
data : begin of itab1 occurs 0,
bktxt like gohead-bktxt,
maktx like goitem-maktx,
name1 like goitem-name1,
charg like goitem-charg,
text(220),
end of itab1.
Get upload file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
STATIC = ' '
MASK = ' '
CHANGING
FILE_NAME = P_FILE
EXCEPTIONS
MASK_TOO_LONG = 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.
*
*
START-OF-SELECTION.
P_FILE1 = P_FILE.
***upload data fromt he file in the internal table
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P_FILE1
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_DATA
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
loop at IT_DATA.
itab1-bktxt = it_data-bktxt.
itab1-maktx = it_data-maktx.
itab1-name1 = it_data-name1.
itab1-charg = it_data-charg.
*move : IT_DATA-BLDAT to IT_HEADER-BLDAT,
IT_DATA-BUDAT TO IT_HEADER-BUDAT,
IT_UPLOAD-VENDRBATCH to attributes-VENDRBATCH,
IT_UPLOAD-LASTGRDATE to attributes-LASTGRDATE,
IT_UPLOAD-NEXTINSPEC to attributes-NEXTINSPEC,
IT_UPLOAD-PROD_DATE to attributes-PROD_DATE.
CLEAR : V_HSDAT, v_vfdat.
CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
EXPORTING
datum = IT_DATA-HSDAT
dtype = 'DATS'
IMPORTING
ERROR =
IDATE = V_HSDAT
MESSG =
MSGLN =
.
CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
EXPORTING
datum = IT_DATA-VFDAT
dtype = 'DATS'
IMPORTING
ERROR =
IDATE = V_VFDAT
MESSG =
MSGLN =
.
MOVE :
IT_DATA-MAKTX TO IT_ITEM-MATERIAL, "MATERIAL
IT_DATA-ERFMG TO IT_ITEM-ENTRY_QNT, "QUANTITY
IT_DATA-ERFME TO IT_ITEM-ENTRY_UOM, "UNIT
IT_DATA-EXBWR TO IT_ITEM-AMOUNT_LC, "value of material
IT_DATA-NAME1 TO IT_ITEM-PLANT, "plant
IT_DATA-LGOBE TO IT_ITEM-STGE_LOC, "STOREGE LOCATION
IT_DATA-CHARG TO IT_ITEM-BATCH, "BATCH
V_HSDAT TO IT_ITEM-PROD_DATE, "MANU DATE
V_VFDAT TO IT_ITEM-EXPIRYDATE, "EXP DATE
IT_DATA-BWTAR TO IT_ITEM-VAL_TYPE, "valuation type
IT_DATA-anzgeb TO IT_ITEM-SU_PL_STCK_1, "CONTAINER
IT_DATA-bldat TO IT_HEADER-DOC_DATE , "document date
IT_DATA-budat TO IT_HEADER-PSTNG_DATE, "posting date
IT_DATA-bktxt TO IT_HEADER-HEADER_TXT, "document header text
IT_DATA-sgtxt TO IT_ITEM-ITEM_TEXT, "item text
IT_DATA-bwart TO IT_ITEM-MOVE_TYPE. "goods movement
IF SY-MANDT = '510'.
IT_HEADER-PSTNG_DATE = '20071030'.
IT_HEADER-DOC_DATE = '20071030'.
ELSEIF SY-MANDT = '650'.
IT_HEADER-PSTNG_DATE = '20071030'.
IT_HEADER-DOC_DATE = '20071030'.
ELSEIF SY-MANDT = '670' OR SY-MANDT = '700'.
IT_HEADER-PSTNG_DATE = '20070930'.
IT_HEADER-DOC_DATE = '20070930'.
ENDIF.
APPEND IT_ITEM.
APPEND IT_HEADER.
*BATCH_CLASS-CLASS_NUM = 'BATCH_DETAILS'.
*BATCH_CLASS-DOCLASSIFY = 'X'.
*CALL FUNCTION 'BAPI_BATCH_CREATE'
EXPORTING
MATERIAL = IT_UPLOAD-Material
BATCH = IT_UPLOAD-batch
PLANT = IT_UPLOAD-plant
BATCHATTRIBUTES = attributes
BATCHCONTROLFIELDS = BATCH_CLASS
BATCHSTORAGELOCATION =
INTERNALNUMBERCOM =
EXTENSION1 =
MATERIAL_EVG =
IMPORTING
BATCH = batch_new
BATCHATTRIBUTES = attributes_new
TABLES
RETURN = return.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = it_header
goodsmvt_code = '05'
TESTRUN = ' '
GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET =
MATERIALDOCUMENT =
MATDOCUMENTYEAR =
tables
goodsmvt_item = it_item
GOODSMVT_SERIALNUMBER =
return = it_return
GOODSMVT_SERV_PART_DATA =
EXTENSIONIN =
.
commit WORK.
loop at it_return.
itab1-text = it_return-MESSAGE.
append itab1.
*clear itab1.
endloop.
clear itab1.
refresh it_header.
refresh it_item.
refresh it_return.
clear: it_header, it_item, it_return.
ENDLOOP.
SMIT 03/11/2007
CLEAR l_fname1.
l_fname1 = 'C:\Msg_.xls'.
CONCATENATE 'C:\Msg' sy-datum '-' sy-uzeit '.xls' INTO l_fname1.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = l_fname1
filetype = 'ASC'
append = 'X'
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_EOL = ABAP_TRUE
IMPORTING
FILELENGTH =
TABLES
data_tab = ITAB1
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF sy-subrc <> 0.
WRITE:/ 'error in dowloading file'.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
reward if useful