0% encontró este documento útil (1 voto)
83 vistas33 páginas

Programacion Abap 04

Este documento describe los pasos para crear un reporte de ventas en SAP. Se crean subrutinas para obtener los datos de las tablas VBAK y VBAP, procesarlos y mostrarlos. Luego se modifica el reporte para que muestre también las entregas realizadas para cada pedido al obtener datos de la tabla VBFa y unirlos a los datos originales.

Cargado por

ricardo_ahm11
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
83 vistas33 páginas

Programacion Abap 04

Este documento describe los pasos para crear un reporte de ventas en SAP. Se crean subrutinas para obtener los datos de las tablas VBAK y VBAP, procesarlos y mostrarlos. Luego se modifica el reporte para que muestre también las entregas realizadas para cada pedido al obtener datos de la tabla VBFa y unirlos a los datos originales.

Cargado por

ricardo_ahm11
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 33

CREAR UN REPORTE DE VENTAS

CREAR UNA COPIA DEL PROGRAMA Z07_MODULAR

Cambiar los nombres técnicos


Crear subrutinas

Modificar en MAIN

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_MAIN
*&-------------------------------------------------------------------*

perform f_get_data.
perform f_process.
perform f_display.

Realizar doble click en cada uno para incluiros en F01 ( modulo de funciones)
Como se observa La subrutina se agrega en el modulo F01, hacer para cada uno

*&-------------------------------------------------------------------*
*& Include Z07_RVTAS_F01
*&-------------------------------------------------------------------*
*&-------------------------------------------------------------------*
*& Form F_GET_DATA
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------*
FORM F_GET_DATA .

ENDFORM. " F_GET_DATA

REPORTE DE PEDIDO DE VENTAS

*&--------------------------------------------------------------------
-*
*& Report Z00_LLENADO
*&
*&--------------------------------------------------------------------
-*
*&
*&
*&--------------------------------------------------------------------
-*

REPORT z07_rvtas.

INCLUDE z07_rvtas_top.
INCLUDE z07_rvtas_sel.
INCLUDE z07_rvtas_main.
INCLUDE z07_rvtas_f01.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_TOP
*&--------------------------------------------------------------------
-*

TABLES: vbak, vbap, vbfa, likp, lips.

TYPES: BEGIN OF ty_vbak_ap,


vbeln type vbak-vbeln ,
kUNNR type vbak-kUNNR ,
VKORG type vbak-VKORG ,
ERNAM type vbak-ERNAM ,
ERDAT type vbak-ERDAT ,
posnr type vbap-posnr ,
matnr type vbap-matnr ,
KWMENG type vbap-KWMENG,
VRKME type vbap-VRKME ,
END OF ty_vbak_ap.

DATA: gs_vbak_ap TYPE ty_vbak_ap,


gt_vbak_ap TYPE TABLE OF ty_vbak_ap.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_SEL
*&--------------------------------------------------------------------
-*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.


PARAMETERS: p_erdat TYPE vbak-erdat.
SELECT-OPTIONS so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN END OF BLOCK b01.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_MAIN
*&--------------------------------------------------------------------
-*

perform f_get_data.
perform f_process.
perform f_display.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_F01
*&--------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& Form F_GET_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM F_GET_DATA.
SELECT vbak~vbeln
vbak~kUNNR
vbak~VKORG
vbak~ERNAM
vbak~ERDAT
vbap~posnr
vbap~matnr
vbap~KWMENG
vbap~VRKME
FROM vbak JOIN vbap ON vbak~VBELN = vbap~VBELN
INTO TABLE gt_vbaK_AP
UP TO 100 ROWS.
ENDFORM. " F_GET_DATA
*&--------------------------------------------------------------------
-*
*& Form F_PROCESS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM F_PROCESS .

ENDFORM. " F_PROCESS


