dudas con un LOOP

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • romario2
    Senior Member
    • abr
    • 233

    #1

    dudas con un LOOP

    Hola,

    este loop no acaba de funcionarme bien,
    alguien me podría dar algún consejo?

    Muchas gracias de antemano


    * recorremos tabla interna cuando cliente esté informado
    LOOP AT it_bsid WHERE kunnr <> ''.
    IF bel_aux <> it_bsid-belnr.
    bel_aux = it_bsid-belnr.

    * En la selección de documentos se deberán quitar
    * todos los documentos que estén anulados, es decir en la tabla BKPF ( con belnr)
    * todos aquellos registros que tengan informado el campo STBLG.
    SELECT SINGLE *
    INTO bkpf
    FROM bkpf
    WHERE stblg <> ''
    AND belnr = it_bsid-belnr
    AND gjahr = p_gjahr
    AND bukrs = p_bukrs.

    SELECT SINGLE *
    INTO tgsbt
    FROM tgsbt
    WHERE gsber IN s_gsber.

    SELECT SINGLE *
    INTO vbrk
    FROM vbrk
    WHERE belnr = it_bsid-belnr
    AND gjahr = p_gjahr
    AND bukrs = p_bukrs.

    IF sy-subrc = 0.
    p_kunrg = vbrk-kunrg.
    ENDIF.

    SELECT SINGLE *
    INTO kna1
    FROM kna1
    WHERE kunnr IN rg_kunnr.

    IF bkpf-psoak = c_pend.
    MOVE-CORRESPONDING it_bsid TO it_alv.
    it_alv-zuonr = bsid-zuonr.
    it_alv-psoak = bkpf-psoak.
    it_alv-dokid = bkpf-dokid.
    it_alv-gtext = tgsbt-gtext.
    it_alv-vbeln = vbrk-vbeln.
    it_alv-name1 = kna1-name1.
    * it_alv-zsabe = knb1-zsabe.
    it_alv-blart = bsid-blart .
    APPEND it_alv.
    ELSE.
    * DELETE it_bsid WHERE belnr = bkpf-belnr.
    ENDIF.
    ENDIF.
    ENDLOOP.
  • Bmamba
    Member
    • jun
    • 91

    #2
    No sé si te he entendido bien, pero yo haría algo así como esto:


    * recorremos tabla interna cuando cliente esté informado
    LOOP AT it_bsid WHERE not kunnr is initial.
    IF bel_aux <> it_bsid-belnr.
    bel_aux = it_bsid-belnr.

    * En la selección de documentos se deberán quitar
    * todos los documentos que estén anulados, es decir en la tabla BKPF ( con belnr)
    * todos aquellos registros que tengan informado el campo STBLG.
    SELECT SINGLE *
    INTO bkpf
    FROM bkpf
    WHERE stblg <> ''
    AND belnr = it_bsid-belnr
    AND gjahr = p_gjahr
    AND bukrs = p_bukrs.
    * Si se encontró algún registro que cumpla con la condición, se
    * agrega
    if sy-subrc = 0.

    SELECT SINGLE *
    INTO tgsbt
    FROM tgsbt
    WHERE gsber IN s_gsber.

    SELECT SINGLE *
    INTO vbrk
    FROM vbrk
    WHERE belnr = it_bsid-belnr
    AND gjahr = p_gjahr
    AND bukrs = p_bukrs.

    IF sy-subrc = 0.
    p_kunrg = vbrk-kunrg.
    ENDIF.

    SELECT SINGLE *
    INTO kna1
    FROM kna1
    WHERE kunnr IN rg_kunnr.

    IF bkpf-psoak = c_pend.
    MOVE-CORRESPONDING it_bsid TO it_alv.
    it_alv-zuonr = bsid-zuonr.
    it_alv-psoak = bkpf-psoak.
    it_alv-dokid = bkpf-dokid.
    it_alv-gtext = tgsbt-gtext.
    it_alv-vbeln = vbrk-vbeln.
    it_alv-name1 = kna1-name1.
    * it_alv-zsabe = knb1-zsabe.
    it_alv-blart = bsid-blart .
    APPEND it_alv.
    ELSE.
    * DELETE it_bsid WHERE belnr = bkpf-belnr.
    ENDIF.
    else.
    delete it_bsid.
    endif.
    ENDIF.

    ENDLOOP

    Comentario

    • becariosap
      Junior Member
      • nov
      • 7

      #3
      Batch Input VA01 DYNPRO SAPMV45A 8001

      Hola a todos,

      Tengo un pequeño gran problema,
      Resulta que estamos haciendo una migracion de 4.0 a ECC6.0.
      Tengo una maquina de test(T) y una maquina de produccion(p) cuando ejecuto un B.I en la maquina de test La pantalla que todos conocemos de la tx VA01 se vuelve pequeña a comparacion de cuando lo ejecuto el B.I en la maquina de Produccion.

      Lo que me gustaria sabes es que cuando hago una grabacion me sale estos campos y no se donde encontrarlos o en que performs o subrutina standar la tiene.

      T VA01 BS AA X F

      Muchas gracias.
      Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

      Comentario

      Trabajando...