‎2008 Jun 11 12:12 PM
can anyone tell me what should i pass with BAPI_DOCUMENT_CREATE2 FM?
i know need to pass some tables here but which?
points will be rewarded.
‎2008 Jun 11 12:13 PM
hii,
see code given below.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: Document Originals Data. *
*"--------------------------------------------------------------------*
DATA:
lt_files LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: short texts Data *
*"--------------------------------------------------------------------*
DATA:
lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: short texts Data *
*"--------------------------------------------------------------------*
DATA:
lt_drad LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE,
ls_return LIKE bapiret2, " Work Area to hold Return
" parameter
ls_doc LIKE bapi_doc_draw2.
" Work Area to hold BAPIS DMS:
" Document Data
** Allcoate document data
ls_doc-documenttype = ls_data-doc_type.
* ls_doc-documentnumber = ls_data-rec_no.
ls_doc-documentversion = ls_data-doc_ver.
ls_doc-documentpart = ls_data-doc_part.
ls_doc-description = ls_data-description.
ls_doc-username = ls_data-username.
ls_doc-statusextern = ls_data-statusextern.
ls_doc-statusintern = ls_data-statusintern.
ls_doc-statuslog = ls_data-statuslog.
ls_doc-laboratory = ls_data-laboratory.
lt_files-storagecategory = ls_data-datacarrier1.
lt_files-docfile = ls_data-docfile1 .
lt_files-wsapplication = ls_data-wsapplication1.
lt_files-originaltype = lv_cnt.
APPEND lt_files.
* Object link to material master
lt_drad-objecttype = 'MARA'.
w_matnr = ls_data-matnr.
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING: documentdata = ls_doc
IMPORTING: documenttype = lf_doctype
documentnumber = lf_docnumber
documentpart = lf_docpart
documentversion = lf_docversion
return = ls_return
TABLES: documentdescriptions = lt_drat
objectlinks = lt_drad
documentfiles = lt_files.thx.
twinkal.
‎2008 Jun 11 12:13 PM
hii,
see code given below.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: Document Originals Data. *
*"--------------------------------------------------------------------*
DATA:
lt_files LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: short texts Data *
*"--------------------------------------------------------------------*
DATA:
lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE.
*"--------------------------------------------------------------------*
* Internal table to hold BAPIS DMS: short texts Data *
*"--------------------------------------------------------------------*
DATA:
lt_drad LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE,
ls_return LIKE bapiret2, " Work Area to hold Return
" parameter
ls_doc LIKE bapi_doc_draw2.
" Work Area to hold BAPIS DMS:
" Document Data
** Allcoate document data
ls_doc-documenttype = ls_data-doc_type.
* ls_doc-documentnumber = ls_data-rec_no.
ls_doc-documentversion = ls_data-doc_ver.
ls_doc-documentpart = ls_data-doc_part.
ls_doc-description = ls_data-description.
ls_doc-username = ls_data-username.
ls_doc-statusextern = ls_data-statusextern.
ls_doc-statusintern = ls_data-statusintern.
ls_doc-statuslog = ls_data-statuslog.
ls_doc-laboratory = ls_data-laboratory.
lt_files-storagecategory = ls_data-datacarrier1.
lt_files-docfile = ls_data-docfile1 .
lt_files-wsapplication = ls_data-wsapplication1.
lt_files-originaltype = lv_cnt.
APPEND lt_files.
* Object link to material master
lt_drad-objecttype = 'MARA'.
w_matnr = ls_data-matnr.
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING: documentdata = ls_doc
IMPORTING: documenttype = lf_doctype
documentnumber = lf_docnumber
documentpart = lf_docpart
documentversion = lf_docversion
return = ls_return
TABLES: documentdescriptions = lt_drat
objectlinks = lt_drad
documentfiles = lt_files.thx.
twinkal.
‎2008 Jun 11 12:15 PM
Check the sample code.
REPORT ztest_bapi LINE-SIZE 500 NO STANDARD PAGE HEADING.
*----------------------------------------------------------------------*
* D A T A *
*----------------------------------------------------------------------*
TYPES:
BEGIN OF ty_tab,
doc_type(3),
rec_no,
doc_ver(2),
doc_part(3),
description(40),
username(12),
statusextern(2),
statusintern(2),
statuslog(20),
laboratory(3),
ecnumber(12),
validfromdate TYPE d,
revlevel(2),
deleteindicator(1),
cadindicator(1),
structureindicator(1),
predocumentnumber(25),
predocumentversion(2),
predocumentpart(3),
predocumenttype(3),
authoritygroup(4),
docfile1(50),
datacarrier1(10),
wsapplication1(3),
docfile2(50),
datacarrier2(10),
wsapplication2(3),
vrldat TYPE d,
userdefined1(14),
userdefined2(14),
userdefined3(14),
userdefined4(14),
savedocfile1(255),
savedatacarrier1(10),
savedocfile2(255),
savedatacarrier2(10),
createdate TYPE d,
refdocumentnumber(25),
refdocumentpart(3),
refdocumentversion(2),
filesize1(12) TYPE n,
filesize2(12) TYPE n,
cmfixed(1),
cmrelevance(1),
matnr(18),
END OF ty_tab.
DATA: it_excel TYPE TABLE OF alsmex_tabline,
ls_excel TYPE alsmex_tabline,
it_data TYPE TABLE OF ty_tab,
ls_data TYPE ty_tab.
**..... Document data
DATA: ls_doc LIKE bapi_doc_draw2,
**..... Bapi-Returnstruktur
ls_return LIKE bapiret2.
**.... Key feilds of the document
DATA: lf_doctype LIKE bapi_doc_aux-doctype,
lf_docnumber LIKE bapi_doc_aux-docnumber,
lf_docpart LIKE bapi_doc_aux-docpart,
lf_docversion LIKE bapi_doc_aux-docversion.
**.... Originals that are checked in simultaneously
DATA: lt_files LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,
**.... Short texts
lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE,
**.... Object links
lt_drad LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE.
**
DATA: w_matnr LIKE mara-matnr.
*----------------------------------------------------------------------*
* S E L E C T I O N S C R E E N *
*----------------------------------------------------------------------*
PARAMETERS:
p_pfile TYPE rlgrap-filename OBLIGATORY. " DEFAULT
* 'H:\Data Loads\Change_document\test.xls'.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_rad1 TYPE c RADIOBUTTON GROUP gr DEFAULT 'X' USER-COMMAND
usr.
SELECTION-SCREEN COMMENT 3(16) text-005.
*PARAMETERS P_AFILE(120) TYPE C DEFAULT 'Delta.txt' LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_rad2 TYPE c RADIOBUTTON GROUP gr.
SELECTION-SCREEN COMMENT 3(16) text-006.
SELECTION-SCREEN POSITION 65.
PARAMETERS: p_docnum TYPE bapi_doc_draw2-ecnumber.
SELECTION-SCREEN COMMENT 45(20) text-007.
*PARAMETERS P_PFILE(120) TYPE C.
SELECTION-SCREEN END OF LINE.
*data : p_pfile type rlgrap-filename value
* 'H:\Data Loads\Change_document\test.xls'.
*----------------------------------------------------------------------*
* A T S E L E C T I O N S C R E E N *
*----------------------------------------------------------------------*
*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pfile.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
* FIELD_NAME = ' '
IMPORTING
file_name = p_pfile.
START-OF-SELECTION.
IF p_rad1 EQ 'X'.
PERFORM create_change_document.
ELSEIF p_rad2 EQ 'X'.
PERFORM change_change_document.
ENDIF.
*&---------------------------------------------------------------------*
*& Form CREATE_CHANGE_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_change_document .
** Allcoate document data
* ls_doc-documenttype = 'DRW'.
* ls_doc-documentnumber = '4711'.
* ls_doc-documentversion = '00'.
* ls_doc-documentpart = '000'.
*
* ls_doc-statusextern = 'AF'.
* ls_doc-laboratory = '001'.
** Check in original 1 simultaneously in the SAP Database
* REFRESH lt_files.
* CLEAR lt_files.
*lt_files-storagecategory = 'SAP-SYSTEM'.
*lt_files-docfile = 'c:\test.txt'.
*lt_files-wsapplication = 'TXT'.
*lt_files-originaltype = '1'.
*lt_files-description = 'Text file'.
*APPEND lt_files.
*lt_files-storagecategory = 'VAULT'.
*lt_files-docfile = 'c:\temp\drawing.dwg'.
*lt_files-wsapplication = 'DWG'.
*APPEND lt_files.
*lt_files-storagecategory = 'SAP-SYSTEM'.
*lt_files-docfile = 'c:\FirmaAsociado.bmp'.
*lt_files-wsapplication = 'BMP'.
*lt_files-originaltype = '2'.
*lt_files-description = 'figure'.
*APPEND lt_files.
*lt_files-storagecategory = 'INTERNET'.
*lt_files-docfile = 'www.yahoo.com'.
*lt_files-wsapplication = 'NET'.
*lt_files-originaltype = '2'.
*lt_files-description = 'figure'.
*APPEND lt_files.
* Short texts
CLEAR lt_drat.
REFRESH lt_drat.
* German short text
lt_drat-language = 'DE'.
lt_drat-description = 'Getriebe'.
APPEND lt_drat.
* English short text
lt_drat-language = 'EN'.
lt_drat-description = 'gear'.
APPEND lt_drat.
** Object link to material master
*CLEAR lt_drad.
*REFRESH lt_drad.
*lt_drad-objecttype = 'MARA'.
*w_matnr = '1764'.
*CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
* EXPORTING
* input = w_matnr
* IMPORTING
* OUTPUT = w_matnr
* EXCEPTIONS
* LENGTH_ERROR = 1
* .
*
*lt_drad-objectkey = w_matnr.
*APPEND lt_drad.
*Upload data from Excel to internal table.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_pfile
i_begin_col = 1
i_begin_row = 2
i_end_col = 45
i_end_row = 8
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.
*Populate data to internal tables and structructures
SORT it_excel BY row col.
LOOP AT it_excel INTO ls_excel.
CASE ls_excel-col.
WHEN 1.
ls_data-doc_type = ls_excel-value.
WHEN 2.
ls_data-rec_no = ls_excel-value.
WHEN 3.
ls_data-doc_ver = ls_excel-value.
WHEN 4.
ls_data-doc_part = ls_excel-value.
WHEN 5.
ls_data-description = ls_excel-value.
WHEN 6.
ls_data-username = ls_excel-value.
WHEN 7.
ls_data-statusextern = ls_excel-value.
WHEN 8.
ls_data-statusintern = ls_excel-value.
WHEN 9.
ls_data-statuslog = ls_excel-value.
WHEN 10.
ls_data-laboratory = ls_excel-value.
WHEN 11.
ls_data-ecnumber = ls_excel-value.
WHEN 12.
ls_data-validfromdate = ls_excel-value.
WHEN 13.
ls_data-revlevel = ls_excel-value.
WHEN 14.
ls_data-deleteindicator = ls_excel-value.
WHEN 15.
ls_data-cadindicator = ls_excel-value.
WHEN 16.
ls_data-structureindicator = ls_excel-value.
WHEN 17.
ls_data-predocumentnumber = ls_excel-value.
WHEN 18.
ls_data-predocumentversion = ls_excel-value.
WHEN 19.
ls_data-predocumentpart = ls_excel-value.
WHEN 20.
ls_data-predocumenttype = ls_excel-value.
WHEN 21.
ls_data-authoritygroup = ls_excel-value.
WHEN 22.
ls_data-docfile1 = ls_excel-value.
WHEN 23.
ls_data-datacarrier1 = ls_excel-value.
WHEN 24.
ls_data-wsapplication1 = ls_excel-value.
WHEN 25.
ls_data-docfile2 = ls_excel-value.
WHEN 26.
ls_data-datacarrier2 = ls_excel-value.
WHEN 27.
ls_data-wsapplication2 = ls_excel-value.
WHEN 28.
ls_data-vrldat = ls_excel-value.
WHEN 29.
ls_data-userdefined1 = ls_excel-value.
WHEN 30.
ls_data-userdefined2 = ls_excel-value.
WHEN 31.
ls_data-userdefined3 = ls_excel-value.
WHEN 32.
ls_data-userdefined4 = ls_excel-value.
WHEN 33.
ls_data-savedocfile1 = ls_excel-value.
WHEN 34.
ls_data-savedatacarrier1 = ls_excel-value.
WHEN 35.
ls_data-savedocfile2 = ls_excel-value.
WHEN 36.
ls_data-savedatacarrier2 = ls_excel-value.
WHEN 37.
ls_data-createdate = ls_excel-value.
WHEN 38.
ls_data-refdocumentnumber = ls_excel-value.
WHEN 39.
ls_data-refdocumentpart = ls_excel-value.
WHEN 40.
ls_data-refdocumentversion = ls_excel-value.
WHEN 41.
ls_data-filesize1 = ls_excel-value.
WHEN 42.
ls_data-filesize2 = ls_excel-value.
WHEN 43.
ls_data-cmfixed = ls_excel-value.
WHEN 44.
ls_data-cmrelevance = ls_excel-value.
WHEN 45.
ls_data-matnr = ls_excel-value.
ENDCASE.
AT END OF row.
APPEND ls_data TO it_data.
ENDAT.
ENDLOOP.
CLEAR ls_data.
SORT it_data BY rec_no.
DATA: lv_cnt(2) TYPE c.
LOOP AT it_data INTO ls_data.
AT NEW rec_no .
CLEAR lv_cnt.
ENDAT.
lv_cnt = lv_cnt + 1.
** Allcoate document data
ls_doc-documenttype = ls_data-doc_type.
ls_doc-documentversion = ls_data-doc_ver.
ls_doc-documentpart = ls_data-doc_part.
* REFRESH lt_files.
* CLEAR lt_files.
lt_files-storagecategory = ls_data-datacarrier1.
lt_files-docfile = ls_data-docfile1 .
lt_files-wsapplication = ls_data-wsapplication1.
lt_files-originaltype = lv_cnt.
* lt_files-description = 'Text file'.
APPEND lt_files.
* Object link to material master
* CLEAR lt_drad.
* REFRESH lt_drad.
lt_drad-objecttype = 'MARA'.
w_matnr = ls_data-matnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = w_matnr
IMPORTING
output = w_matnr
EXCEPTIONS
length_error = 1.
lt_drad-objectkey = w_matnr.
APPEND lt_drad.
AT END OF rec_no.
* Create document
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING: documentdata = ls_doc
IMPORTING: documenttype = lf_doctype
documentnumber = lf_docnumber
documentpart = lf_docpart
documentversion = lf_docversion
return = ls_return
TABLES: documentdescriptions = lt_drat
objectlinks = lt_drad
documentfiles = lt_files.
** Did an error occur ??
IF ls_return-type CA 'EA'.
ROLLBACK WORK.
MESSAGE ID '26' TYPE 'I' NUMBER '000'
WITH ls_return-message.
ELSE.
COMMIT WORK.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT = WAIT
* IMPORTING
* RETURN = RETURN
.
WRITE:/ lf_doctype,
lf_docnumber,
lf_docpart,
lf_docversion.
ENDIF.
CLEAR: lt_drad, lt_files, ls_doc.
REFRESH: lt_drad, lt_files.
ENDAT.
ENDLOOP.
ENDFORM. " CREATE_CHANGE_DOCUMENT
*&---------------------------------------------------------------------*
*& Form CHANGE_CHANGE_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM change_change_document .
** Document data number, version, change number, et cetera.
DATA: ls_doc LIKE bapi_doc_draw2,
** Indicator for change relevance
ls_docx LIKE bapi_doc_drawx2,
** Bapi return structure
ls_return LIKE bapiret2,
** Originals
lt_files LIKE bapi_doc_files OCCURS 0 WITH HEADER LINE,
** Short texts
lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE,
** Object links
lt_drad LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE.
** Assign document data
ls_doc-documenttype = 'DRW'.
ls_doc-documentnumber = '4711'.
ls_doc-documentversion = '00'.
ls_doc-documentpart = '000'.
ls_doc-description = 'Transmission'.
ls_doc-laboratory = ''.
** Set indicator for change relevance
ls_docx-description = 'X'.
ls_docx-laboratory = 'X'.
** Insert object links
CLEAR lt_drad.
REFRESH lt_drad.
lt_drad-objecttype = 'MARA'.
lt_drad-objectkey = 'M0815'.
APPEND lt_drad.
*
* Change document
*
CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
EXPORTING: documenttype = ls_doc-documenttype
documentnumber = ls_doc-documentnumber
documentpart = ls_doc-documentpart
documentversion = ls_doc-documentversion
documentdata = ls_doc
documentdatax = ls_docx
IMPORTING: return = ls_return
TABLES: objectlinks = lt_drad.
* Did an error occur ??
IF ls_return-type CA 'EA'.
ROLLBACK WORK.
MESSAGE ID '26' TYPE 'I' NUMBER '000'
WITH ls_return-message.
ELSE.
COMMIT WORK.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT = WAIT
* IMPORTING
* RETURN = RETURN
.
WRITE:/ lf_doctype,
lf_docnumber,
lf_docpart,
lf_docversion.
ENDIF.
ENDFORM. " CHANGE_CHANGE_DOCUMENT
‎2008 Jun 11 12:19 PM
Hi Jiccs,
Open this FM in SE37 and check FM documentation. They clearly explained with one example on what are all the parameters u have to pass. If u still have confusions check the where used list of this FM. U can get some programs where this FM is used.
Thanks,
Vinod.
‎2008 Jun 11 12:20 PM
Hi Jiccs,
You need to pass the structure to DOCUMENTDATA which would consist of the Document Type, Document Number, etc Check the Structure BAPI_DOC_DRAW for this. This table you are asking will be your Internal table probably.
Regards,
Sai