*&--------------------------------------------------------------------
-*
*& Form F_DISPLAY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM F_DISPLAY .
DATA lr_table TYPE REF TO cl_salv_table.
DATA lr_functions TYPE REF TO cl_salv_functions.
DATA lr_columns TYPE REF TO cl_salv_columns_table.

cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_table
CHANGING
t_table = gt_VBAK_AP
).
*..make all standard functions visible on the application toolbar
lr_functions = lr_table->get_functions( ).
lr_functions->set_all( abap_true ).

*... Display table

CALL METHOD lr_table->get_columns


RECEIVING
value = lr_columns.

CALL METHOD lr_columns->set_optimize


EXPORTING
value = 'X'.

lr_table->display( ).
ENDFORM. " F_DISPLAY
MODIFICAR EL REPORTE PARA QUE MUESTRE LAS ENTREGAS REALIZADAS POR PEDIDO

TABLES: MARA

No crea una tabla, Crea una estructura de datos con los campos de una tabla, solamente
mantiene en memoria un registro de la tabla.

*&-------------------------------------------------------------------*
*& Report Z07_rventas
*&
*&-------------------------------------------------------------------*
*&
*&
*&-------------------------------------------------------------------*

REPORT z07_rvtas.

INCLUDE z07_rvtas_top.
INCLUDE z07_rvtas_sel.
INCLUDE z07_rvtas_main.
INCLUDE z07_rvtas_f01.
*&-------------------------------------------------------------------*
*& Include Z07_RVTAS_TOP
*&-------------------------------------------------------------------*

TABLES: vbak, vbap, vbfa, likp, lips.

TYPES: BEGIN OF ty_outtab,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
vbelx TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF ty_outtab.

TYPES: BEGIN OF ty_vbak_ap,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
END OF ty_vbak_ap.

TYPES: BEGIN OF ty_vbfa,


vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF ty_vbfa.

DATA: gs_outtab TYPE ty_outtab,


gt_outtab TYPE TABLE OF ty_outtab.

DATA: gs_vbak_ap TYPE ty_vbak_ap,


gt_vbak_ap TYPE TABLE OF ty_vbak_ap.

DATA: gs_vbfa TYPE ty_vbfa,


gt_vbfa TYPE TABLE OF ty_vbfa.

CONSTANTS: cte_j TYPE c VALUE 'J'.

*&-------------------------------------------------------------------*
*& Include Z07_RVTAS_SEL
*&-------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.
*PARAMETERS: p_erdat TYPE vbak-erdat.
SELECT-OPTIONS: so_erdat FOR vbak-erdat,
so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN END OF BLOCK b01.

*&-------------------------------------------------------------------*
*& Include Z07_RVTAS_MAIN
*&-------------------------------------------------------------------*

perform f_get_data.
perform f_process.
perform f_display.

*&-------------------------------------------------------------------*
*& Include Z00_RVTAS_F01
*&-------------------------------------------------------------------*

*&-------------------------------------------------------------------*
*& Form F_GET_DATA
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_get_data .

PERFORM f_get_vbak_vbap.
PERFORM f_get_num_delivery.

ENDFORM. " F_GET_DATA

*&-------------------------------------------------------------------*
*& Form F_PROCESS
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_process .

SORT gt_vbfa BY vbeln


posnv.

LOOP AT gt_vbak_ap INTO gs_vbak_ap.


MOVE-CORRESPONDING gs_vbak_ap TO gs_outtab.
* READ TABLE gt_vbfa INTO gs_vbfa WITH KEY vbelv = gs_vbak_ap-vbeln
* posnv = gs_vbak_ap-posnr
* BINARY SEARCH.
* IF sy-subrc = 0.
* ENDIF.
LOOP AT gt_vbfa INTO gs_vbfa WHERE vbelv = gs_vbak_ap-vbeln
and posnv = gs_vbak_ap-posnr.
gs_outtab-vbelx = gs_vbfa-vbeln.
gs_outtab-posnn = gs_vbfa-posnn.
APPEND gs_outtab TO gt_outtab.
ENDLOOP.

