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
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
@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
Si otros @abapers gustan de entrar y ver los códigos y propuestas de solución, bienvenidos !
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 !!!
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.
@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.
“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.
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.