Programacion Abap 04
Programacion Abap 04
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 .
*&--------------------------------------------------------------------
-*
*& 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
*&--------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_SEL
*&--------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& 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 .
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 ).
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
*&-------------------------------------------------------------------*
*&-------------------------------------------------------------------*
*& 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.
*&-------------------------------------------------------------------*
*& Form F_PROCESS
*&-------------------------------------------------------------------*
* text
*--------------------------------------------------------------------*
FORM f_process .
ENDLOOP.
*&-------------------------------------------------------------------*
*& 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 ).
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.
*&-------------------------------------------------------------------*
*& 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.
*&-------------------------------------------------------------------*
*& 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
*&-------------------------------------------------------------------*
*&--------------------------------------------------------------------
-*
*& Include Z07_RVTAS_SEL
*&--------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& Form F_PROCESS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_process .
ENDLOOP.
*&--------------------------------------------------------------------
-*
*& 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
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.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& 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
*&--------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& Form F_PROCESS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_process .
ENDLOOP.
*&--------------------------------------------------------------------
-*
*& 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
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.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& 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.
*--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
*&--------------------------------------------------------------------
-*
SELECT-OPTIONS:
so_vbeln FOR vbap-vbeln,
so_matnr FOR vbap-matnr,
so_matkl FOR vbap-matkl,
so_erdat FOR vbap-erdat.
*&--------------------------------------------------------------------
-*
*& 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 .
ENDIF.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& 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.
*&--------------------------------------------------------------------
-*
*& Form F_FILTER_VBAP_AFPO
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_filter_vbap_afpo .
DATA: lv_indx TYPE sy-tabix.
*&--------------------------------------------------------------------
-*
*& Form F_FILTER_VBAP_LIPS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_filter_vbap_lips .
DATA: lv_indx TYPE sy-tabix.
*&--------------------------------------------------------------------
-*
*& 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
).
*...Mostrar tabla
CALL METHOD gr_table->get_columns
RECEIVING
value = lt_columns.
gr_table->display( ).
*&--------------------------------------------------------------------
-*
*& Form F_FILL_VBAP_RANGE
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM f_fill_vbap_range .
rg_vbeln-sign = 'I'.
rg_vbeln-option = 'EQ'.