MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Múltiple elección (foro/showthread.php?t=45961)

Flatron 21/10/11 12:29:05

Múltiple elección
 
Me estoy rompiendo la cabeza con esto,

Tengo el siguiente código, que tengo que modificar para que en vez de introducir un sólo número de documento me active el poder meter varios.


*** programa que calcula por posición el flujo de documentos ****

*---- Selection Screen -------------------------------------------------
parameters: vbeln like vbuk-vbeln memory id aun obligatory,
posnr like vbap-posnr memory id pid.
*---- Variables --------------------------------------------------------
data: w_comwa like vbco6,
it_doc like vbfa occurs 0 with header line,
it_txt like dd07v occurs 0 with header line,
begin of it_type occurs 0,
vbtyp like vbuk-vbtyp,
text like dd07v-ddtext,
end of it_type.
*-----------------------------------------------------------------------
start-of-selection.
w_comwa-mandt = sy-mandt.
w_comwa-vbeln = vbeln.
w_comwa-posnr = posnr.
call function 'RV_ORDER_FLOW_INFORMATION'
exporting
comwa = w_comwa
tables
vbfa_tab = it_doc
exceptions
no_vbfa = 1
no_vbuk_found = 2
others = 3.
case sy-subrc.
when 1. write: / 'No VBFA found.'.
when 2. write: / 'No VBUK found. Check selection criteria...'.
when 3. write: / 'Unknown Error!'.
when 0. perform write_docs.
endcase.
*-----------------------------------------------------------------------
form write_docs.
call function 'GET_DOMAIN_VALUES'
exporting
domname = 'VBTYP'
tables
values_tab = it_txt
exceptions
no_values_found = 1
others = 2.
case sy-subrc.
when 1. write: / 'Warning: No texts found for Sales Docs types!'.
when 2. write: / 'Warning: Cannot retrieve SD types descriptions!'.
when 0. perform sort_texts.
endcase.

write: / 'Order Flow Information:'.
loop at it_doc.
write: / it_doc-stufe,
it_doc-vbelv,
it_doc-posnv.
perform write_type using it_doc-vbtyp_v.
write: it_doc-vbeln,
it_doc-posnn.
perform write_type using it_doc-vbtyp_n.
write: it_doc-matnr,
it_doc-rfmng unit it_doc-meins,
it_doc-meins.
endloop.
endform.
*-----------------------------------------------------------------------
form sort_texts.
loop at it_txt.
it_type-vbtyp = it_txt-domvalue_l.
it_type-text = it_txt-ddtext.
append it_type.
clear it_type.
endloop.
sort it_type.
endform.
*-----------------------------------------------------------------------
form write_type using value(p_vbtyp) like vbuk-vbtyp.
data w_txt(30) type c.
read table it_type with key vbtyp = p_vbtyp binary search.
case sy-subrc.
when 0. w_txt = it_type-text.
when others. w_txt = '?'.
endcase.
write w_txt intensified off.
endform.
*-----------------------------------------------------------------------

beltsoft 21/10/11 16:09:27

SELECT-OPTIONS vbeln for vbuk-vbeln memory id aun obligatory.

No olvides declar la tabla.

Saludos.

Flatron 24/10/11 06:19:37

Si declaro la tabla, y añado esa instrucción me dice que el campo vbeln ya ha sido definido ...

esterg 24/10/11 11:04:47

sustituir parameter- select options
 
Hola,
-Cuando te da el mensaje te indica donde es el segundo lugar que esta definido ??
-La idea es sustituir el parameter por select options.
Si es otra cosa distinta, despues comentalo.
Suerte,
Ester.-

Flatron 24/10/11 11:15:35

Si sustituyo el parameters por el select-options, me llega al final a decir que la tabla VBUK no la encuentra.

Flatron 24/10/11 11:32:54

Quería decir Aunque la defina en tables, me salta al error 2, cuando si dejo el parameters si llega.

start-of-selection.
w_comwa-mandt = sy-mandt.
w_comwa-vbeln = vbeln.
w_comwa-posnr = posnr.
call function 'RV_ORDER_FLOW_INFORMATION'
exporting
comwa = w_comwa
tables
vbfa_tab = it_doc
exceptions
no_vbfa = 1
no_vbuk_found = 2
others = 3.
case sy-subrc.
when 1. write: / 'No VBFA found.'.
when 2. write: / 'No VBUK found. Check selection criteria...'.
when 3. write: / 'Unknown Error!'.
when 0. perform write_docs.
endcase.

