martes, 5 de agosto de 2014

Variables Dinamicas (Tiempo de ejecución)


DATA:   my_ref TYPE p,"COLOCAR CUALQUIER TIPO
        descr_ref 
TYPE REF TO cl_abap_typedescr."CLASE CONOCER DESCRIP

DATAv_dinami TYPE REF TO data."MI DINAMICA

DATAerror   TYPE REF TO cx_root.
DATA v_mensage TYPE string.

*ASIGNAR VARIABLE
descr_ref 
cl_abap_typedescr=>describe_by_datamy_ref ).

TRY.

    
CASE descr_ref->type_kind.
      
WHEN 'D' OR 'T'  OR 'I' OR 'F' OR 'STRING' OR  'XSTRING'.
        
CREATE DATA v_dinami TYPE (descr_ref->type_kind).

      
WHEN 'C' OR 'N' OR 'X'.
        
CREATE DATA v_dinami TYPE (descr_ref->type_kindLENGTH descr_ref->length.

      
WHEN 'P'.
        
CREATE DATA v_dinami TYPE p LENGTH descr_ref->length DECIMALS descr_ref->decimals.
    
ENDCASE.

    
WRITE'Tipo  :'descr_ref->absolute_name.
    
WRITE'Tipo  :'descr_ref->type_kind.
    
WRITE'Tamaño:'descr_ref->length.
    
WRITE'Decimales:'descr_ref->decimals.

  
CATCH cx_root INTO error.
    v_mensage 
error->get_text( ).
*    v_mensage = error->get_longtext( ).
    
WRITE v_mensage.
ENDTRY.


Salida Error.



Salida ok







Tabla interna Dinamica

Crear una tabla dinámica según selección.


DATAit_dinami TYPE REF TO data."MI TABLA DINAMICA
DATAerror   TYPE REF TO cx_root.
DATA v_mensage TYPE string.
DATA object TYPE trobjtype.
DATAgr_table TYPE REF TO cl_salv_table.
FIELD-SYMBOLS TYPE ANY TABLE .


*ingresando X tabla se visualiza sus datos.


PARAMETERS z(20TYPE c.

SELECT SINGLE object INTO object FROM tadir
  WHERE object 'TABL' AND obj_name z.

IF sy-subrc NE 0.
  MESSAGE 'Tabla no existe' TYPE 'I'.
  STOP.
ENDIF.

TRY.
    CREATE DATA it_dinami TYPE STANDARD TABLE OF (z).
  CATCH cx_root INTO error.
    v_mensage error->get_text).
*    v_mensage = error->get_longtext( ).
    WRITE v_mensage.
ENDTRY.

ASSIGN it_dinami->TO .

SELECT FROM (zINTO TABLE  UP TO 10 ROWS.

cl_salv_table=>factory(
IMPORTING r_salv_table gr_table
CHANGING t_table [] ).

gr_table->display).

miércoles, 7 de mayo de 2014

Actualizar EIKP / UPDATE EIKP


  SELECT FROM eikp
           INTO CORRESPONDING FIELDS OF TABLE i_eikp
           WHERE exnum EQ ekko-exnum AND
                 refnr EQ ekko-ebeln.



  LOOP AT it_eikp.
    MOVE-CORRESPONDING it_eikp TO fxeikp.
    fxeikp-text1 = 'Prueba'.

    fxeikp-pronu = '152514'.
    fxeikp-proda = '20130101'.
    fxeikp-updkz 'U'.
    APPEND fxeikp.
  ENDLOOP.


  CALL FUNCTION 'EXPIMP_POSTING' IN UPDATE TASK
    TABLES
      fxeikp fxeikp
      fxeipo fxeipo.



Ver por ME23N.

 

lunes, 2 de septiembre de 2013

'MESSAGES_INITIALIZE' 'MESSAGE_STORE' 'MESSAGES_SHOW'

      LOOP AT gt_return.
        CONCATENATE gt_return-message INTO gt_return-message SEPARATED BY space.
        MODIFY gt_return TRANSPORTING message.
        APPEND LINES OF gt_return TO mensaje.
      ENDLOOP.



  CALL FUNCTION 'MESSAGES_INITIALIZE'.

  LOOP AT mensaje.
    CALL FUNCTION 'MESSAGE_STORE'
      EXPORTING
        arbgb 'Inf'
        msgty mensaje-type
        msgv1 mensaje-message(47)
        msgv2 mensaje-message+47(47)
        msgv3 mensaje-message+94
        txtnr mensaje-number.
  ENDLOOP.


  CALL FUNCTION 'MESSAGES_SHOW'
    EXPORTING
*     corrections_option  = 'X'
      show_linno          space
      object              'Log de mensajes'
      i_use_grid          'X'
      show_linno_text_len 3
    EXCEPTIONS
      inconsistent_range  1
      no_messages         2
      OTHERS              3.



 
 

'REUSE_ALV_POPUP_TO_SELECT' con icono

DATA: BEGIN OF ita OCCURS 0,
    ty(4TYPE  c,
    ms(220)     TYPE c,
    END OF ita.
    

TYPES: t_fieldcat         TYPE slis_fieldcat_alv.
data: i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
 w_fieldcat         TYPE t_fieldcat.



*iconos

      LOOP AT gt_return.
        CLEAR ita-ms.
        CONCATENATE gt_return-message into ita-ms SEPARATED BY space.
        IF gt_return-type 'S'.
          ita-ty icon_green_light.
        ELSEIF gt_return-type 'E'.
          ita-ty icon_red_light.
        ELSEIF gt_return-type 'W'.
          ita-ty icon_yellow_light.
        ENDIF.
        APPEND ita.
      ENDLOOP.




  CLEAR w_fieldcat.
  w_fieldcat-fieldname 'TY'.
  w_fieldcat-tabname   'ITA'.
  w_fieldcat-seltext_m 'Tipo'.
  w_fieldcat-icon 'X'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.

  CLEAR w_fieldcat.
  w_fieldcat-fieldname 'MS'.
  w_fieldcat-tabname   'ITA'.
  w_fieldcat-seltext_m 'Mensaje'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.

 

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
      EXPORTING
        i_title               'Mensajes '
        i_zebra               'X'
        i_screen_start_column 1
        i_screen_start_line   1
        i_screen_end_column   150
        i_screen_end_line     15
        i_tabname             'ITA'
        it_fieldcat           i_fieldcat
        is_private            is_private
      TABLES
        t_outtab              ita
      EXCEPTIONS
        program_error         1
        OTHERS                2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.


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.
 


DATAaid TYPE sdok_loid,
      fid TYPE sdok_phid,
      dir TYPE draddir.
DATAls_doc LIKE bapi_doc_draw2,
      ls_docx  LIKE bapi_doc_drawx2,
      ls_return LIKE bapiret2,
      it_files LIKE bapi_doc_files2 OCCURS WITH HEADER LINE,
      it_files2 LIKE bapi_doc_files2 OCCURS WITH HEADER LINE,
      wa_files2 LIKE it_files,
      lt_drat LIKE bapi_doc_drat OCCURS WITH HEADER LINE,
      it_link LIKE bapi_doc_drad OCCURS WITH HEADER LINE,
      it_link2 LIKE bapi_doc_drad OCCURS 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
DATAl_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
DATAl_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.

DATAit_files   LIKE bapi_doc_files2 OCCURS WITH HEADER LINE,
      it_descrip LIKE bapi_doc_drat OCCURS WITH HEADER LINE,
      it_link    LIKE bapi_doc_drad OCCURS 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