🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP Las BAPIS

ABAP Las BAPIS

ABAP Las BAPIS

Mi primer Batch Input utilizando juego de datos.

Creamos un archivo que cumpla con la estructura de la tabla ZTABLA_USUARIOS

1ro : Declaracion de los datos propios del BI

* Tabla del BI con la estructura de BDCDATA
DATA: BEGIN OF ti_bdc_data OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF ti_bdc_data.

* Estructura del BI
DATA: st_bdc_data TYPE bdcdata.

* Tabla de usuarios
DATA: BEGIN OF ti_archivo OCCURS 0,
dni(8) TYPE c, "Dni
nombre_ape(35) TYPE c, "Nombre y Apellido
estado_usu(1) TYPE c, "Estado del usuario
direccion(30) TYPE c, "Dirección
codigo_postal(4) TYPE c, "Código Postal
f_nacimiento(8) TYPE c, "Fecha Nacimiento
estado_civil(1) TYPE c, "Estado civil
END OF ti_archivo.

DATA: st_archivo LIKE LINE OF ti_archivo.

* Variables
DATA: v_campo(35) TYPE c,
v_indice(2) TYPE c,
v_qid TYPE apq_quid,
v_group TYPE apq_grpn,
v_jobgroup TYPE btcjobgrp,
v_jobname TYPE btcjob,
v_jobcount TYPE btcjobcnt.


2do : Lectura de datos de archivo de entrada.
Ejecutaremos CL_GUI_FRONTEND_SERVICE =>GUI_UPLOAD para levantar la informacion de los usuarios.

*&---------------------------------------------------------------------*
*& Form LEVANTAR_ARCHIVO_ENTRADA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM levantar_archivo_entrada .

DATA: vl_file TYPE string.

IF p_path IS INITIAL.
MESSAGE s000(z_prueba) WITH text-003.
ELSE.

vl_file = p_path.

