MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 30/07/09, 17:39:33
marva300 marva300 is offline
Junior Member
 
Fecha de Ingreso: jun 2009
Mensajes: 6
Como Grabar ??

Miren son soy nuevo en esto de Abap y me han dicho que agregue un campo a una dympro ya lo hice pero cuando busco una tabla interna para agregarle el campo nuevo no lo veo no entiendo el codigo de grabar el cual es este

FORM grabar .

DATA: l_lin(6) TYPE n,
l_cont(6) TYPE n,
l_budat TYPE d,
l_bldat TYPE d,
l_erfmg(15) TYPE c.
CLEAR: it_messtab, it_bdc_tab, l_budat, l_bldat.
REFRESH: it_messtab, it_bdc_tab.

DESCRIBE TABLE it_detalle LINES l_lin.

CONCATENATE g_budat+6(2) g_budat+4(2) g_budat(4) INTO l_budat.
CONCATENATE g_bldat+6(2) g_bldat+4(2) g_bldat(4) INTO l_bldat.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '0300',
' ' 'BDC_OKCODE' '=NFPL',
' ' 'MKPF-BLDAT' l_bldat,
' ' 'MKPF-BUDAT' l_budat,
' ' 'RM07M-BWARTWE' '101',
' ' 'XFULL' 'X',
' ' 'RM07M-XNAPR' 'X',
' ' 'RM07M-WVERS2' 'X',
' ' 'RM07M-XNUVO' 'X'.
* ' ' 'RM07M-AUFNR' g_aufnr.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '1301',
' ' 'BDC_OKCODE' '=SP',
' ' 'RM07M-BWARTWE' '101',
' ' 'RM07M-AUFNR(01)' g_aufnr,
' ' 'RM07M-AUFPS(01)' '0001'.


g_repid = sy-repid.
EXPORT g_repid TO MEMORY ID 'G_REPID_ID'. "'g_repid_id'.
EXPORT g_nrop TO MEMORY ID 'G_NROP_ID'. "'g_nrop_id'.
EXPORT g_nroc TO MEMORY ID 'G_NROC_ID'. "'g_nroc_id'.
EXPORT it_detalle TO MEMORY ID 'IT_TABLA'. "'it_tabla'.
EXPORT g_tipo TO MEMORY ID 'G_TIPO_ID'. "'g_tipo_id'.
LOOP AT it_detalle INTO w_detalle.

l_cont = l_cont + 1.

l_erfmg = w_detalle-erfmg.
CONDENSE l_erfmg.

IF l_cont EQ l_lin.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '0310',
' ' 'BDC_OKCODE' '=SEUB',
' ' 'MSEG-ERFMG' l_erfmg,
* ' ' 'MSEG-ERFME' w_detalle-erfme,
' ' 'MSEG-LGORT' g_lgort,
' ' 'MSEG-CHARG' w_detalle-charg,
' ' 'DM07M-HSDAT_INPUT' l_budat.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '0321',
' ' 'BDC_OKCODE' '=BU'.

ELSE.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '0310',
' ' 'BDC_OKCODE' '=SEUB',
' ' 'MSEG-ERFMG' l_erfmg,
* ' ' 'MSEG-ERFME' w_detalle-erfme,
' ' 'MSEG-LGORT' g_lgort,
' ' 'MSEG-CHARG' w_detalle-charg,
' ' 'DM07M-HSDAT_INPUT' l_budat.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '0321',
' ' 'BDC_OKCODE' '=NFPL'.

PERFORM bdc_dynpro USING :
'X' 'SAPMM07M' '1301',
' ' 'BDC_OKCODE' '=SP',
' ' 'RM07M-BWARTWE' '101',
' ' 'RM07M-AUFNR(01)' g_aufnr,
' ' 'RM07M-AUFPS(01)' '0001'.

ENDIF.