ENDLOOP.

ENDFORM. " F_PROCESS

*&-------------------------------------------------------------------*
*& Form F_DISPLAY
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_display .
DATA lr_table TYPE REF TO cl_salv_table.
DATA lr_functions TYPE REF TO cl_salv_functions.
DATA lr_columns TYPE REF TO cl_salv_columns_table.

cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_table
CHANGING
t_table = gt_outtab
).
*..make all standard functions visible on the application toolbar
lr_functions = lr_table->get_functions( ).
lr_functions->set_all( abap_true ).

*... Display table

CALL METHOD lr_table->get_columns


RECEIVING
value = lr_columns.

CALL METHOD lr_columns->set_optimize


EXPORTING
value = 'X'.

lr_table->display( ).
ENDFORM. " F_DISPLAY

*&-------------------------------------------------------------------*
*& Form F_GET_VBAK_VBAP
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_get_vbak_vbap .
SELECT vbak~vbeln
vbak~kunnr
vbak~vkorg
vbak~ernam
vbak~erdat
vbap~posnr
vbap~matnr
vbap~kwmeng
vbap~vrkme
FROM vbak JOIN vbap ON vbak~vbeln = vbap~vbeln
INTO TABLE gt_vbak_ap
* UP TO 100 ROWS.
WHERE vbak~erdat in so_erdat
and vbak~vbeln IN so_vbeln.

ENDFORM. " F_GET_VBAK_VBAP

*&-------------------------------------------------------------------*
*& Form F_GET_NUM_DELIVERY
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_get_num_delivery .

SELECT vbelv
posnv
vbeln
posnn
FROM vbfa
INTO TABLE gt_vbfa
FOR ALL ENTRIES IN gt_vbak_ap
WHERE vbelv = gt_vbak_ap-vbeln
AND vbtyp_n = cte_j.

ENDFORM. " F_GET_NUM_DELIVERY


INCREMENTAR MAS DATOS A LA CONSULTA DEL PEDIDO

*&-------------------------------------------------------------------*
*& Report Z00_LLENADO
*&
*&-------------------------------------------------------------------*
*&
*&
*&-------------------------------------------------------------------*

REPORT z07_rvtas.

INCLUDE z07_rvtas_top.
INCLUDE z07_rvtas_sel.
INCLUDE z07_rvtas_main.
INCLUDE z07_rvtas_f01.

*&-------------------------------------------------------------------*
*& Include Z07_RVTAS_TOP
*&-------------------------------------------------------------------*

TABLES: vbak, vbap, vbfa, likp, lips.

TYPES: BEGIN OF ty_outtab,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
vbelx TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
* --
bzirk TYPE likp-bzirk,
vstel TYPE likp-vstel,
lfart TYPE likp-lfart,
pstyv TYPE lips-pstyv,
erzet TYPE lips-erzet,
END OF ty_outtab.

TYPES: BEGIN OF ty_vbak_ap,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
END OF ty_vbak_ap.

TYPES: BEGIN OF ty_vbfa,


vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF ty_vbfa.

TYPES: BEGIN OF ty_likp_ps,


vbelx TYPE likp-vbeln,
posnr TYPE lips-posnr,
bzirk TYPE likp-bzirk,
vstel TYPE likp-vstel,
vkorg TYPE likp-vkorg,
lfart TYPE likp-lfart,
pstyv TYPE lips-pstyv,
ernam TYPE lips-ernam,
erzet TYPE lips-erzet,
erdat TYPE lips-erdat,
END OF ty_likp_ps.

DATA: gs_outtab TYPE ty_outtab,


gt_outtab TYPE TABLE OF ty_outtab.

DATA: gs_vbak_ap TYPE ty_vbak_ap,


gt_vbak_ap TYPE TABLE OF ty_vbak_ap.

