Ayuda SAP

Mis primero pininos en ABAP ayuda. no jala. :(

se queda en el mesage select3 y ya no sale el ALV. ya no se que hacer. sin embargo se ve estupidamente sencillo.

El objetivo del programa es sencillo, solo me da cuatro datos insignificantes aun, solo quería que funcionara para después meterle lo chipocludo

data: begin of gt_ca occurs 0,
ocpedido type EKKO-EBELN,
fecha type EKKO-AEDAT,
moneda type EKKO-WAERS,
end of gt_ca.


data: begin of gt_fin occurs 0,
ocpedido1 type EKKO-EBELN,
fecha1 type EKKO-AEDAT,
moneda1 type EKKO-WAERS,
numpro1 type EKKO-LIFNR,
end of gt_fin.


DATA :gt_cat TYPE slis_t_fieldcat_alv,
gs_cat LIKE LINE OF gt_cat.
*&---------------------------------------------------------------------*
*& Form ZTE_SELECCION1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ZTE_SELECCION1.

message 'select' type 'I' .
select a~EBELN a~AEDAT a~WAERS from EKKO as a
into table gt_ca
where a~AEDAT BETWEEN '20100101' AND '20160101'.
REfresh gt_fin.
if sy-subrc EQ 0.
message 'select2' type 'I' .
LOOP at gt_ca.
"clear gt_fin.
message 'select3' type 'I' .
gt_fin-ocpedido1 = gt_ca-ocpedido.
gt_fin-fecha1 = gt_ca-fecha.
gt_fin-moneda1 = gt_ca-moneda.

write: / 'DATOS ',gt_fin-ocpedido1 ,gt_fin-fecha1 ,gt_fin-moneda1.
APPEND gt_fin. "inserta en la tabla
ENDLOOP.
* else.
* write: / 'no '.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.


ENDFORM. " ZTE_SELECCION1
*&---------------------------------------------------------------------*
*& Form ZTE_ALV1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ZTE_ALV1 .

CHECK gt_fin IS NOT INITIAL.

REFRESH gt_cat.

CLEAR gs_cat.
gs_cat-fieldname = 'OC'.
gs_cat-ref_fieldname ='EBELN'.
gs_cat-ref_tabname ='EKKO'.
gs_cat-emphasize = 'C411'.
ADD 1 TO gs_cat-col_pos.
APPEND gs_cat TO gt_cat.

CLEAR gs_cat.
gs_cat-fieldname = 'FECHA'.
gs_cat-ref_fieldname ='AEDAT'.
gs_cat-ref_tabname ='EKKO'.
gs_cat-emphasize = 'C601'.
ADD 1 TO gs_cat-col_pos.
APPEND gs_cat TO gt_cat.

CLEAR gs_cat.
gs_cat-fieldname = 'MONEDA'.
gs_cat-ref_fieldname ='WAERS'.
gs_cat-ref_tabname ='EKKO'.
gs_cat-emphasize = 'C600'.
ADD 1 TO gs_cat-col_pos.
APPEND gs_cat TO gt_cat.




CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "llamado a la tabla de creacion en pantalla
EXPORTING

I_CALLBACK_PROGRAM = sy-repid
IT_FIELDCAT = gt_cat

TABLES
T_OUTTAB = gt_fin[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.

ENDFORM. " ZTE_ALV1

quizás yo este mal o no lo vea…pero no veo la llamada de los perform :s !!!

Mira me tome la molestia de aplicarle unas mejoras a tu programa para que funcione.

El codigo que inicie con _ solo retira el _.

Ahora bien, se quedaba en el mensaje tres, porque estabas lanzando un mensaje a modo popup dentro de un loop! no lo hagas, no funciona. Deje el mensaje dentro del loop pero lo condicione para que solo salga una vez.
El alv no funcionaba porque habia una mala referencia de los campos. Ahora esta ready. quita los _ y ejecutalo.

Programa corregido
REPORT  ZTEST.


data: begin of gt_ca occurs 0,
ocpedido type EKKO-EBELN,
fecha type EKKO-AEDAT,
moneda type EKKO-WAERS,
end of gt_ca.

data: begin of gt_fin occurs 0,
ocpedido1 type EKKO-EBELN,
fecha1 type EKKO-AEDAT,
moneda1 type EKKO-WAERS,
numpro1 type EKKO-LIFNR,
end of gt_fin.

DATA :gt_cat TYPE slis_t_fieldcat_alv,
gs_cat LIKE LINE OF gt_cat.

_DATA: pos type i value 1._  "Codigo agregado

_START-OF-SELECTION._

_  PERFORM zte_seleccion1._    "Codigo agregado
_  perform zte_alv1._

*&---------------------------------------------------------------------
*& Form ZTE_SELECCION1
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM ZTE_SELECCION1.

  message 'select' type 'I' .
  select a~EBELN a~AEDAT a~WAERS from EKKO as a
  into table gt_ca
  where a~AEDAT BETWEEN '20100101' AND '20160101'.
  REfresh gt_fin.
  if sy-subrc EQ 0.
    message 'select2' type 'I' .
    LOOP at gt_ca.
      "clear gt_fin.
_      at first._                                 " Codigo agregado
_        message 'select3' type 'I' ._
_      endat._
      gt_fin-ocpedido1 = gt_ca-ocpedido.
      gt_fin-fecha1 = gt_ca-fecha.
      gt_fin-moneda1 = gt_ca-moneda.

      write: / 'DATOS ',gt_fin-ocpedido1 ,gt_fin-fecha1 ,gt_fin-moneda1.
      APPEND gt_fin. "inserta en la tabla
    ENDLOOP.
* else.
* write: / 'no '.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
ENDFORM. " ZTE_SELECCION1

*&---------------------------------------------------------------------
*& Form ZTE_ALV1
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM ZTE_ALV1 .

  CHECK gt_fin IS NOT INITIAL.

  REFRESH gt_cat.

 *CLEAR gs_cat.
_  gs_cat-fieldname = 'OCPEDIDO1'._
  gs_cat-ref_fieldname ='EBELN'.
_  gs_cat-SELTEXT_M  = 'OC'._
  _gs_cat-tabname = 'GT_FIN_'.
  gs_cat-ref_tabname ='EKKO'.
  gs_cat-emphasize = 'C411'.
_  ADD 1 TO pos._
_  gs_cat-col_pos = pos._
  APPEND gs_cat TO gt_cat.


*  CLEAR gs_cat.
  _gs_cat-fieldname = 'FECHA1_'.
  gs_cat-ref_fieldname ='AEDAT'.
  _gs_cat-SELTEXT_M  = 'Fecha_'.
  _gs_cat-tabname = 'GT_FIN_'.
  gs_cat-ref_tabname ='EKKO'.
  gs_cat-emphasize = 'C601'.
_  ADD 1 TO pos._
_  gs_cat-col_pos = pos._
  APPEND gs_cat TO gt_cat.

*
*  CLEAR gs_cat.
  gs_cat-fieldname = 'MONEDA1'.
  gs_cat-ref_fieldname ='WAERS'.
  _gs_cat-SELTEXT_M  = 'Moneda_'.
_  gs_cat-tabname = 'GT_FIN._
  gs_cat-ref_tabname ='EKKO'.
  gs_cat-emphasize = 'C600'.
_  ADD 1 TO pos._
_  gs_cat-col_pos = pos._
  APPEND gs_cat TO gt_cat.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "llamado a la tabla de creacion en pantalla
  EXPORTING
  I_CALLBACK_PROGRAM = sy-repid
  IT_FIELDCAT = gt_cat[]
  TABLES
  T_OUTTAB = gt_fin[]
  EXCEPTIONS
  PROGRAM_ERROR = 1
  OTHERS = 2.
ENDFORM.                                                    " ZTE_ALV1
2 Me gusta

@silver, podrías explicar en el primer mensaje (si puedes editarlo, sino responde aquí) de qué se trataría ese programa así corregimos el título del debate y las personas saben de qué se trata todo ésto? Gracias :stuck_out_tongue:

Si otros @abapers gustan de entrar y ver los códigos y propuestas de solución, bienvenidos ! :clap:

Fino mi pana @smota, buen aporte !!! yo por tener pc nueva no tengo sap todavía y no tengo tampoco acceso a algún cliente para ir viendo algunas cositas !!!

creo que no hay mucho mas que agregar al asunto!

con la correcciones propuestas por @smota :+1: es suficiente para que ejecute el report,

EXCELENTE… gracias por sus respuestas, Esos pequeños detalles que debo ir afilando. El objetivo del programa es sencillo, solo me da cuatro datos insignificantes aun, solo quería que funcionara para después meterle lo chipocludo.

Estuve leyendo que también hay reportes ALV en ARBOL, pasu mecha dijera la vecina. espero pronto meterle a uno de esos.

Por lo pronto voy a probar, grax mi estimado smota, y a todos por sus comentarios en un rato les comento como jala este asunto.

Saludos.

@silver
¿Que significa chipocludo?
Suena divertida esa palabra

@silver, recuerda que si el mensaje #3 de @smota solucionó tu problema, puedes marcar su respuesta como solución, sino decir qué otro problema has tenido.

Saludos

Meterle lo chipocludo = Agregarle lo importante. jaja.

Ya funciono. Muy bien voy a seguirla con esto, Gracias por sus comentarios. Hoy aprendí algo nuevo.

Y el ganador del chipocle de oro es paraaaaa…

@smota :tada:

“Primero que nada, gracias a los productoores, esto no habria sido posible sin jajaja”
@silver dale brother sigue practicando, y sabes que para dudas y mas aclaraciones estamos por aca.

Okas, ya le ando moviendo, gracias. voy a seguirla.

Saludos a todosss.

Ya estoy de lleno con el código que manejamos, un detalle las primeras dos columnas son iguales, no me había percatado hasta que le agregue mas datos. y curiosamente las 8 columnas que actualmente salen, traen el mismo dato de la primera.

Que puede ser.

Si gusta, habre otro hilo, para que asi se mantenga la atomisidad de las preguntas.
Habre otro posto con data duplicada, y lo tratamos de lleno.