Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Bapi Query

Former Member
0 Likes
478

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..

1 REPLY 1
Read only

Former Member
0 Likes
385

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