DATA: gs_vbfa TYPE ty_vbfa,


gt_vbfa TYPE TABLE OF ty_vbfa.

DATA: gs_likp_ps TYPE ty_likp_ps,


gt_likp_ps TYPE TABLE OF ty_likp_ps.
CONSTANTS: cte_j TYPE c VALUE 'J'.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_SEL
*&--------------------------------------------------------------------
-*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.


*PARAMETERS: p_erdat TYPE vbak-erdat.
SELECT-OPTIONS: so_erdat FOR vbak-erdat,
so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN END OF BLOCK b01.

*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_MAIN
*&--------------------------------------------------------------------
-*

perform f_get_data.
perform f_process.
perform f_display.

*&--------------------------------------------------------------------
-*
*& Include Z00_RVTAS_F01
*&--------------------------------------------------------------------
-*

*&--------------------------------------------------------------------
-*
*& Form F_GET_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_data .

PERFORM f_get_vbak_vbap.
PERFORM f_get_num_delivery.
PERFORM f_get_delivery_data.

ENDFORM. " F_GET_DATA

*&--------------------------------------------------------------------
-*
*& Form F_PROCESS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_process .

SORT gt_vbfa BY vbeln


posnv.

LOOP AT gt_vbak_ap INTO gs_vbak_ap.


MOVE-CORRESPONDING gs_vbak_ap TO gs_outtab.
LOOP AT gt_vbfa INTO gs_vbfa WHERE vbelv = gs_vbak_ap-vbeln
and posnv = gs_vbak_ap-posnr.
gs_outtab-vbelx = gs_vbfa-vbeln.
gs_outtab-posnn = gs_vbfa-posnn.

READ TABLE gt_likp_ps INTO gs_likp_ps


WITH KEY vbelx = gs_vbfa-vbeln
posnr = gs_vbfa-posnn.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_likp_ps TO gs_outtab.
ENDIF.

APPEND gs_outtab TO gt_outtab.


ENDLOOP.

ENDLOOP.

ENDFORM. " F_PROCESS

*&--------------------------------------------------------------------
-*
*& Form F_DISPLAY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_display .
DATA lr_table TYPE REF TO cl_salv_table.
DATA lr_functions TYPE REF TO cl_salv_functions.
DATA lr_columns TYPE REF TO cl_salv_columns_table.

cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_table
CHANGING
t_table = gt_outtab
).
*..make all standard functions visible on the application toolbar
lr_functions = lr_table->get_functions( ).
lr_functions->set_all( abap_true ).
*... Display table

CALL METHOD lr_table->get_columns


RECEIVING
value = lr_columns.

CALL METHOD lr_columns->set_optimize


EXPORTING
value = 'X'.

lr_table->display( ).
ENDFORM. " F_DISPLAY

*&--------------------------------------------------------------------
-*
*& Form F_GET_VBAK_VBAP
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_vbak_vbap .
SELECT vbak~vbeln
vbak~kunnr
vbak~vkorg
vbak~ernam
vbak~erdat
vbap~posnr
vbap~matnr
vbap~kwmeng
vbap~vrkme
FROM vbak JOIN vbap ON vbak~vbeln = vbap~vbeln
INTO TABLE gt_vbak_ap
* UP TO 100 ROWS.
WHERE vbak~erdat in so_erdat
and vbak~vbeln IN so_vbeln.

ENDFORM. " F_GET_VBAK_VBAP

*&--------------------------------------------------------------------
-*
*& Form F_GET_NUM_DELIVERY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_num_delivery .

SELECT vbelv
posnv
vbeln
posnn
FROM vbfa
INTO TABLE gt_vbfa
FOR ALL ENTRIES IN gt_vbak_ap
WHERE vbelv = gt_vbak_ap-vbeln
AND vbtyp_n = cte_j.

ENDFORM. " F_GET_NUM_DELIVERY

