viernes, 23 de noviembre de 2012

Modificar documento CV03N

Al correr el programa Crear documento CV01N sube la informacion del documento, y con este codigo modificamos o borramos campos.
Al crearlo.
Al modificarlo.
 


DATA: aid TYPE sdok_loid,
      fid TYPE sdok_phid,
      dir TYPE draddir.
DATA: ls_doc LIKE bapi_doc_draw2,
      ls_docx  LIKE bapi_doc_drawx2,
      ls_return LIKE bapiret2,
      it_files LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,
      it_files2 LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,
      wa_files2 LIKE it_files,
      lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE,
      it_link LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE,
      it_link2 LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE,
      wa_link2 LIKE it_link2.

ls_doc-documenttype = 'DRW'.
ls_doc-documentnumber = 'CH5000Q'.
ls_doc-documentversion = '00'.
ls_doc-documentpart = '000'.

ls_doc-description = 'Prueba descripcion'.
ls_docx-description = 'X'.
ls_doc-username = 'Hgomez'.
ls_docx-username = 'X'.

CLEAR it_files2.
REFRESH it_files2.

CLEAR it_link2.
REFRESH it_link2.

CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
  EXPORTING
   documenttype               = 'DRW'
   documentnumber             = 'CH5000Q'
   documentpart               = '000'
   documentversion            = '00'
   getobjectlinks             = 'X'
   getcomponents              = 'X'
   getstatuslog               = 'X'
   getlongtexts               = 'X'
   getactivefiles             = 'X'
   getdocdescriptions         = 'X'
   getdocfiles                = 'X'
   getclassification          = 'X'
   getstructure               = 'X'
   getwhereused               = 'X'
   hostname                   = 'X'
*   INHERITED                  =
* IMPORTING
*   DOCUMENTDATA               =
*   RETURN                     =
 TABLES
   objectlinks                = it_link2
*   DOCUMENTDESCRIPTIONS       =
*   LONGTEXTS                  =
*   STATUSLOG                  =
   documentfiles              = it_files2
*   COMPONENTS                 =
*   CHARACTERISTICVALUES       =
*   CLASSALLOCATIONS           =
*   DOCUMENTSTRUCTURE          =
*   WHEREUSEDLIST              =
          .
LOOP AT it_files2 INTO wa_files2 WHERE docfile = 'C:\hi.doc'.
  aid = wa_files2-application_id.
  fid =  wa_files2-file_id.
ENDLOOP.

CLEAR it_files.
REFRESH it_files.
*it_files-ORIGINALTYPE = 1. "INGRESAR
it_files-deletevalue     = 'X'.  "PARA BORRAR
it_files-docfile         = 'C:\hi.doc'.
it_files-wsapplication   = 'WWI'.
*it_files-ACTIVE_VERSION = 'X'. "INGRESAR
it_files-application_id  = aid. "PARA BORRAR
it_files-file_id         = fid. "PARA BORRAR
APPEND it_files.


LOOP AT it_link2 INTO wa_link2 WHERE objectkey = '098010254'.
  dir = wa_link2-documentdirection.
ENDLOOP.

CLEAR it_link.
REFRESH it_link.
it_link-deletevalue       = 'X'. "PARA BORRAR
it_link-objecttype        = 'MARA'.
it_link-objectkey         = '098010254'.
it_link-documentdirection = dir. "PARA BORRAR
APPEND it_link.


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
*   HOSTNAME                   =
*   DOCBOMCHANGENUMBER         =
*   DOCBOMVALIDFROM            =
*   DOCBOMREVISIONLEVEL        =
*   SENDCOMPLETEBOM            = ' '
*   PF_FTP_DEST                = ' '
*   PF_HTTP_DEST               = ' '
*   CAD_MODE                   = ' '
*   ACCEPT_EMPTY_BOM           = ' '
 IMPORTING
    return = ls_return
 TABLES
*   CHARACTERISTICVALUES       =
*   CLASSALLOCATIONS           =
*   DOCUMENTDESCRIPTIONS       =
    objectlinks                =  it_link
*   DOCUMENTSTRUCTURE          =
   documentfiles               =  it_files
*   LONGTEXTS                  =
*   COMPONENTS                 =
.

IF ls_return-type CA 'EA'.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  MESSAGE ID '26' TYPE 'I' NUMBER '000'
  WITH ls_return-message.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  MESSAGE 'DMS MODIFICADO'  TYPE 'S'.
ENDIF.

Crear documento CV01N

Este codigo ingresa un documento a la CV01N.




**Datos del documento
DATA: l_docu   LIKE bapi_doc_draw2,
      l_values LIKE bapi_characteristic_values,
      l_allo   LIKE bapi_class_allocation,
      l_estryc LIKE bapi_doc_structure,
*retorna la badi
      l_return LIKE bapiret2.


*Estructura del documento
DATA: l_doctype     LIKE bapi_doc_draw2-documenttype,
      l_docnumber   LIKE bapi_doc_draw2-documentnumber,
      l_docpart     LIKE bapi_doc_draw2-documenttype,
      l_docversion  LIKE bapi_doc_draw2-documenttype.

DATA: it_files   LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,
      it_descrip LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE,
      it_link    LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE.

*Estrutura de inicio Tcode CV01N
l_docu-documentnumber  = 'CH0153Q'.
l_docu-documenttype    = 'DRW'.
l_docu-documentpart    = '000'.
l_docu-documentversion = '00'.
*Datos del documento
l_docu-statusintern   = 'AA'.
l_docu-description    = 'Prueba bAPI'.

REFRESH it_files.
CLEAR it_files.

*Originales
it_files-originaltype = 1.
it_files-docfile      = 'C:\hi.doc'.
it_files-wsapplication = 'WWI'.
it_files-active_version = 'X'.
APPEND it_files.

CLEAR it_descrip.
REFRESH it_descrip.

*Idioma descripcion
it_descrip-language    = 'ES'.
it_descrip-description = 'Prueba BAPI'.
APPEND it_descrip.

** Objectos de enlace --Maestro materiales
CLEAR it_link.
REFRESH it_link.

it_link-objecttype = 'MARA'.
it_link-objectkey  = '098010254'.
it_link-objectdescription = 'CADENA'.
APPEND it_link.

CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
  EXPORTING
    documentdata               = l_docu
*   HOSTNAME                   =
*   DOCBOMCHANGENUMBER         =
*   DOCBOMVALIDFROM            =
*   DOCBOMREVISIONLEVEL        =
*   CAD_MODE                   = ' '
*   PF_FTP_DEST                = ' '
*   PF_HTTP_DEST               = ' '
 IMPORTING
*   documenttype               = l_doctype
*   documentnumber             = l_docnumber
*   documentpart               = l_docpart
*   DOCUMENTVERSION            =
   return                     = l_return
 TABLES
*   CHARACTERISTICVALUES       =
*   CLASSALLOCATIONS           =
   documentdescriptions       = it_descrip
   objectlinks                = it_link
*   DOCUMENTSTRUCTURE          =
   documentfiles              = it_files
*   LONGTEXTS                  =
*   COMPONENTS                 =
          .

IF l_return-type CA 'EA'.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ROLLBACK WORK.
  MESSAGE ID '26' TYPE 'I' NUMBER '000'
  WITH l_return-message.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  MESSAGE 'DMS Creado correctamente' TYPE 'S'.
ENDIF.

VER  Modificar documento CV03N