El código fuente es el siguiente:
*&---------------------------------------------------------------------*
*& Report ZSTATUS_INITIAL_LOAD
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zstatus_initial_load.
TYPES:
BEGIN OF ty_sel_tab,
sign TYPE ddsign,
option TYPE ddoption,
low TYPE string,
high TYPE string,
END OF ty_sel_tab .
TYPES:
tt_sel_tab TYPE STANDARD TABLE OF ty_sel_tab .
DATA: lt_tj30 TYPE STANDARD TABLE OF tj30,
lv_valid_found TYPE abap_bool,
lt_option TYPE tt_sel_tab,
lt_table TYPE STANDARD TABLE OF zorder_guid.
SELECT stsma stonr INTO CORRESPONDING FIELDS OF TABLE lt_tj30 FROM tj30.
LOOP AT lt_tj30 ASSIGNING FIELD-SYMBOL(<tj30>).
AT NEW stsma.
lv_valid_found = abap_false.
ENDAT.
IF <tj30>-stonr IS NOT INITIAL.
lv_valid_found = abap_true.
ENDIF.
AT END OF stsma.
IF lv_valid_found = abap_true.
DATA(ls_option) = VALUE ty_sel_tab( sign = 'I' option = 'EQ' low = <tj30>-stsma ).
APPEND ls_option TO lt_option.
ENDIF.
ENDAT.
ENDLOOP.
SELECT guid INTO CORRESPONDING FIELDS OF TABLE lt_table FROM crmd_orderadm_h AS a INNER JOIN crm_jsto AS b
ON a~guid = b~objnr WHERE b~stsma IN lt_option.
DELETE FROM zorder_guid.
INSERT zorder_guid FROM TABLE lt_table.
COMMIT WORK AND WAIT.
WRITE: / 'table inserted'.
BREAK-POINT.
La función principal de este programa ABAP es recuperar datos de dos tablas de datos de SAP CRM e insertar datos que cumplan condiciones específicas en una tabla de datos personalizada. El programa también incluye cierta lógica de control para seleccionar datos que cumplan con las condiciones y realizar operaciones de envío.
Permítanme explicarles en detalle qué hace este programa y brindarles un ejemplo:
-
El programa comienza :
REPORT zstatus_initial_load.
: Esta línea especifica el nombre del programa.
-
Definición de tipo :
- Una vez iniciado el programa, se definen dos estructuras de datos (TIPOS). El primero se
ty_sel_tab
utiliza para almacenar información sobre las condiciones de selección de la consulta, incluida la firma (signo), la opción (opción), el límite inferior (bajo) y el límite superior (alto). El segundo estt_sel_tab
, esty_sel_tab
un tipo de tabla estándar.
- Una vez iniciado el programa, se definen dos estructuras de datos (TIPOS). El primero se
-
Declaración de datos :
DATA
Las declaraciones se utilizan para declarar varias tablas de datos y variables, incluidaslt_tj30
, y .lv_valid_found
lt_option
lt_table
-
Consulta de datos :
SELECT
La declaracióntj30
selecciona datos de una tabla y almacena los resultados enlt_tj30
la tabla.
-
Procesamiento de bucle :
- Utilice
LOOP
la declaración para recorrerlt_tj30
los datos de la tabla. En cada iteración, utiliceAT NEW stsma
yAT END OF stsma
controle la lógica para realizar determinadas operaciones.
- Utilice
-
Verificación de condiciones :
- En el bucle, el programa comprueba
<tj30>-stonr
si está vacío. Si no está vacío, se establecelv_valid_found
en verdadero (abap_true
).
- En el bucle, el programa comprueba
-
Filtrado de datos :
- Dentro de
AT END OF stsma
la lógica de control, silv_valid_found
es verdadero, el programa crea una condición de selección que coincide con los criterios especificadosls_option
y luego la agrega alt_option
la tabla.
- Dentro de
-
Segunda consulta de datos :
- Una vez finalizado el ciclo, el programa ejecuta la segunda
SELECT
declaración, selecciona datos decrmd_orderadm_h
la tabla ycrm_jsto
la tabla y almacena el resultado enlt_table
la tabla. Esta consulta utiliza los criterios de selección creados anteriormentelt_option
.
- Una vez finalizado el ciclo, el programa ejecuta la segunda
-
Operaciones de datos :
-
DELETE FROM zorder_guid.
: borrezorder_guid
la tabla de datos personalizada denominada. -
INSERT zorder_guid FROM TABLE lt_table.
:lt_table
Inserta datos de la tabla enzorder_guid
la tabla. -
COMMIT WORK AND WAIT.
: confirma la transacción de la base de datos.
-
-
Salidas e interrupciones :
-
WRITE: / 'table inserted'.
: Muestra un mensaje de texto en la pantalla indicando que los datos han sido insertados. -
BREAK-POINT.
: Inserte puntos de interrupción para la depuración durante la ejecución del programa.
-
Ahora, usemos un ejemplo para ilustrar lo que hace el programa:
Suponga que administra los datos de los pedidos de los clientes en un sistema SAP CRM. tj30
La tabla contiene información sobre el estado del pedido crmd_orderadm_h
y las tablas y crm_jsto
contienen detalles del pedido. Desea tj30
seleccionar estados de pedidos de una tabla que coincida con ciertos criterios e insertar los detalles de esos pedidos en una tabla personalizada zorder_guid
.
Por ejemplo, desea seleccionar todos los pedidos con un estado de pedido "Aprobado". Una vez que se ejecuta el programa, recorre tj30
la tabla, busca todos los pedidos con estado "Aprobado" e inserta sus detalles en zorder_guid
la tabla. Finalmente aparecerá en pantalla el mensaje 'tabla insertada' indicando que la operación ha finalizado.
Este es un ejemplo simple de cómo un programa puede seleccionar datos de una tabla e insertarlos en otra tabla según los criterios de selección. En aplicaciones reales, las condiciones de selección y las tablas de datos del programa se pueden modificar de acuerdo con las necesidades comerciales específicas para lograr diferentes operaciones de procesamiento de datos.