*&--------------------------------------------------------------------
-*
*& Form F_GET_DELIVERY_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
form F_GET_DELIVERY_DATA .

SELECT likp~VBELN
lips~POSNR
likp~BZIRK
likp~VSTEL
likp~VKORG
likp~LFART
lips~PSTYV
lips~ERNAM
lips~ERZET
lips~ERDAT
from likp join lips on likp~VBELN = lips~VBELN
into TABLE gt_likp_ps
FOR ALL ENTRIES IN gt_vbfa
where likp~VBELN = gt_vbfa-vbeln.
endform. " F_GET_DELIVERY_DATA
MODIFICAR PROGRAMA PARA HACERLO MAS GENERICO

*&--------------------------------------------------------------------
-*
*& Include Z00_RVTAS_TOP
*&--------------------------------------------------------------------
-*

TABLES: vbak, vbap, vbfa, likp, lips.

TYPES: BEGIN OF ty_outtab,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
vbelx TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
* --
bzirk TYPE likp-bzirk,
vstel TYPE likp-vstel,
lfart TYPE likp-lfart,
pstyv TYPE lips-pstyv,
erzet TYPE lips-erzet,
END OF ty_outtab.

TYPES: BEGIN OF ty_vbak_ap,


vbeln TYPE vbak-vbeln ,
kunnr TYPE vbak-kunnr ,
vkorg TYPE vbak-vkorg ,
ernam TYPE vbak-ernam ,
erdat TYPE vbak-erdat ,
posnr TYPE vbap-posnr ,
matnr TYPE vbap-matnr ,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme ,
END OF ty_vbak_ap.

TYPES: BEGIN OF ty_vbfa,


vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF ty_vbfa.

TYPES: BEGIN OF ty_likp_ps,


vbelx TYPE likp-vbeln,
posnr TYPE lips-posnr,
bzirk TYPE likp-bzirk,
vstel TYPE likp-vstel,
vkorg TYPE likp-vkorg,
lfart TYPE likp-lfart,
pstyv TYPE lips-pstyv,
ernam TYPE lips-ernam,
erzet TYPE lips-erzet,
erdat TYPE lips-erdat,
END OF ty_likp_ps.

DATA: gs_outtab TYPE ty_outtab,


gt_outtab TYPE TABLE OF ty_outtab.

DATA: gs_vbak_ap TYPE ty_vbak_ap,


gt_vbak_ap TYPE TABLE OF ty_vbak_ap.

DATA: gs_vbfa TYPE ty_vbfa,


gt_vbfa TYPE TABLE OF ty_vbfa.

DATA: gs_likp_ps TYPE ty_likp_ps,


gt_likp_ps TYPE TABLE OF ty_likp_ps.

CONSTANTS: cte_j TYPE c VALUE 'J'.


*&--------------------------------------------------------------------
-*
*& Include Z00_RVTAS_SEL
*&--------------------------------------------------------------------
-*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.


*PARAMETERS: p_erdat TYPE vbak-erdat.
SELECT-OPTIONS: so_erdat FOR vbak-erdat,
so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN END OF BLOCK b01.

*&--------------------------------------------------------------------
-*
*& Include Z00_RVTAS_MAIN
*&--------------------------------------------------------------------
-*

PERFORM f_get_data.
PERFORM f_process.
PERFORM f_display.

*&--------------------------------------------------------------------
-*
*& Include Z00_RVTAS_F01
*&--------------------------------------------------------------------
-*

*&--------------------------------------------------------------------
-*
*& Form F_GET_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_data .

PERFORM f_get_vbak_vbap.
PERFORM f_get_num_delivery.
PERFORM f_get_delivery_data.

ENDFORM. " F_GET_DATA

*&--------------------------------------------------------------------
-*
*& Form F_PROCESS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_process .

SORT gt_vbfa BY vbeln


posnv.

