Aca les doy ejemplo simple de un reporte alv con objetos. El mismo lo que hace es fijarse las peticiones de compra sin orden de compra. El G_CONTAINER es es el objeto container que en la dynpro tienen que dibujar (como module pool), ahi es donde se va a volcar todo.
Para bajar el ejemplo:
http://www.megaupload.com/?d=NSPSH47Q
Datos personales
- Damian Sierra
- Soy programador/analista. Mis fuertes es el mundo de sap(como abaper), programador php con gran experiencia en el mundo Wordpress y Joomla.
martes, 30 de junio de 2009
martes, 23 de septiembre de 2008
Smartforms Formatting_Error 323
lunes, 8 de septiembre de 2008
DELETE ADJACENT DUPLICATES
Para borrar registros duplicados en una tabla interna se utiliza la sentencia "DELETE ADJACENT DUPLICATES" . Se utiliza casi siempre antes de hacer un for all entries. Se recomienda hacer el filtro por los mismos que se van a acceder (filtrar) luego en el for all entriens, como tambien el sort.
Ejemplo(esta tabla me provino de una función):
SORT ti_fkkcl "Ordeno tabla por campos de acceso
BY opbel
opupw
opupk
opupz.
*Se copia la tabla para no eliminar datos de posible utilizacion luego.
ti_fkkcl_aux[] = ti_fkkcl[].
*Delete duplicates
DELETE ADJACENT DUPLICATES FROM ti_fkkcl_aux
COMPARING opbel "Se elimina por acceso
opupw
opupk
opupz.
*FKKMAZE - Histórico de reclamação - itens do documento
SELECT laufd
laufi
gpart
vkont
mazae
opbel
opupw
opupk
opupz
mahns
xmsto
xinfo
mahnv
FROM fkkmaze
INTO TABLE ti_fkkmaze
FOR ALL ENTRIES IN ti_fkkcl_aux
WHERE opbel EQ ti_fkkcl_aux-opbel
AND opupw EQ ti_fkkcl_aux-opupw
AND opupk EQ ti_fkkcl_aux-opupk
AND opupz EQ ti_fkkcl_aux-opupz
AND xinfo EQ space
AND xmsto EQ space.
Ejemplo(esta tabla me provino de una función):
SORT ti_fkkcl "Ordeno tabla por campos de acceso
BY opbel
opupw
opupk
opupz.
*Se copia la tabla para no eliminar datos de posible utilizacion luego.
ti_fkkcl_aux[] = ti_fkkcl[].
*Delete duplicates
DELETE ADJACENT DUPLICATES FROM ti_fkkcl_aux
COMPARING opbel "Se elimina por acceso
opupw
opupk
opupz.
*FKKMAZE - Histórico de reclamação - itens do documento
SELECT laufd
laufi
gpart
vkont
mazae
opbel
opupw
opupk
opupz
mahns
xmsto
xinfo
mahnv
FROM fkkmaze
INTO TABLE ti_fkkmaze
FOR ALL ENTRIES IN ti_fkkcl_aux
WHERE opbel EQ ti_fkkcl_aux-opbel
AND opupw EQ ti_fkkcl_aux-opupw
AND opupk EQ ti_fkkcl_aux-opupk
AND opupz EQ ti_fkkcl_aux-opupz
AND xinfo EQ space
AND xmsto EQ space.
viernes, 5 de septiembre de 2008
Lectura Binaria (Binary Search)
Para realizar una lectura binaria, es necesario si o si realizar un ordenamiento previo por los campos de acceso (osea realizar un sort previo de esa tabla interna a leer).
*&---------------------------------------------------------------------*
*& Report ZCPRUEBA_DSIERRA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zcprueba_dsierra.
* -------------------------------------------------------------------- *
* Tables *
* -------------------------------------------------------------------- *
tables: equi,
egerh.
* -------------------------------------------------------------------- *
* Types *
* -------------------------------------------------------------------- *
TYPES: BEGIN OF type_equi,
equnr TYPE equi-equnr,
matnr TYPE equi-matnr,
herst TYPE equi-herst,
typbz TYPE equi-typbz,
objnr TYPE equi-objnr,
werk TYPE equi-werk,
sernr TYPE equi-sernr,
lager TYPE equi-lager,
charge TYPE equi-charge,
END OF type_equi.
TYPES: BEGIN OF type_egerh,
equnr TYPE egerh-equnr,
END OF type_egerh.
* -------------------------------------------------------------------- *
* Internal Tables *
* -------------------------------------------------------------------- *
DATA: ti_equi TYPE STANDARD TABLE OF type_equi.
DATA: ti_egerh TYPE STANDARD TABLE OF type_egerh.
* -------------------------------------------------------------------- *
* FIELD-SYMBOLS *
* -------------------------------------------------------------------- *
FIELD-SYMBOLS: LIKE LINE OF ti_equi. "Work area
FIELD-SYMBOLS: LIKE LINE OF ti_egerh. "Work area
* -------------------------------------------------------------------- *
* SELECT-OPTIONS and PARAMETERS *
* -------------------------------------------------------------------- *
selection-screen begin of block b1 with frame title text-001.
SELECT-OPTIONS: sc_matnr FOR equi-matnr. "Stuff
SELECT-OPTIONS: sc_sern FOR equi-sernr. "No. of series
SELECT-OPTIONS: sc_werk FOR equi-werk. "Centre
SELECT-OPTIONS: sc_lager FOR equi-lager. "Filing
SELECT-OPTIONS: sc_char FOR equi-charge. "Lot of Inventories
SELECT-OPTIONS: sd_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum. "Period
SELECTION-SCREEN END OF BLOCK b1.
REFRESH ti_equi. "Limpieza de tabla
REFRESH ti_egerh. "Limpieza de tabla
*--Equipamento dados mestres
SELECT equnr
matnr
herst
typbz
objnr
sernr
werk
lager
charge
FROM equi
INTO TABLE ti_equi
WHERE matnr IN sc_matnr
AND sernr IN sc_sern
AND werk IN sc_werk
AND lager IN sc_lager
AND charge IN sc_char
AND erdat IN sd_datum.
IF NOT ti_equi[] IS INITIAL.
SORT ti_equi
BY equnr.
*Delete Duplicates
DELETE ADJACENT DUPLICATES FROM ti_equi.
SELECT equnr
FROM egerh
INTO TABLE ti_egerh
FOR ALL ENTRIES IN ti_equi
WHERE equnr = ti_equi-equnr
AND bis = '9999'
AND ( ( kombinat = 'Z' )
OR ( kombinat = 'W' )
OR ( kombinat = 'S' ) ).
IF sy-subrc EQ 0.
SORT ti_egerh "Necesario ordenar la tabla para hacer read con binary search
BY equnr.
ENDIF.
LOOP AT ti_equi
ASSIGNING.
READ TABLE ti_egerh
ASSIGNING
WITH KEY
equnr =
BINARY SEARCH. "Lectura binaria
IF sy-subrc EQ 0.
*proceso o guardo algo.
ENDIF.
ENDLOOP.
ENDIF.
*&---------------------------------------------------------------------*
*& Report ZCPRUEBA_DSIERRA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zcprueba_dsierra.
* -------------------------------------------------------------------- *
* Tables *
* -------------------------------------------------------------------- *
tables: equi,
egerh.
* -------------------------------------------------------------------- *
* Types *
* -------------------------------------------------------------------- *
TYPES: BEGIN OF type_equi,
equnr TYPE equi-equnr,
matnr TYPE equi-matnr,
herst TYPE equi-herst,
typbz TYPE equi-typbz,
objnr TYPE equi-objnr,
werk TYPE equi-werk,
sernr TYPE equi-sernr,
lager TYPE equi-lager,
charge TYPE equi-charge,
END OF type_equi.
TYPES: BEGIN OF type_egerh,
equnr TYPE egerh-equnr,
END OF type_egerh.
* -------------------------------------------------------------------- *
* Internal Tables *
* -------------------------------------------------------------------- *
DATA: ti_equi TYPE STANDARD TABLE OF type_equi.
DATA: ti_egerh TYPE STANDARD TABLE OF type_egerh.
* -------------------------------------------------------------------- *
* FIELD-SYMBOLS *
* -------------------------------------------------------------------- *
FIELD-SYMBOLS:
FIELD-SYMBOLS:
* -------------------------------------------------------------------- *
* SELECT-OPTIONS and PARAMETERS *
* -------------------------------------------------------------------- *
selection-screen begin of block b1 with frame title text-001.
SELECT-OPTIONS: sc_matnr FOR equi-matnr. "Stuff
SELECT-OPTIONS: sc_sern FOR equi-sernr. "No. of series
SELECT-OPTIONS: sc_werk FOR equi-werk. "Centre
SELECT-OPTIONS: sc_lager FOR equi-lager. "Filing
SELECT-OPTIONS: sc_char FOR equi-charge. "Lot of Inventories
SELECT-OPTIONS: sd_datum FOR sy-datum OBLIGATORY DEFAULT sy-datum. "Period
SELECTION-SCREEN END OF BLOCK b1.
REFRESH ti_equi. "Limpieza de tabla
REFRESH ti_egerh. "Limpieza de tabla
*--Equipamento dados mestres
SELECT equnr
matnr
herst
typbz
objnr
sernr
werk
lager
charge
FROM equi
INTO TABLE ti_equi
WHERE matnr IN sc_matnr
AND sernr IN sc_sern
AND werk IN sc_werk
AND lager IN sc_lager
AND charge IN sc_char
AND erdat IN sd_datum.
IF NOT ti_equi[] IS INITIAL.
SORT ti_equi
BY equnr.
*Delete Duplicates
DELETE ADJACENT DUPLICATES FROM ti_equi.
SELECT equnr
FROM egerh
INTO TABLE ti_egerh
FOR ALL ENTRIES IN ti_equi
WHERE equnr = ti_equi-equnr
AND bis = '9999'
AND ( ( kombinat = 'Z' )
OR ( kombinat = 'W' )
OR ( kombinat = 'S' ) ).
IF sy-subrc EQ 0.
SORT ti_egerh "Necesario ordenar la tabla para hacer read con binary search
BY equnr.
ENDIF.
LOOP AT ti_equi
ASSIGNING
READ TABLE ti_egerh
ASSIGNING
WITH KEY
equnr =
BINARY SEARCH. "Lectura binaria
IF sy-subrc EQ 0.
*proceso o guardo algo.
ENDIF.
ENDLOOP.
ENDIF.
Etiquetas:
Lectura Binaria Binary Search Read Sort
viernes, 15 de agosto de 2008
Operadores lógicos
ALV-hierseq con fieldcat a mano:
El ALV jerarquico tiene la particularidad de mostrar cosas de 2 tablas distintas con un enlace llamado key-info que es una tabla.
TABLES: zmcabecera, zmdetalle, zmproveedor.
DATA: BEGIN OF ti_header OCCURS 0.
INCLUDE STRUCTURE zmcabecera.
DATA END OF ti_header.
DATA: BEGIN OF ti_prov OCCURS 0.
INCLUDE STRUCTURE zmproveedor.
DATA END OF ti_prov.
DATA: BEGIN OF ti_info OCCURS 0.
INCLUDE STRUCTURE zmdetalle.
DATA END OF ti_info.
* Type Pool donde vienen definidas todas las estructuras y tablas
TYPE-POOLS: slis.
* Catálogo de campos: contiene la descripción de los campos de salida
DATA: ti_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
* Especificaciones de la disposición de la lista: descripción de la
* estructura de salida
ti_layout TYPE slis_layout_alv,
* Relacion entre los datos de cabecera y posicion
ti_key TYPE slis_keyinfo_alv.
START-OF-SELECTION.
PERFORM cargotablas.
PERFORM armosalida.
PERFORM imprimo.
*&---------------------------------------------------------------------*
*& Form cargotablas
*&---------------------------------------------------------------------*
FORM cargotablas .
SELECT * FROM zmcabecera INTO TABLE ti_header.
SELECT * FROM zmproveedor INTO TABLE ti_prov.
SELECT * FROM zmdetalle
INTO TABLE ti_info
FOR ALL ENTRIES IN ti_header
WHERE idpedido = ti_header-idpedido.
ENDFORM. " cargotablas
*&---------------------------------------------------------------------*
*& Form armosalida
*&---------------------------------------------------------------------*
FORM armosalida .
ti_fieldcat-fieldname = 'IDPEDIDO'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'FECHA'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IDPROVEEDOR'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IMPORTETOTAL'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IDPEDIDO'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'ITEM'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'CANTIDAD'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'DESCRIPCION'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IMPORTE'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
* Relacion entre los campos de cabecera y los de posicion
ti_key-header01 = 'IDPEDIDO'.
ti_key-item01 = 'IDPEDIDO'.
ENDFORM. " armosalida
*&---------------------------------------------------------------------*
*& Form imprimo
*&---------------------------------------------------------------------*
FORM imprimo .
DATA: c_repid LIKE sy-repid.
c_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_callback_program = c_repid
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
* IS_LAYOUT =
it_fieldcat = ti_fieldcat[]
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IT_EVENT_EXIT =
i_tabname_header = 'TI_HEADER'
i_tabname_item = 'TI_INFO'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = ti_key
* I_BUFFER_ACTIVE =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = ti_header[]
t_outtab_item = ti_info[]
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE e162(00) WITH 'No se pudo abrir el archivo'(006).
ENDIF.
ENDFORM. " imprimo
*---------------------------------------------------------------------*
* FORM user_command
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
* --> R_UCOMM
* --> RS_SELFIELD
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
BREAK-POINT.
READ TABLE ti_prov WITH KEY idproveedor = rs_selfield-value.
IF sy-subrc EQ 0.
MESSAGE i398(00) WITH 'EL NOMBRE ES:'(007) ti_prov-nombre
'Y SU TEL. ES:'(008) ti_prov-telefono.
ENDIF.
ENDFORM. "user_command
TABLES: zmcabecera, zmdetalle, zmproveedor.
DATA: BEGIN OF ti_header OCCURS 0.
INCLUDE STRUCTURE zmcabecera.
DATA END OF ti_header.
DATA: BEGIN OF ti_prov OCCURS 0.
INCLUDE STRUCTURE zmproveedor.
DATA END OF ti_prov.
DATA: BEGIN OF ti_info OCCURS 0.
INCLUDE STRUCTURE zmdetalle.
DATA END OF ti_info.
* Type Pool donde vienen definidas todas las estructuras y tablas
TYPE-POOLS: slis.
* Catálogo de campos: contiene la descripción de los campos de salida
DATA: ti_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
* Especificaciones de la disposición de la lista: descripción de la
* estructura de salida
ti_layout TYPE slis_layout_alv,
* Relacion entre los datos de cabecera y posicion
ti_key TYPE slis_keyinfo_alv.
START-OF-SELECTION.
PERFORM cargotablas.
PERFORM armosalida.
PERFORM imprimo.
*&---------------------------------------------------------------------*
*& Form cargotablas
*&---------------------------------------------------------------------*
FORM cargotablas .
SELECT * FROM zmcabecera INTO TABLE ti_header.
SELECT * FROM zmproveedor INTO TABLE ti_prov.
SELECT * FROM zmdetalle
INTO TABLE ti_info
FOR ALL ENTRIES IN ti_header
WHERE idpedido = ti_header-idpedido.
ENDFORM. " cargotablas
*&---------------------------------------------------------------------*
*& Form armosalida
*&---------------------------------------------------------------------*
FORM armosalida .
ti_fieldcat-fieldname = 'IDPEDIDO'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'FECHA'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IDPROVEEDOR'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IMPORTETOTAL'.
ti_fieldcat-tabname = 'TI_HEADER'.
ti_fieldcat-ref_tabname = 'ZMCABECERA'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IDPEDIDO'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'ITEM'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'CANTIDAD'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'DESCRIPCION'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'IMPORTE'.
ti_fieldcat-tabname = 'TI_INFO'.
ti_fieldcat-ref_tabname = 'ZMDETALLE'.
APPEND ti_fieldcat. CLEAR ti_fieldcat.
* Relacion entre los campos de cabecera y los de posicion
ti_key-header01 = 'IDPEDIDO'.
ti_key-item01 = 'IDPEDIDO'.
ENDFORM. " armosalida
*&---------------------------------------------------------------------*
*& Form imprimo
*&---------------------------------------------------------------------*
FORM imprimo .
DATA: c_repid LIKE sy-repid.
c_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_callback_program = c_repid
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
* IS_LAYOUT =
it_fieldcat = ti_fieldcat[]
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IT_EVENT_EXIT =
i_tabname_header = 'TI_HEADER'
i_tabname_item = 'TI_INFO'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = ti_key
* I_BUFFER_ACTIVE =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = ti_header[]
t_outtab_item = ti_info[]
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE e162(00) WITH 'No se pudo abrir el archivo'(006).
ENDIF.
ENDFORM. " imprimo
*---------------------------------------------------------------------*
* FORM user_command
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
* --> R_UCOMM
* --> RS_SELFIELD
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
BREAK-POINT.
READ TABLE ti_prov WITH KEY idproveedor = rs_selfield-value.
IF sy-subrc EQ 0.
MESSAGE i398(00) WITH 'EL NOMBRE ES:'(007) ti_prov-nombre
'Y SU TEL. ES:'(008) ti_prov-telefono.
ENDIF.
ENDFORM. "user_command
martes, 12 de agosto de 2008
Reporte ALV-Grid con fieldcat por funcion
*-- Declaración de Tablas
TABLES: usr01," Maestro de usuarios (datos de tiempo de ejecución)
usr21.
*-- Declaración de Tablas Internas
DATA: BEGIN OF ti_salida OCCURS 0,
bname LIKE usr01-bname,
spld LIKE usr01-spld,
spdb LIKE usr01-spdb,
addrnumber LIKE usr21-addrnumber,
END OF ti_salida.
TYPE-POOLS: slis.
* Tablas internas para ALV
DATA: ti_fieldcat TYPE slis_t_fieldcat_alv.
DATA: wa_layout TYPE slis_layout_alv.
DATA: wa_fieldcat TYPE LINE OF slis_t_fieldcat_alv .
*--Parámetros de Seleción
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bname LIKE usr01-bname.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM busqueda_datos.
PERFORM preparar_salida.
PERFORM mostrar_datos.
*&---------------------------------------------------------------------*
*& Form busqueda_datos
*&---------------------------------------------------------------------*
FORM busqueda_datos .
SELECT a~bname a~spld a~spdb b~addrnumber
FROM usr01 AS a INNER JOIN usr21 AS b
ON a~bname EQ b~bname
INTO TABLE ti_salida
WHERE a~bname EQ p_bname.
ENDFORM. " busqueda_datos
*&---------------------------------------------------------------------*
*& Form Mostrar_pedidos
*&---------------------------------------------------------------------*
FORM mostrar_datos .
DATA c_repid LIKE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_callback_program = c_repid
* i_callback_pf_status_set = 'PF_STATUS'
* i_callback_user_command = 'USER_COMMAND'
* i_structure_name = 'TI_ALV'
is_layout = wa_layout
it_fieldcat = ti_fieldcat[]
* i_save = 'A'
TABLES
t_outtab = ti_salida
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " Mostrar_datos
*&---------------------------------------------------------------------*
*& Form preparar_salida
*&---------------------------------------------------------------------*
FORM preparar_salida .
DATA c_repid LIKE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = c_repid
i_internal_tabname = 'TI_SALIDA'
* I_STRUCTURE_NAME = 'SIMLISTRUC'
* i_client_never_display = 'X'
i_inclname = c_repid
CHANGING
ct_fieldcat = ti_fieldcat.
wa_layout-zebra = 'X'.
ENDFORM. " preparar_salida
TABLES: usr01," Maestro de usuarios (datos de tiempo de ejecución)
usr21.
*-- Declaración de Tablas Internas
DATA: BEGIN OF ti_salida OCCURS 0,
bname LIKE usr01-bname,
spld LIKE usr01-spld,
spdb LIKE usr01-spdb,
addrnumber LIKE usr21-addrnumber,
END OF ti_salida.
TYPE-POOLS: slis.
* Tablas internas para ALV
DATA: ti_fieldcat TYPE slis_t_fieldcat_alv.
DATA: wa_layout TYPE slis_layout_alv.
DATA: wa_fieldcat TYPE LINE OF slis_t_fieldcat_alv .
*--Parámetros de Seleción
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bname LIKE usr01-bname.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM busqueda_datos.
PERFORM preparar_salida.
PERFORM mostrar_datos.
*&---------------------------------------------------------------------*
*& Form busqueda_datos
*&---------------------------------------------------------------------*
FORM busqueda_datos .
SELECT a~bname a~spld a~spdb b~addrnumber
FROM usr01 AS a INNER JOIN usr21 AS b
ON a~bname EQ b~bname
INTO TABLE ti_salida
WHERE a~bname EQ p_bname.
ENDFORM. " busqueda_datos
*&---------------------------------------------------------------------*
*& Form Mostrar_pedidos
*&---------------------------------------------------------------------*
FORM mostrar_datos .
DATA c_repid LIKE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_callback_program = c_repid
* i_callback_pf_status_set = 'PF_STATUS'
* i_callback_user_command = 'USER_COMMAND'
* i_structure_name = 'TI_ALV'
is_layout = wa_layout
it_fieldcat = ti_fieldcat[]
* i_save = 'A'
TABLES
t_outtab = ti_salida
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " Mostrar_datos
*&---------------------------------------------------------------------*
*& Form preparar_salida
*&---------------------------------------------------------------------*
FORM preparar_salida .
DATA c_repid LIKE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = c_repid
i_internal_tabname = 'TI_SALIDA'
* I_STRUCTURE_NAME = 'SIMLISTRUC'
* i_client_never_display = 'X'
i_inclname = c_repid
CHANGING
ct_fieldcat = ti_fieldcat.
wa_layout-zebra = 'X'.
ENDFORM. " preparar_salida
Etiquetas:
alv fieldcat por funcion call function merge
Suscribirse a:
Entradas (Atom)