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

Former Member
0 Likes
781

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
620

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.

4 REPLIES 4
Read only

Former Member
0 Likes
622

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.

Read only

Former Member
0 Likes
620

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

Read only

vinod_vemuru2
Active Contributor
0 Likes
620

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.

Read only

Former Member
0 Likes
620

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