* Se abre el archivo de entrada para lectura
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = vl_file
filetype = 'ASC'
has_field_separator = ''
CHANGING
data_tab = ti_archivo[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.

IF sy-subrc NE 0.
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.

IF ti_archivo[] IS INITIAL.
MESSAGE s000(z_prueba) WITH text-005.
ENDIF.

ENDIF.

ENDFORM. " LEVANTAR_ARCHIVO_ENTRADA



3ro : Apertura de la sesion del juego de datos.
Utilizaremos la funcion BDC_OPEN_GROUP especificando el Mandante ,Grupo y usuarios


*&---------------------------------------------------------------------*
*& Form APERTURA_JD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM apertura_jd.

v_group = sy-repid.

CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = v_group
keep = 'X'
user = sy-uname
IMPORTING
qid = v_qid
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


ENDFORM. " APERTURA_JD



4to : Cargar la tabla BDC_DATA.
Utilizamos la subrutina BDC_FIELD.


*&---------------------------------------------------------------------*
*& Form CARGO_TABLA_BDCDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM cargo_tabla_bdcdata .

CLEAR ti_bdc_data.
REFRESH ti_bdc_data.

* Ingreso a la Primer pantalla y presiono boton de mantenimiento
PERFORM bdc_field USING 'X' 'SAPMSVMA' '0100'.
PERFORM bdc_field USING ' ' 'VIEWNAME' 'ZTABLA_USUARIOS'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=UPD'.

* Presiono boton de nuevas entradas
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=NEWL'.

* Cargo datos del usuario
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.

LOOP AT ti_archivo INTO st_archivo.

ADD 1 TO v_indice.
* Completo ceros a la izquierda de v_indice
PERFORM completo_ceros_izq.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-DNI(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-dni.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-NOMBRE_APE(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-nombre_ape.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-ESTADO_USU(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-estado_usu.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-DIRECCION(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-direccion.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-CODIGO_POSTAL(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-codigo_postal.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-F_NACIMIENTO(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-f_nacimiento.

CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-ESTADO_CIVIL(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-estado_civil.

ENDLOOP.

* Grabo los Registros
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=SAVE'.

* Cierro la segunda pantalla
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=ENDE'.

* Cierro la primer pantalla
PERFORM bdc_field USING 'X' 'SAPMSVMA' '0100'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '/EENDE'.
ENDFORM. " CARGO_TABLA_BDCDATA

*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
FORM bdc_field USING dyn_begin TYPE c
campo1
campo2.
CLEAR st_bdc_data.

IF dyn_begin = 'X'.
st_bdc_data-program = campo1.
st_bdc_data-dynpro = campo2.
st_bdc_data-dynbegin = dyn_begin.
ELSE.
st_bdc_data-fnam = campo1.
st_bdc_data-fval = campo2.
ENDIF.

APPEND st_bdc_data TO ti_bdc_data.

ENDFORM. " bdc_field



5to : Insercion del juego de datos

Utilizaremos la funcion BDC_INSERT

*&---------------------------------------------------------------------*
*& Form INSERTAR_JD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM insertar_jd .

CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'SM30'
TABLES
dynprotab = ti_bdc_data
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " INSERTAR_JD



6to : Cierre de la sesion de juego de datos.

Utilizaremos la funcion BDC_CLOSE GROUP

*&---------------------------------------------------------------------*
*& Form CERRAR_JD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM cerrar_jd .

CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 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.

ENDFORM. " CERRAR_JD



6mo : Ejecucion del juego de datos.
Ingresamos a la SM35 , Seleccionamos el juego de datos. y lo ejecutamos presionando Ejecutar (Process)





Marcamos la opcion Invisible (BACKGROUND) y seleccionamos Ejecutar (Process)



La sesion cambiara de status dependiendo el resultado de la ejecucion.





Diferencias CALL TRANSACTION y JUEGO DE DATOS

CALL TRANSACTION es sincrono es decir Online , se transfieren datos a una sola transaccion en cada CALL TRANSACTION , no se generan LOGS
JUEGO DE DATOS es ASRINCRONO es decir de fondo, se transfieren datos a multiples transacciones , Se generan LOGS por cada sesion



Utilizacion del programa RSBDCBTC para la ejecucion del juego de datos.

Podemos ejecutar el juego de datos de forma ONLINE mediante la ejecucion del programa estandar RSBDCBTC. Para ello vamos a tener que crear un J JOB, submitir la ejecucion del programa RSBDCBTC

SUBMIT rsbdcbtc
USER sy-uname
VIA JOB v_jobgroup
NUMBER v_jobcount
WITH queue_id = v_qid
WITH mappe = v_jobgroup
WITH modus = 'N' "No display
WITH logall = ''
AND RETURN.

Si vamos a la SM35 vemos que se ejecuto sin la necesidad de hacerlo manualmente.



 

 

 


Sobre el autor

Publicación académica de Fabian Samir Geldres Del Carpio, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Senior

Fabian Samir Geldres Del Carpio

Profesión: Computación E Informatica - Peru - Legajo: XT66M

✒️Autor de: 51 Publicaciones Académicas

🎓Cursando Actualmente: Consultor Funcional Módulo PP

🎓Egresado del módulo:

Certificación Académica de Fabian Geldres

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Las BAPIS" de la mano de nuestros alumnos.

SAP Senior

Bapis. Son métodos estandarizados que nos permiten realizar acciones sobre los objetos de negocio de SAP, como pueden ser un pedido, hacer un movimiento de mercancías, etc. Ventaja: Debido a que las BAPIS son generalmente estándar de SAP, utilizando BAPIS, nos aseguramos que los programas que desarrollemos, serán compatibles con las versiones futuras de SAP. Desventaja: La mayor dificultad en la utilización de BAPIS, está en la carga correcta de los valores de las tablas de entrada. Para visualizar las BAPIS en el sistema, podemos utilizar la transacción estándar BAPI.

Acceder a esta publicación

Creado y Compartido por: Rafael Razo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

BAPIS(bussiness aplication programming interface) son metodos estandarizados que nos permiten realizar acciones sobre los objetos de negocios de SAP, como pueder ser,crear un pedido, crear un equipo, hacer un movimiento de mercancias. VENTAJAS DE LAS BAPIS SOBRE LOS BATCH INPUTS Debido a que las BAPIS son generalmente estandar de SAP, utilizando BAPIS, nos aseguramos que los programas que desarrollemos, seran compatibles con la versiones futuras de SAP.esto no ocurre con los batch input, ya que entre las distintas versiones de SAP, es comun que se modifiquen las pantallas de las transacciones por lo tanto la ejecucion del batch input fallara. DESVENTAJAS DE LAS BAPIS La mayor dificultad en la utilizacion de BAPIS, esta en la carga correcta de...

Acceder a esta publicación

Creado y Compartido por: Luis Car

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

la Bapis deben ser nuestra prinicpal herramienta de trabajo, solo debemos crear codigo cuan sea estrictamente necesario, ademas las Bapis estandar de lectura de datos seran la base para la creacion de informes que nuestros usuarios funcionales asi lo requieran.

Acceder a esta publicación

Creado y Compartido por: Jose Manuel Alvarez Torres

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Las BAPIS soportan Protocolo Remote Function Call, automatizan procesos como crear, modificar pedidos, Sirven para interactuar con otros sistmemas. Se procesan sin devolver ventanas de dialogo al programa que los invoca. Las Bapis a diferencias de los Batch Input nos aseguran la continuidad del código para futuras nuevas veriones de SAP BAPIS para algunos de los modulos: en MM BAPI_PO_CREATE1 en SD BAPI_SALESORDER_CREATEFROMDAT2 en FI BAPI_ACC_DOCUMENT_POST En PM tienes varias BAPIs, Para obtener detalles, tablas y datos correspondientes a una orden puedes utilizar esta: BAPI_ALM_ORDER_GET_DETAIL Para modificar datos de una orden (Por ejemplo agregar operaciones): BAPI_ALM_ORDER_MAINTAIN Ordenes, tabla maestra: AUFK cabecera:...

Acceder a esta publicación

Creado y Compartido por: Luis Alfredo Lombardi Pizarro

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

1 - Que son las BAPIs. Las BAPIs son métodos estandarizados que nos permiten realizar acciones sobre los objetos de negocios de SAP, como pueden ser: Crear un pedido, crear un equipo, hacer un movimiento de mercancias, etc. Los programas desarrollados con BAPIS serán compatibles con las versiones futuras de SAP. La mayor dificultad para el uso de BAPIS, consiste en la carga correcta de los valores de las tablas de entrada. BAPI (Bussiness Aplication Program Interface): Técnicamente son funciones tipo RFC, que se usan para automatizar procesos e interfacear con otros sistemas, estas se integraron a SAP en la versión 3.1, se procesan sin devolver ventanas de dialogo a los programas que las invocan....

Acceder a esta publicación

Creado y Compartido por: Calixto Gutiérrez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

BAPI. Son métodos estandarizados que nos permiten realizar acciones sobre los objetos de negocios de SAP, como puede ser crear un pedido, crear un equipo, hacer un movimiento de mercancías. Ventajas BAPIS por sobre los Batch inputs. - utilizando bapis garantizamos que los programas que desarrollemos serán compatibles con las versiones futuras de sap. Se puede utilzar BAPIS desde cualquier plataforma de desarrollo que soporte el uso de funciones RFC. Desventajas de las BAPIS. La mayor dificultad esta en la carga correcta de los valores de las tablas de entrada. BAPIS estándar. Existen ciertas bapis que son estándar y pueden ser implementadas para la mayoría de los objetos de negocios. Estas bapis tienen...

Acceder a esta publicación

Creado y Compartido por: Fabio Gallo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

- BAPIS - ¿Qué es un BAPI? BAPIS (Bussines Aplication Programing Interface): Son métodos estandarizados que nos permiten realizar acciones sobre los objetos de negocios de SAP, como pueden ser, crear un pedido, crear un equipo, hacer un movimiento de mercancías. Todos los procesos que hasta ahora hecíamos mediante batch input. - Ventajas sobre los BI: Utilizando BAPIS nos aseguramos que los programas que desarrollamos serán compatibles con las versiones futuras de SAP. Se pueden utilizar BAPIS desde cualquier plataforma de desarrollo que soporte el uso de funciones RFC. - Desventajas: La mayor dificultad está en la carga correcta de los valores de las tablas de entrada. Para superar...

Acceder a esta publicación

Creado y Compartido por: Sandra Erika Bernabe Abreu

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

BAPIS. Son métodos estandarizados que permiten realizar acciones sobre los objetos de negocio de SAP, como crear un pedido, un grupo, hacer movimientos de mercancías. Una de las ventajas de las BAPIS sobre los BATCH INPUT es que las BAPIS son compatibles con las versiones futuras mientras que os BATCH INPUT pueden fallar después de una actualización ya que los DYMPROS pueden cambiar de una versión a otra. BAPIS ESTÁNDAR PARA LECTURA DE DATOS. getList(). Permite seleccionar un grupo de objetos como sociedades o números de materiales. getDetail(). Se utiliza para recuperar los datos de una instancia de un objeto de negocio. getStatus(). Se utiliza para obtener el estatus de un objeto de negocio....

Acceder a esta publicación

Creado y Compartido por: Juan Santamaria Borja

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

QUE ES UN BAPI? Son métodos estandarizados que nos permiten realizar acciones sobre objetos de negocio de sap, como pueden ser: crear un pedido, crear un equipo, hacer un movimiento de mercancias. Existen ciertas bapis que son estándar y pueden ser implementadas para la mayoria de los objetos de negocios. BAPI estándar por la lectura de datos: GETLIST(), GETDETAIL(), GETSTATUS(), EXISTENCECHECK(). BAPI para crear o modificar datos: CREATE(), CHANGE(), DELETE() Y UNDELETE(). BAPIS para procesamiento masivo: las bapis para crear y modificar datos pueden ser utilizadas para pocesamiento masivo. Para ello sera necesario agregar el sufijo MULTIPLE. Por ejemplo: CHANGEMULTIPLE(), CREATEMULTIPLE() OR DELETEMULTIPLE().

Acceder a esta publicación

Creado y Compartido por: Maria Ysabel Colina De Magdaleno

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


1) BAPI (Business Aplication Program Interface) Son métodos estandarizados que permiten realizar acciones sobre los objetos de negocios de SAP. como puede ser crear pedido, crear equipo y hacer movimiento de mercancías. Todo lo que se hacia mediante batch input Las BAPIS son generalmente estándar aunque se pueden crear en la transacción SE37 como función RFC. Son funciones de tipo RFC utilizada para automatiza procesos e interfacear con otros sistemas, Aparecieron en la versión 3.1 y todas las BAPIs cumplen con los siguientes puntos: Soportan el protocolo RFC Son métodos de un objeto de negocio. SE procesan sin devolver una ventana de dialogo al programa que las invoca Ventajas...

Acceder a esta publicación

Creado y Compartido por: Maria Guadalupe Gonzalez Sanchez

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!