miércoles, 20 de enero de 2010
Conectar SAP con DB SQL e insertar registros en el SQL directamente
Pasos a seguir.
1- Establecer la conexión via tx DBCO
Enlace DB: es el nombre que nosotros queramos es el nombre con el cual dsp en el Código usaremos.
SGBD: Es el tipo de Server MSS (SQL Server)
Usuario y Password para acceder a la DB
Info Con.: El string de conexión con la DB.
2- Código Fuente
El SQL Nativo debemos ejecutarlo dentro de sentencias.
EXEC SQL
...
ENDEXEC.
"Primero nos conectamos
EXEC SQL.
CONNECT TO 'MULTINT3R' AS 'R'
ENDEXEC.
EXEC SQL.
SET CONNECTION 'R'
ENDEXEC.
"Loopeamos la tabla interna que deseamos grabar e insertamos los valores
LOOP AT IT_SQL.
EXEC SQL.
INSERT INTO ZRemito
(Remito, RemitoInterno, OT, Modelo, IMEI, ModReemp, IMEIReemp, Garantia, Precio, Moneda, NroFormularioSIC,Operador, TipoReg, codFallaAccionParte, FallaAccionParte, TextoFallaAccionParte, Cantidad, FechaHora,Usuario)
VALUES (:IT_SQL-REMITO, :IT_SQL-remito_sap, :IT_SQL-aufnr,:IT_SQL-Modelo, :IT_SQL-imei, :IT_SQL-modreemp,:IT_SQL-IMEIReemp, :IT_SQL-Garantia, :IT_SQL-Precio, :IT_SQL-Moneda, :IT_SQL-FSIC, :IT_SQL-Operador,:IT_SQL-LETRA, :IT_SQL-COD, :IT_SQL-Falla, :IT_SQL-Falla_t, :IT_SQL-Cantidad, :IT_SQL-Fecha, :IT_SQL-Usuario)
ENDEXEC.
ENDLOOP.
EXEC SQL.
SET CONNECTION DEFAULT
ENDEXEC.
Como buscar BADIs
Doble click en el método GET_INSTANCE.
Poner un break en la llamada del metodo get_class_name_by_interface.
METHOD get_instance.CLASS cl_badi_flt_data_trans_and_db DEFINITION LOAD.
DATA: exit TYPE REF TO object,
type_ref TYPE REF TO cl_abap_typedescr,
class_name TYPE seoclsname,
abs_type_classname TYPE string,
def_impl TYPE seex_boolean VALUE seex_false.
CALL METHOD cl_exithandler=>get_class_name_by_interface
EXPORTING
instance = instance
IMPORTING
class_name = class_name
CHANGING
exit_name = exit_name
EXCEPTIONS
no_reference = 1
no_interface_reference = 2
no_exit_interface = 3
data_incons_in_exit_managem = 4
class_not_implement_interface = 5
OTHERS = 6.
Cuando salte el break point hay que ver el valor de exit_name, ahi pasarán todos los nombres de las BADIS. en la SE18 encontramos esos nombres, en la SE19 se implementa.
Otra forma para buscar las BADI, es buscando por Paquete (clase de desarrollo) obtener el paquete de la tx que deseamos en la se93 -> visualizar tomamos el paquete y en la se18 después en la búsqueda ampliada buscamos por paquete y nos devuelve todas las BADIS del paquete.
Extraer estructura de pantalla desde una BADI
En este caso levanto la estructura resbd de la tx IW32.
DATA:l_field(60) TYPE C VALUE '(SAPLCOIH)RESBD',
ls_resbd TYPE resbd.
FIELD-SYMBOLS:
* Fetching the Component Item from the Screen. This is for read-only
* purpose and content should not be changed.
ASSIGN (l_field) to
if sy-subrc eq 0.
ls_resbd =
UNASSIGN
martes, 19 de enero de 2010
Creación de Field Exits
Para Acceder al menu de Field Exits.
Tx CMOD y en el browser poner PRFB.
Si creamos un Field Exit, debemos primero crear un grupo de funciones ya que trabaja como una función con un parametro de import y otro de export equivalentes al valor que ingresa y al que sale.
Luego de su creacion se debe activar para que surga efecto(para poder activar el Field Exit se debe tener el parametro abap/fieldexit = YES).
Cuando se crea un Field Exit no se puede utilizar las instrucciones:
- BREAK-POINT.
- CALL SCREEN.
- CALL DIALOG.
- SUBMIT.
- CALL TRANSACTION.
- COMMIT WORK.
- ROLLBACK WORK.
- MESSAGE I.
- MESAGGE W.