MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 06/04/15, 20:39:11
pancho6102 pancho6102 is offline
Senior Member
 
Fecha de Ingreso: jun 2010
Localización: Queretaro México
Mensajes: 238
Duda sentencia LOOP

Buenas tardes Foro estoy analizando un programa que SAP libero para unos reportes gubernamentales, el problema es que estoy analizando el codigo, pero se me presento el siguiente caso con un LOOP que puedo deducir lo que hace pero no entiedo por que funciona asi:

LOOP.
CLEAR: t_totales_nit, t_totales_cta, kna1.
READ TABLE t_bseg_exc WITH TABLE KEY belnr = bkpf-belnr.
IF sy-subrc = 0.
CLEAR bseg-dmbtr.
CONTINUE.
ENDIF.
bseg-dmbtr = bseg_dmbtr20.
IF bseg-shkzg = 'H'.
bseg-dmbtr = - bseg-dmbtr.
bseg_wrbtr20 = - bseg_wrbtr20.
bseg_dmbtr20 = - bseg_dmbtr20.
ENDIF.
IF bseg-dmbtr = 0 AND bseg_dmbtr20 <> 0.
v_indica20 = 'X'.
ELSE.
v_indica20 = ''.
ENDIF.
CHECK bseg-dmbtr NE 0.
READ TABLE t_ctanit_lfa1 WITH KEY belnr = bkpf-belnr
buzei = bseg-buzei.
IF sy-subrc NE 0.
READ TABLE t_ctanit_lfa1 WITH KEY belnr = bkpf-belnr.
IF sy-subrc NE 0.
li_docm = 1.
ELSE.
li_docm = 0.
ENDIF.
ELSE.
li_docm = 0.
ENDIF.
* Documents FI-GL.
IF li_docm = 1.
CLEAR t_nits_all.
DATA: v_subrc0 LIKE syst-subrc.
IF bseg-xref1 <> ''.
READ TABLE t_nits_all WITH KEY stcd1 = bseg-xref1.
IF sy-subrc <> 0.
READ TABLE t_nits_all WITH KEY stcd1bk = bseg-xref1.
v_subrc0 = syst-subrc.
ELSE.
v_subrc0 = syst-subrc.
ENDIF.
* name1 = bseg-xref3. " Ya no valida el nombre.
ELSE.
v_subrc0 = 4.
ENDIF.
IF v_subrc0 NE 0.
CLEAR kna1.
IF bseg-xref1 <> ''.
READ TABLE t_xref1_kna1 WITH KEY stcd1 = bseg-xref1.
IF sy-subrc = 0.
SELECT SINGLE * INTO kna1
FROM kna1
WHERE kunnr = t_xref1_kna1-kunnr.
ENDIF.
v_subrc0 = syst-subrc.
* SELECT SINGLE * INTO kna1 FROM kna1
* WHERE stcd1 = bseg-xref1.
* v_subrc0 = syst-subrc.
ELSE.
READ TABLE it_bseg_tempo_deu
WITH KEY bukrs = p_bukrs
belnr = bkpf-belnr
gjahr = p_gjahr.
IF sy-subrc = 0.
SELECT SINGLE * INTO kna1 FROM kna1
WHERE kunnr = it_bseg_tempo_deu-kunnr.
v_subrc0 = syst-subrc.
IF sy-subrc = 0.
t_nits_lfa1-stcd1 = kna1-stcd1.
t_nits_lfa1-name1 = kna1-name1.
bseg-xref1 = kna1-stcd1.
ENDIF.
ELSE.
v_subrc0 = 4.
ENDIF.
ENDIF.
IF v_subrc0 = 0.
CLEAR it_kna1_tmp3.
it_kna1_tmp3 = kna1.
APPEND it_kna1_tmp3.
t_nits_lfa1-stcd1 = bseg-xref1.
t_nits_lfa1-name1 = kna1-name1.
* t_nits_lfa1-KUNNR = KNA1-KUNNR.
t_nits_lfa1-land1 = kna1-land1.
t_nits_lfa1-stcdt = kna1-stcdt.
t_nits_lfa1-ort01 = kna1-ort01.
t_nits_lfa1-regio = kna1-regio.
t_nits_lfa1-stras = kna1-stras.