LOOP AT gt_vbak_ap INTO gs_vbak_ap.


MOVE-CORRESPONDING gs_vbak_ap TO gs_outtab.
LOOP AT gt_vbfa INTO gs_vbfa WHERE vbelv = gs_vbak_ap-vbeln
and posnv = gs_vbak_ap-posnr.
gs_outtab-vbelx = gs_vbfa-vbeln.
gs_outtab-posnn = gs_vbfa-posnn.

READ TABLE gt_likp_ps INTO gs_likp_ps


WITH KEY vbelx = gs_vbfa-vbeln
posnr = gs_vbfa-posnn.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_likp_ps TO gs_outtab.
ENDIF.

APPEND gs_outtab TO gt_outtab.


ENDLOOP.

ENDLOOP.

ENDFORM. " F_PROCESS

*&--------------------------------------------------------------------
-*
*& Form F_DISPLAY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_display .
DATA lr_table TYPE REF TO cl_salv_table.
DATA lr_functions TYPE REF TO cl_salv_functions.
DATA lr_columns TYPE REF TO cl_salv_columns_table.

cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_table
CHANGING
t_table = gt_outtab
).
*..make all standard functions visible on the application toolbar
lr_functions = lr_table->get_functions( ).
lr_functions->set_all( abap_true ).
*... Display table

CALL METHOD lr_table->get_columns


RECEIVING
value = lr_columns.

CALL METHOD lr_columns->set_optimize


EXPORTING
value = 'X'.

lr_table->display( ).
ENDFORM. " F_DISPLAY

*&--------------------------------------------------------------------
-*
*& Form F_GET_VBAK_VBAP
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_vbak_vbap .
SELECT vbak~vbeln
vbak~kunnr
vbak~vkorg
vbak~ernam
vbak~erdat
vbap~posnr
vbap~matnr
vbap~kwmeng
vbap~vrkme
FROM vbak JOIN vbap ON vbak~vbeln = vbap~vbeln
INTO TABLE gt_vbak_ap
* UP TO 100 ROWS.
WHERE vbak~erdat in so_erdat
and vbak~vbeln IN so_vbeln.

ENDFORM. " F_GET_VBAK_VBAP

*&--------------------------------------------------------------------
-*
*& Form F_GET_NUM_DELIVERY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_num_delivery .

SELECT vbelv
posnv
vbeln
posnn
FROM vbfa
INTO TABLE gt_vbfa
FOR ALL ENTRIES IN gt_vbak_ap
WHERE vbelv = gt_vbak_ap-vbeln
AND vbtyp_n = cte_j.

ENDFORM. " F_GET_NUM_DELIVERY

*&--------------------------------------------------------------------
-*
*& Form F_GET_DELIVERY_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
form F_GET_DELIVERY_DATA .

SELECT likp~VBELN
lips~POSNR
likp~BZIRK
likp~VSTEL
likp~VKORG
likp~LFART
lips~PSTYV
lips~ERNAM
lips~ERZET
lips~ERDAT
from likp join lips on likp~VBELN = lips~VBELN
into TABLE gt_likp_ps
FOR ALL ENTRIES IN gt_vbfa
where likp~VBELN = gt_vbfa-vbeln.
endform. " F_GET_DELIVERY_DATA
*&--------------------------------------------------------------------
-*
*& Report ZPPR_AVANCEPROD
*&
*&--------------------------------------------------------------------
-*
*& Modulo PP
*& Objtetivo Reporte de avance de produccion
*& Autor Roy Rosales @ InteliSAP
*&
*&--------------------------------------------------------------------
-*

REPORT zppr_avanceprod.

INCLUDE zppr_avanceprod_top.
INCLUDE zppr_avanceprod_sel.
INCLUDE zppr_avanceprod_main.
INCLUDE zppr_avanceprod_f01.

*&--------------------------------------------------------------------
-*
*& Include ZPPR_AVANCEPROD_TOP
*&--------------------------------------------------------------------
-*