ENDLOOP.
* Batch Input CALL TRANSACTION
g_mode = 'N'.
* Llamada a Transaccisn Via Batch Input
CALL TRANSACTION 'MB31' USING it_bdc_tab
MODE g_mode
UPDATE g_update
MESSAGES INTO it_messtab.
* Error Durante Call Transaction
IF sy-subrc EQ 0 .
CLEAR: g_mensaje.
PERFORM g_message_transform USING g_mensaje.
MESSAGE g_mensaje TYPE 'I'.
ELSE.
CLEAR: g_mensaje.
PERFORM g_message_transform USING g_mensaje.
MESSAGE g_mensaje TYPE 'I'.
ENDIF.

ENDFORM.


espero que me puedan ayudar
Responder Con Cita
  #2  
Viejo 30/07/09, 20:08:41
Avatar de stormshadow
stormshadow stormshadow is offline
Senior Member
 
Fecha de Ingreso: jun 2008
Mensajes: 117
ammm ps debe de estar en un include, por eso no vez la definición de la tabla interna, pero igual en esta parte del código: DESCRIBE TABLE it_detalle LINES l_lin. dale doble click a it_detalle y te debe de mandar a la definición de la tabla, ya nadamas agregas lo que necesitas
__________________
"Si quieres resultados distintos, no hagas siempre lo mismo" .... Einstein
Responder Con Cita
  #3  
Viejo 30/07/09, 21:58:21
Rodolfo SAP Rodolfo SAP is offline
Member
 
Fecha de Ingreso: jun 2009
Mensajes: 89
Lightbulb

Haber compañero yo al igual que tu fui nuevo y pues com me hubiera gustado que alguien me explicara de la misma forma que ahora redacte el funcionamiento de todo el form que pones espero te sirva.


Por ultimoy al fina de todo te hago las siguientes observaciones.

* Necesitas conocer mas sobre el funcionamiento de un CALL Transaction.

* Si conoces lo que se llaman grabaciones (SHDB) investiga ya que es lo que tu estas poniendo en la parte de
PERFORM bdc_dynpro USING : 'X' 'SAPMM07M' '1301', lo que esta en comillas sale de esa grabacion checalo.

* Una grabacion la realiza un Funcional pero acercate a el para que veas como la realiza.

* Seguna una trx estandar no puede ser modificada en Dynpros osea no agarras y pintas la cajita de texto asi tan facil a lo mejor lo unico que quieren es que un nuevo campo de la trx sea llenado en el call transaction, en este caso lo que debes hacer es preguntarle al funcional que nuevo campo es llenado y con que valor posiblemente lo unico que tiene que hacer es aumentar el campo en la tabla it_detalle, agregar su logica de busqueda y agregar la llamada al PERFORM bdc_dynpro USING <usando los valores para ese campo>.

Ejempo PERFORM bdc_dynpro USING: ' ' '<CAMPO TRANSACCION>' '<CAMPO TABLA INTERNA it_detalle-new_field>'.

* Si es antes de guardar o algo asi deberas buscar una llamada pero qeu contenga algo asi como
PERFORM bdc_dynpro USING : ' ' 'OK_CODE' '=SAVE' esto es como si oprimieras el botoncito de SAVE pero mediante un call.

Salu2

Úlima edición por Rodolfo SAP fecha: 30/07/09 a las 22:00:43.
Responder Con Cita
  #4  
Viejo 11/08/09, 15:00:47
marva300 marva300 is offline
Junior Member
 
Fecha de Ingreso: jun 2009
Mensajes: 6
Descuadre en Stock de Materiales

Tengo este codigo que me obtiene el Stock de Materiales en un rango de fechas y cuando lo comparo con la MB5B en algunos casos falla y esto solo en Productivo en desarrollo nunca falla, escribo porque soy nuevo y es una de mis primeras tareas a cargo espero sus prontas respuestas de ayuda en donde creen que puede estar la falla


FORM organizar_datos .

DATA: l_st_lu TYPE mard-labst,
l_st_cc TYPE mard-labst,
l_st_bl TYPE mard-labst,
l_erfme TYPE mseg-erfme.


LOOP AT it_stock INTO w_stock WHERE flag_conv EQ 'X'.
CLEAR w_rep.

CLEAR w_mat.
READ TABLE it_mat INTO w_mat WITH KEY matnr = w_stock-matnr.