t_totales_nit-kunnr = kna1-kunnr.
ELSE.
IF v_subrc0 = 4 AND bseg-ebeln <> '' AND
bseg-lifnr = '' AND bseg-xref1 = ''
AND bkpf-blart = 'WL' .
*** llenar el registro.
****leer de la tabla
READ TABLE t_ci_svf WITH KEY
ebeln = bseg-ebeln
ebelp = bseg-ebelp.
IF sy-subrc = 0 AND t_ci_svf-lifnr <> ''.
READ TABLE t_nits_all
WITH KEY lifnr = t_ci_svf-lifnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING t_nits_all
TO t_nits_lfa1.
bseg-lifnr = t_ci_svf-lifnr.
ELSE.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF t_nits_all
FROM lfa1
WHERE lifnr = t_ci_svf-lifnr.
MOVE-CORRESPONDING t_nits_all
TO t_nits_lfa1.
bseg-lifnr = t_ci_svf-lifnr.
ENDIF.
ENDIF.
ELSE.
MOVE: bseg-xref1 TO t_stcd1-stcd1,
bseg-xref3 TO t_stcd1-name1.
COLLECT t_stcd1.
t_nits_lfa1-stcd1 = bseg-xref1.
t_nits_lfa1-name1 = bseg-xref3.
ENDIF.
ENDIF.
ELSE.
MOVE-CORRESPONDING t_nits_all TO t_nits_lfa1.
ENDIF.
* t_nits_lfa1-stcd1 = bseg-xref1.
* t_nits_lfa1-name1 = bseg-xref3.
PERFORM get_nits_em USING t_nits_lfa1-stcd1
t_nits_lfa1-name1.
ELSE.
IF t_ctanit_lfa1-xcpdk EQ zdi00_check.
READ TABLE t_nits_lfa1_cpd
WITH KEY belnr = t_ctanit_lfa1-belnr
buzei = t_ctanit_lfa1-buzei
lifnr = t_ctanit_lfa1-lifnr.
IF sy-subrc EQ 0.
t_nits_lfa1 = t_nits_lfa1_cpd.
ENDIF.
ELSE.
READ TABLE t_nits_lfa1 WITH KEY lifnr = t_ctanit_lfa1-lifnr.
ENDIF.
ENDIF.
t_totales_nit-cncpt = cncpt.
t_totales_nit-nronit = t_nits_lfa1-stcd1.
t_totales_nit-nomnit = t_nits_lfa1-name1.
t_totales_nit-amnt1 = bseg-dmbtr.
t_totales_nit-amnt2 = 0.
t_totales_nit-lifnr = t_nits_lfa1-lifnr.
IF p_frmat EQ zdi00_1001.
IF NOT s_hkneg IS INITIAL.
IF bseg-hkont IN s_hkneg.
t_totales_nit-amnt1 = 0.
t_totales_nit-amnt2 = bseg-dmbtr.
ENDIF.
ENDIF.
ENDIF.
COLLECT t_totales_nit.
MOVE-CORRESPONDING t_totales_nit TO t_totales_cta.
t_totales_cta-gjahr = p_gjahr.
t_totales_cta-belnr = bkpf-belnr.
t_totales_cta-hkont = bseg-hkont.
COLLECT t_totales_cta.
ENDLOOP.

bueno es que en el codigo usa al comienzo Un Loop, siempre lo he visto pero minimo con el AT (solo el at cuando es con header line ) pero en el codigo solo esta el LOOP y creo que recorre a BKPF y a BSEG pero aun no logro entender bien esa parte.

¿Alguien le ha tocdo algun caso similar?.

Saludos.
__________________
Francisco Ramirez.
consultor SAP ABAP Netweaver
Queretaro, Mexico.

Úlima edición por pancho6102 fecha: 06/04/15 a las 20:56:53.
Responder Con Cita
  #2  
Viejo 08/04/15, 23:03:13
pancho6102 pancho6102 is offline
Senior Member
 
Fecha de Ingreso: jun 2010
Localización: Queretaro México
Mensajes: 238
Ya revise bien el codigo de nueva cuenta, no me di cuenta que usa Field Groups es por ello el comportamiento.

Saludos.
__________________
Francisco Ramirez.
consultor SAP ABAP Netweaver
Queretaro, Mexico.
Responder Con Cita
  #3  
Viejo 09/04/15, 12:35:18
sconoredhot sconoredhot is offline
Senior Member
 
Fecha de Ingreso: feb 2008
Localización: Argentina, Rosario
Mensajes: 341
hola

Yo no termine de entender que hace el loop solo.
¿alguien me podria explicar ese comportamiento?

Gracias!
__________________
Sebas

Desarrollador ABAP.
Responder Con Cita
  #4  
Viejo 07/09/15, 22:14:44
FFARRO FFARRO is offline
Junior Member
 
Fecha de Ingreso: nov 2013
Mensajes: 11
Me parece que cuando usas un table control o step loop... ese loop vacio recorre los registros de esos controles.

Saludos.

Freddy Farro
Desarrolador ABAP
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 23:03:10.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web