TABLES:
vbap,
afko,
vbak,
lips.

TYPES: BEGIN OF ty_vbap,


vbeln TYPE vbap-vbeln,
erdat TYPE vbap-erdat,
kunnr TYPE vbak-kunnr,
matnr TYPE vbap-matnr,
kwmeng TYPE vbap-kwmeng,
matkl TYPE vbap-matkl,
arktx TYPE vbap-arktx,
END OF ty_vbap.

TYPES: BEGIN OF ty_afpo,


aufnr TYPE afpo-aufnr,
kdauf TYPE afpo-kdauf,
gltrp TYPE afko-gltrp,
END OF ty_afpo.

TYPES: BEGIN OF ty_rvbeln,


sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low LIKE vbap-vbeln,
high LIKE vbap-vbeln,
END OF ty_rvbeln.
*--Orden de venta
DATA: gs_vbap TYPE ty_vbap,
gt_vbap TYPE TABLE OF ty_vbap.

*--Orden de produccion
DATA: gs_afpo TYPE ty_afpo,
gt_afpo TYPE TABLE OF ty_afpo.

*--Entrega
DATA: gs_lips TYPE lips,
gt_lips TYPE TABLE OF lips.

*--Rango de ordenes
DATA: rg_vbeln TYPE TABLE OF ty_rvbeln WITH HEADER LINE.

*&--------------------------------------------------------------------
-*
*& Include ZPPR_AVANCEPROD_SEL
*&--------------------------------------------------------------------
-*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.

SELECT-OPTIONS:
so_vbeln FOR vbap-vbeln,
so_matnr FOR vbap-matnr,
so_matkl FOR vbap-matkl,
so_erdat FOR vbap-erdat.

SELECTION-SCREEN END OF BLOCK b01.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-t02.


SELECT-OPTIONS:
so_aufnr FOR afko-aufnr,
so_gltrp FOR afko-gltrp,
so_kunnr FOR vbak-kunnr,
so_vbele FOR lips-vbeln,
so_auart FOR vbak-auart.

SELECTION-SCREEN END OF BLOCK b02.

*&--------------------------------------------------------------------
-*
*& Include ZPPR_AVANCEPROD_MAIN
*&--------------------------------------------------------------------
-*

AT SELECTION-SCREEN.
*

START-OF-SELECTION.
PERFORM f_valida_parameter.
PERFORM f_get_data.
PERFORM f_display.

END-OF-SELECTION.

*&--------------------------------------------------------------------
-*
*& Include ZPPR_AVANCEPROD_F01
*&--------------------------------------------------------------------
-*

*&--------------------------------------------------------------------
-*
*& Form F_VALIDA_PARAMETER
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_valida_parameter .

IF so_vbeln IS INITIAL AND


so_matnr IS INITIAL AND
so_matkl IS INITIAL AND
so_erdat.

MESSAGE i001(00) WITH text-m01.

ENDIF.

ENDFORM. " F_VALIDA_PARAMETER

*&--------------------------------------------------------------------
-*
*& Form F_GET_DATA
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_data .
PERFORM f_get_vbap.
DESCRIBE TABLE gt_vbap.
IF sy-tfill > 0.
PERFORM f_fill_vbap_range.
PERFORM f_get_afpo.
PERFORM f_get_lips.
ENDIF.

PERFORM f_filter_vbap_afpo.

PERFORM f_filter_vbap_lips.

ENDFORM. " F_GET_DATA

*&--------------------------------------------------------------------
-*
*& Form F_GET_VBAP
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_vbap .