* IF NOT p_matkl IS INITIAL AND w_mat-matkl NE p_matkl.
IF NOT w_mat-matkl IN s_matkl.
CONTINUE.
ENDIF.

w_rep-werks = w_stock-werks.
w_rep-lgort = w_stock-lgort.

CLEAR w_cli.
READ TABLE it_cli INTO w_cli WITH KEY kunnr = w_mat-zzcodclient.

w_rep-matkl = w_mat-matkl.
w_rep-sortl = w_cli-sortl.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = w_stock-matnr
IMPORTING
output = w_rep-matnr.

w_rep-maktx = w_mat-maktx.

l_erfme = p_erfme.

IF l_erfme IS INITIAL.
l_erfme = w_mat-meins.
ENDIF.

* { Begin of Delete PDA14072008
* CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
* EXPORTING
* input = l_erfme
* IMPORTING
* output = w_rep-meins.
* End of Delete PDA14072008 }

WRITE l_erfme TO w_rep-meins. "I-PDA14072008

CLEAR w_uni.
READ TABLE it_uni INTO w_uni WITH KEY matnr = w_stock-matnr
meinh = l_erfme.
IF sy-subrc EQ 0.
w_rep-factor = w_uni-umrez / w_uni-umren.
ENDIF.

IF p_vislot EQ 'X'.
w_rep-charg = w_stock-charg.
ENDIF.

IF p_datum LT sy-datum.
CLEAR: l_st_lu, l_st_cc, l_st_bl.
* Buscamos los movimientos de mercancias
IF p_vislot EQ 'X'.
LOOP AT it_movcon INTO w_movcon WHERE matnr EQ w_stock-matnr AND
werks EQ w_stock-werks AND
lgort EQ w_stock-lgort AND
charg EQ w_stock-charg AND
flag_conv EQ 'X'.
CASE w_movcon-insmk.
WHEN 'X' OR '2'.
* l_st_cc = l_st_cc + w_movcon-erfmg.
l_st_cc = l_st_cc + w_movcon-menge.
WHEN 'S' OR '3'.
* l_st_bl = l_st_bl + w_movcon-erfmg.
l_st_bl = l_st_bl + w_movcon-menge.
WHEN ' ' OR 'F'.
* l_st_lu = l_st_lu + w_movcon-erfmg.
l_st_lu = l_st_lu + w_movcon-menge.
ENDCASE.
ENDLOOP.

ELSE.
LOOP AT it_movcon INTO w_movcon WHERE matnr EQ w_stock-matnr AND
werks EQ w_stock-werks AND
lgort EQ w_stock-lgort AND
flag_conv EQ 'X'.
CASE w_movcon-insmk.
WHEN 'X' OR '2'.
* l_st_cc = l_st_cc + w_movcon-erfmg.
l_st_cc = l_st_cc + w_movcon-menge.
WHEN 'S' OR '3'.
* l_st_bl = l_st_bl + w_movcon-erfmg.
l_st_bl = l_st_bl + w_movcon-menge.
WHEN ' ' OR 'F'.
* l_st_lu = l_st_lu + w_movcon-erfmg.
l_st_lu = l_st_lu + w_movcon-menge.
ENDCASE.
ENDLOOP.

ENDIF.

IF w_stock-st_lu > 0.

w_rep-st_lu = w_stock-st_lu - l_st_lu.

ENDIF.

IF w_stock-st_cc > 0.

w_rep-st_cc = w_stock-st_cc - l_st_cc.

ENDIF.

IF w_stock-st_bl > 0.

w_rep-st_bl = w_stock-st_bl - l_st_bl.

ENDIF.

w_rep-total = w_rep-st_lu + w_rep-st_cc + w_rep-st_bl.

ELSE.
w_rep-st_lu = w_stock-st_lu.
w_rep-st_cc = w_stock-st_cc.
w_rep-st_bl = w_stock-st_bl.
w_rep-total = w_rep-st_lu + w_rep-st_cc + w_rep-st_bl.
ENDIF.

APPEND w_rep TO it_rep.

ENDLOOP.

IF p_nozero EQ 'X'.
DELETE it_rep WHERE total EQ 0.
ENDIF.
ENDFORM.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 13:52:15.


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