esterg 24/10/11 15:36:35

Problema con nombre de parametro
 
Hola,
No tengo aca SAP para probar.
Yo al select-option: lo nombraria p_vbeln y definiria la tabla vbuk.
Tambien fijate que el select option no se usa igual que un parametro, que es un solo valor.
Espero que esto se sirva.
Suerte.Ester.-

Flatron 24/10/11 16:02:54

Gracias esterg por tus comentarios.

Dices que lo ponga así??

Así el problema que tengo es que siempre me coge el caso 2.
when 2. write: / 'No VBUK found. Check selection criteria...'.

tables: vbuk,vbap.

select-options: p_vbeln for vbuk-vbeln memory id aun obligatory.

parameters: posnr like vbap-posnr memory id pid.

**
*---- Variables --------------------------------------------------------
data: w_comwa like vbco6,
it_doc like vbfa occurs 0 with header line,
it_txt like dd07v occurs 0 with header line,
begin of it_type occurs 0,
vbtyp like vbuk-vbtyp,
text like dd07v-ddtext,
end of it_type.
*-----------------------------------------------------------------------
start-of-selection.
w_comwa-mandt = sy-mandt.
w_comwa-vbeln = p_vbeln.
w_comwa-posnr = posnr.
call function 'RV_ORDER_FLOW_INFORMATION'
exporting
comwa = w_comwa
tables
vbfa_tab = it_doc
exceptions
no_vbfa = 1
no_vbuk_found = 2
others = 3.
case sy-subrc.
when 1. write: / 'No VBFA found.'.
when 2. write: / 'No VBUK found. Check selection criteria...'.
when 3. write: / 'Unknown Error!'.
when 0. perform write_docs.
endcase.
*-----------------------------------------------------------------------
form write_docs.
call function 'GET_DOMAIN_VALUES'
exporting
domname = 'VBTYP'
tables
values_tab = it_txt
exceptions
no_values_found = 1
others = 2.
case sy-subrc.
when 1. write: / 'Warning: No texts found for Sales Docs types!'.
when 2. write: / 'Warning: Cannot retrieve SD types descriptions!'.
when 0. perform sort_texts.
endcase.

write: / 'Order Flow Information:'.
loop at it_doc.
write: / it_doc-stufe,
it_doc-vbelv,
it_doc-posnv.
perform write_type using it_doc-vbtyp_v.
write: it_doc-vbeln,
it_doc-posnn.
perform write_type using it_doc-vbtyp_n.
write: it_doc-matnr,
it_doc-rfmng unit it_doc-meins,
it_doc-meins.
endloop.
endform.
*-----------------------------------------------------------------------
form sort_texts.
loop at it_txt.
it_type-vbtyp = it_txt-domvalue_l.
it_type-text = it_txt-ddtext.
append it_type.
clear it_type.
endloop.
sort it_type.
endform.
*-----------------------------------------------------------------------
form write_type using value(p_vbtyp) like vbuk-vbtyp.
data w_txt(30) type c.
read table it_type with key vbtyp = p_vbtyp binary search.
case sy-subrc.
when 0. w_txt = it_type-text.
when others. w_txt = '?'.
endcase.
write w_txt intensified off.
endform.

DCErick 24/10/11 16:18:10


Es porque al asignar w_comwa-vbeln = vbeln. le estas asignando la cabecera del rango vbeln al campo w_comwa-vbeln. La funcion quer estas usando (RV_ORDER_FLOW_INFORMATION) te regresa el flujo de documentos de un solo pedido.

Lo que deberias hacer es declararte una tabla interna para seleccionar los pedidos que estén en el rango que indicaste, luego aplicarle un loop a esa tabla interna para ver el flujo de docuemtos de cada pedido seleccionado.


Ah y coloca etiquetas cuando pongas código en los post, para facilitar la lectura.

Flatron 24/10/11 16:24:17

Gracias DERick.

Voy a probar.


Husos Horarios son GMT. La hora en este momento es 19:11:01.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web