SELECT vbap~vbeln
vbap~erdat
vbak~kunnr
vbap~matnr
vbap~kwmeng
vbap~matkl
vbap~arktx
FROM vbap
JOIN vbak ON vbap~vbeln = vbak~vbeln
INTO TABLE gt_vbap
WHERE vbap~vbeln IN so_vbeln
AND vbap~matnr IN so_matnr
AND vbap~matkl IN so_matkl
AND vbap~erdat IN so_erdat
AND vbak~kunnr IN so_kunnr
AND vbap~matkl IN so_matkl
AND vbak~auart IN so_auart.

ENDFORM. " F_GET_VBAP

*&--------------------------------------------------------------------
-*
*& Form F_GET_AFPO
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_afpo .
SELECT afpo~aufnr
afpo~kdauf
afko~gltrp
FROM afpo
JOIN afko ON afpo~aufnr = afko~aufnr
INTO TABLE gt_afpo
FOR ALL ENTRIES IN gt_vbap
WHERE afpo~kdauf EQ gt_vbap-vbeln
AND afko~aufnr IN so_aufnr
AND afko~gltrp IN so_gltrp.

ENDFORM. " F_GET_AFPO

*&--------------------------------------------------------------------
-*
*& Form F_GET_LIPS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_get_lips .

SELECT *
FROM lips
INTO TABLE gt_lips
FOR ALL ENTRIES IN gt_vbap
WHERE vgbel = gt_vbap-vbeln
AND vbeln IN so_vbele.

ENDFORM. " F_GET_LIPS

*&--------------------------------------------------------------------
-*
*& Form F_FILTER_VBAP_AFPO
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_filter_vbap_afpo .
DATA: lv_indx TYPE sy-tabix.

DESCRIBE TABLE gt_afpo.


IF sy-tfill > 0.
SORT gt_afpo BY kdauf.
LOOP AT gt_vbap INTO gs_vbap.
lv_indx = sy-tabix.
READ TABLE gt_afpo WITH KEY kdauf = gs_vbap-vbeln
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
DELETE gt_vbap INDEX lv_indx.
ENDIF.
ENDLOOP.
ELSE.
CLEAR gt_vbap.
ENDIF.

ENDFORM. " F_FILTER_VBAP_AFPO

*&--------------------------------------------------------------------
-*
*& Form F_FILTER_VBAP_LIPS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_filter_vbap_lips .
DATA: lv_indx TYPE sy-tabix.

DESCRIBE TABLE gt_lips.


IF sy-tfill > 0.
SORT gt_afpo BY kdauf.
LOOP AT gt_vbap INTO gs_vbap.
lv_indx = sy-tabix.
READ TABLE gt_lips WITH KEY vgbel = gs_vbap-vbeln
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
DELETE gt_vbap INDEX lv_indx.
ENDIF.
ENDLOOP.
ELSE.
CLEAR gt_vbap.
ENDIF.

ENDFORM. " F_FILTER_VBAP_LIPS

*&--------------------------------------------------------------------
-*
*& Form F_DISPLAY
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_display .
DATA lt_outtab TYPE TABLE OF ty_vbap.
DATA gr_table TYPE REF TO cl_salv_table.
DATA gr_functions TYPE REF TO cl_salv_functions.
DATA lt_columns TYPE REF TO cl_salv_columns_table.

lt_outtab[] = gt_vbap[].

cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = lt_outtab
).

*... Activa funciones en toolbar


gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).

*...Mostrar tabla
CALL METHOD gr_table->get_columns
RECEIVING
value = lt_columns.

CALL METHOD lt_columns->set_optimize


EXPORTING
value = 'X'.

gr_table->display( ).

ENDFORM. " F_DISPLAY

*&--------------------------------------------------------------------
-*
*& Form F_FILL_VBAP_RANGE
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_fill_vbap_range .

rg_vbeln-sign = 'I'.
rg_vbeln-option = 'EQ'.

LOOP AT gt_vbap INTO gs_vbap.


rg_vbeln-low = gs_vbap-vbeln.
APPEND rg_vbeln.
ENDLOOP.

ENDFORM. " F_FILL_VBAP_RANGE

También podría gustarte