on ‎2011 Apr 04 8:04 AM
Hi Guys,
I am trying to create a DMS document with BAPI_DOCUMENT_CREATE2, and then change the document status using BAPI_DOCUMENT_SETSTATUS but I get the error 'Document XXXXX does not exist' when I remove the BAPI_TRANSACTION_COMMIT after BAPI_DOCUMENT_CREATE2 and if I put it back I ge tthe error 'Document currently locked by USERNAME'. The document is being created successfully, but the change status is not working. Check out the following code:
CALL FUNCTION 'BAPI_DOCUMENT_ENQUEUE'
EXPORTING
DOCUMENTTYPE = lf_doctype
DOCUMENTNUMBER = lf_docnumber
DOCUMENTPART = lf_docpart
DOCUMENTVERSION = lf_docversion
* IMPORTING
* RETURN =
.
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING
DOCUMENTDATA = ls_doc
* HOSTNAME =
* DOCBOMCHANGENUMBER =
* DOCBOMVALIDFROM =
* DOCBOMREVISIONLEVEL =
* CAD_MODE = ' '
* PF_FTP_DEST = ' '
* PF_HTTP_DEST = ' '
* DEFAULTCLASS = 'X'
IMPORTING
DOCUMENTTYPE = lf_doctype
DOCUMENTNUMBER = lf_docnumber
DOCUMENTPART = lf_docpart
DOCUMENTVERSION = lf_docversion
RETURN = ls_return
TABLES
CHARACTERISTICVALUES = lt_char
* CLASSALLOCATIONS =
DOCUMENTDESCRIPTIONS = lt_drat
* OBJECTLINKS = lt_drad
* DOCUMENTSTRUCTURE =
DOCUMENTFILES = lt_files
* LONGTEXTS =
* COMPONENTS =
.
IF ls_return-type CA 'EA'.
ROLLBACK WORK.
MESSAGE ID '26' TYPE 'I' NUMBER '000'
WITH ls_return-message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
ENDIF.
CALL FUNCTION 'BAPI_DOCUMENT_DEQUEUE'
EXPORTING
DOCUMENTTYPE = lf_doctype
DOCUMENTNUMBER = lf_docnumber
DOCUMENTPART = lf_docpart
DOCUMENTVERSION = lf_docversion
* IMPORTING
* RETURN =
.
CALL FUNCTION 'BAPI_DOCUMENT_ENQUEUE'
EXPORTING
DOCUMENTTYPE = lf_doctype
DOCUMENTNUMBER = lf_docnumber
DOCUMENTPART = lf_docpart
DOCUMENTVERSION = lf_docversion
* IMPORTING
* RETURN =
.
lf_statusextern = 'IW'.
lf_statusintern = 'IW'.
CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
EXPORTING
documenttype = lf_doctype
documentnumber = lf_docnumber
documentpart = lf_docpart
documentversion = lf_docversion
statusextern = lf_statusextern
statusintern = lf_statusintern
* statuslog = lf_statuslog
IMPORTING
return = lss_return.
IF lss_return-type CA 'EA'.
ROLLBACK WORK.
MESSAGE ID '26' TYPE 'I' NUMBER '000'
WITH lss_return-message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
ENDIF.
CALL FUNCTION 'BAPI_DOCUMENT_DEQUEUE'
EXPORTING
DOCUMENTTYPE = lf_doctype
DOCUMENTNUMBER = lf_docnumber
DOCUMENTPART = lf_docpart
DOCUMENTVERSION = lf_docversion
* IMPORTING
* RETURN =
.Your assistance will be greatly appreciated.
Request clarification before answering.
Hi,
After creation of Document via 'BAPI_DOCUMENT_CREATE2'
call FM
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X' .
try to debug before going on with status change FM and check if the document is getting created or not i.e lf_docnumber
also, i would suggest that instead of going for separate FM " BAPI_DOCUMENT_SETSTATUS" u can set the status in FM
BAPI_DOCUMENT_CREATE2.
the import parameter "DOCUMENTDATA" has fields as STATUSEXTERN and STATUSINTERN. where u can pass the status values 'IW' etc.
Please let me know in case of any issues.
Regards,
Ravi Aswani
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 22 | |
| 12 | |
| 8 | |
| 6 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.