cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_DOCUMENT_SETSTATUS after BAPI_DOCUMENT_CREATE2

Former Member
0 Likes
2,407

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.

View Entire Topic
Former Member
0 Likes

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

Former Member
0 Likes

Thank you very much, Ravi. I had not passed 'X' to the wait parameter. Issue resolved.

Former Member
0 Likes

Dear all,

BAPI_DOCUMENT_SETSTATUS is not chnging status from 'CD' to 'RE'

please help