Función para cancelar/reversar facturaciones de ventas (SD)

28 02 2019

Con la bapi BAPI_BILLINGDOC_CANCEL1 podemos cancelar/reversar documentos de facturación del área de ventas (SAP SD).

Esta bapi cumple la misma labor que la transacción VF11.


Este es el código:

DATA:
lv_doc         LIKE bapivbrksuccessbill_doc,
lv_date       TYPE bf_datm1eb,
t_return      TYPE TABLE OF bapireturn1,
t_success    TYPE TABLE OF bapivbrksuccess.

lv_doc  = vbeln. “Número de factura SD que se quiere cancelar.
lv_date = fecha. “Fecha en la que se contabilizará la cancelación.

* Función que reversa el documento
CALL FUNCTION BAPI_BILLINGDOC_CANCEL1
EXPORTING
billingdocument = lv_doc
billingdate  = lv_date
*testrun         =
*no_commit   =
TABLES
return  = t_return
success = t_success.

*La tabla t_return devuelve todos los mensajes ocurridos durante la cancelación.
*La tabla t_succes devuelve, entre otros datos, el número de la cancelación.


Technorati tags:





Agregar una “Ayuda de búsqueda” a un campo de una transacción estándar

16 06 2017

En este ejemplo vamos a agregar una “Ayuda de búsqueda” en el campo estándar “AFNAM” (Solicitante) para las transacciones ME21N/ME22N/ME23N (Pedido de compra).
image
Pero los pasos a seguir son los mismos para cualquier otra transacción.

 

Debemos determinar la estructura y el campo que vamos a modificar.
Para eso en la transacción ME21N/ME22N/ME23N nos posicionamos en el campo "Solicitante", presionamos F1… y click en "Información técnica":
image

 

Paso seguido vamos a la transacción SE11 para ver la estructura obtenida en el paso anterior (MEPO1211).
image
Y hacemos doble click en la estructura “MEPO1211_DATA”.

 

A continuación creamos una “Estructura de inclusión”.
image

Por ejemplo ZHELPAFNAM
image
Y apretamos el botón “Appending On”.

 

Luego hay que ir a la solapa “Ayuda p./Verif.entr”, posicionar el cursor en el campo AFNAM y click en el botón “Ay.búsq.”.
image
Completar con el “Nombre de la tabla” (MEPO1211_DATA) y el “Nombre del campo” (AFNAM).

Guardamos y activamos la estructura de ZHELPAFNAM.

 

Finalmente sólo resta volver a la estructura anterior (MEPO1211_DATA). Y desde la solapa “Ayuda p./Verif.entr” hay que agregar la ayuda que queramos que tenga el campo AFNAM.
image

En este caso se agregó una ayuda Z creada especialmente… pero podría haber sido una ayuda estándar.

Espero que les sirva!


Technorati tags:





Agregar íconos en pantalla de selección

21 06 2016

En nuestra pantalla de selección podemos agregar íconos al costado de cada parámetro:
Dibujo

 

Para esto simplemente hay que agregar una “combinación de caracteres” (código ID) al comienzo de los textos de selección:
Dibujo
Ruta: Goto –> Text Elements –> Selection texts

 

Cada ícono tiene su propia combinación de caracteres:
Dibujo

 

Y con este programa podemos conocer todos los íconos y su respectivo ID:
DATA :
gs_icon TYPE ICON,
gt_icon TYPE TABLE OF ICON.
SELECT * FROM icon INTO TABLE gt_icon.
LOOP AT gt_icon INTO gs_icon.
WRITE :/
gs_icon-name,
33 '@',
34 gs_icon-id+1(2),
36 '@',
40 gs_icon-id.
ENDLOOP.

 


Technorati tags:





RG 3685 – Almacenamiento de duplicados electrónicos y régimen de información de compras y ventas

4 05 2016

Con la resolución general 3685 de la AFIP, en Argentina se actualizaron los reportes que hasta el momento se conocían como “Citi Compras y Citi Ventas“. Y además se agregó un tercer reporte: “Duplicados Electrónicos“.

Este es el listado de Notas SAP que hay que implementar:
– Notas informativas:

  1. 2111795
  2. 2113594
  3. 2130850

 

– Reporte Duplicados Electrónicos:

  1. 2133830
  2. 2152071
  3. 2152354
  4. 2112006
  5. 2161430
  6. 2179276
  7. 2233315
  8. 2205824
  9. 2239191

 

– Reporte de Compras:

  1. 2156071
  2. 2154924
  3. 2178007
  4. 2177154
  5. 2198423

 

– Reporte de Ventas:

  1. 2154322
  2. 2179014
  3. 2187146
  4. 2191414
  5. 2192300
  6. 2177143
  7. 2211260
  8. 2211320

 


Technorati tags:





Tabla de datos maestros de los usuarios

26 02 2013

Mediante la tabla USR01 podemos visualizar las parametrizaciones de datos maestros de los usuarios SAP.

Esta tabla nos será de utilidad por ejemplo cuando necesitemos saber cuál es el formato de fecha o cuál es separador decimal de un usuario SAP.

A esta tabla se ingresa simplemente colocando el nombre de usuario en el campo BNAME.

USR01


Technorati tags:





Transportar registros de una tabla sin diálogo de actualización

14 03 2012

Cuando una tabla no tiene diálogo de actualización no se pueden realizar los transportes de registros mediante la transacción SM30.

Ante estos casos, la manera de transportar entradas a otro ambiente es la siguiente: 

                1. Ir a la transacción SE10 y crear una orden nueva de tipo workbench:image image
                2. Una vez creada la orden damos doble click sobre la misma. Y en la solapa “Objetos” completamos la siguiente información:
                  image
                  NOTA: el campo Objeto lo completamos con la tabla que queremos transportar. En este ejemplo se transportarán registros de la tabla SFLIGHT.
                3. A continuación hacer click en la llave (image) y en la ventana que se abre hacer doble click en la primera línea en blanco:
                  image
                  Completando los distintos campos podremos elegir los registros que queremos transportar. Para este ejemplo transportaremos la tabla completa del mandante 100
                  image

                4. Ya creada la entrada sólo resta hacer click en el botón remarcado en rojo para verificar el contenido que vamos a transportar:
                  image
                  image
                  image 

Finalmente hay que volver atrás, guardar (image) y cuando aparece el mensaje de advertencia elegimos que SÍ.
Con esto tendremos lista la orden para poder transportar.


Technorati tags:





Documento FI en distintos LEDGERS

19 10 2011

En esta ocasión comparto la función FAGL_GET_DOC_DETAILS_OF_LEDGER que nos servirá para conocer un documento FI en otro LEDGER.
Porque dependiendo de la configuración del sistema es posible que el número de un documento FI sea distinto según el LEDGER. E incluso puede hasta variar el ejercicio. 

A la función FAGL_GET_DOC_DETAILS_OF_LEDGER hay que pasarle el LEDGER de destino; y la sociedad, documento y ejercicio.

image

 

Como resultado, en la estructura ES_DETAILS, obtendremos: el ejercicio, período y número de documento del LEDGER de destino.

image


Technorati tags:





Función para obtener las cc-nóminas (sueldo) de un empleado

22 09 2011

En el mundo de SAP HR, la cc-nómina ("Clave Concepto Nómina") es cada uno de los conceptos que componen el sueldo de un trabajador.

Estos conceptos se ven muy claros en un recibo de sueldo. Cada renglón con código, descripción y monto es un concepto; y por ende una cc-nómina.

Es decir: el sueldo es un concepto, las horas extras es otro concepto, etc, etc.


Si alguna vez nos toca hacer un programa donde necesitemos conocer el sueldo y/o composición de un empleado. Entonces la función HRCM_PAYROLL_RESULTS_GET nos será de muchísima utilidad para evitar el uso de base de datos lógicas de HR y su “engorrosa” codificación.
Ya que con sólo pasarle el número de legajo del trabajador y una fecha de inicio y fin, obtendremos una estructura completa de tablas con información del sueldo y sus cc-nóminas.

image

Por ejemplo en la estructura payroll_result_tab tendremos la tabla RT con el listado de cc-nóminas con sus respectivos montos:

image


Technorati tags:





Pasar SmartForm a PDF

11 05 2011

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con las siguientes pocas líneas vamos a poder hacerlo.


*Declaraciones
DATA: w_ctrlop    TYPE ssfctrlop,
          w_compop TYPE ssfcompop,
          w_return    TYPE ssfcrescl,
          otfdata       LIKE itcoo OCCURS 0 WITH HEADER LINE,
          lc_name     TYPE rs38l_fnam,
          intab         TYPE  soli_tab,
          objbin       TYPE  solix_tab, 
          wa_intab   TYPE LINE OF soli_tab,
          wa_objbin TYPE LINE OF solix_tab,
          objpack    LIKE sopcklsti1 WITH HEADER LINE.

*Función que devuelve el modulo de función del SmartForm
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
   EXPORTING
      formname           = ‘ZSMARTFORM’  “Nombre del formulario SmartForm
   IMPORTING
      fm_name            = lc_name
   EXCEPTIONS
      no_form                  = 1
      no_function_module = 2 
   OTHERS                     = 3.

*Llama al modulo de función del SF
    w_ctrlop-getotf          = ‘X’.
    w_ctrlop-no_dialog    = ‘X’.
    w_compop-tdnoprev  = ‘X’.

CALL FUNCTION lc_name
   EXPORTING
        output_options        = w_compop 
        control_parameters = w_ctrlop
   IMPORTING
        job_output_info       = w_return
   EXCEPTIONS
        formatting_error   = 1
        internal_error       = 2
        send_error           = 3
        user_canceled      = 4
   OTHERS                    = 5.
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ELSE.
      otfdata[] = w_return-otfdata[].
   ENDIF.

*En la tabla otfdata nos queda guardado el formulario en formtao OTF
*Ahora sólo resta convertir el OTF en PDF
LOOP AT otfdata.
    wa_intab = otfdata.
    APPEND wa_intab TO intab.
    CLEAR wa_intab.
ENDLOOP.

*Convertir el OTF en PDF
CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
    EXPORTING
      format_src           = ‘OTF’
      format_dst          = ‘PDF’
*     ADDR_TYPE        =
      devtype               = ‘LP01′
*     FUNCPARA          =
    CHANGING
      transfer_bin         = objpack-transf_bin
      content_txt          = intab
      content_bin         = objbin
      objhead              = intab
      len                     = objpack-doc_size
   EXCEPTIONS
      err_conv_failed   = 1 
   OTHERS                = 2.

*LISTO!!! En la tabla objbin nos queda guardado el PDF para salvarlo *en la PC con la función ‘GUI_DOWNLOAD’ o bien enviarlo por mail con *la función ‘SO_NEW_DOCUMENT_ATT_SEND_API1’


Technorati tags:





Pasar Sapscript a PDF

4 05 2011

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con las siguientes pocas líneas vamos a poder hacerlo.


*Declaraciones
TABLES: itcpo.

DATA: otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
          intab         TYPE  soli_tab,
          objbin       TYPE  solix_tab, 
          wa_intab   TYPE LINE OF soli_tab,
          wa_objbin TYPE LINE OF solix_tab,
          objpack    LIKE sopcklsti1 WITH HEADER LINE.

*Antes de la llamada a la función ‘OPEN_FORM’
itcpo-tdgetotf = ‘X’.
itcpo-tddest   = ‘LP01’.

CALL FUNCTION ‘OPEN_FORM’
   EXPORTING
      form       = ‘ZSAPSCRIPT’  “Nombre del formulario Sapscript 
      language = ‘S’
      options   = itcpo
      device    = ‘PRINTER’
      dialog     = ‘ ‘              “Vacío para que no muestre el pop-up de impresión
   EXCEPTIONS
   OTHERS   = 1.

 

*En el ‘CLOSE_FORM’
CALL FUNCTION ‘CLOSE_FORM’
   TABLES
      otfdata = otfdata
   EXCEPTIONS
   OTHERS  = 1.

*En la tabla otfdata nos queda guardado el formulario en formtao OTF
*Ahora sólo resta convertir el OTF en PDF

LOOP AT otfdata.
    wa_intab = otfdata.
    APPEND wa_intab TO intab.
    CLEAR wa_intab.
ENDLOOP.

*Convertir el OTF en PDF
CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
    EXPORTING
      format_src           = ‘OTF’
      format_dst          = ‘PDF’
*     ADDR_TYPE        =
      devtype               = ‘LP01’
*     FUNCPARA          =
    CHANGING
      transfer_bin         = objpack-transf_bin
      content_txt          = intab
      content_bin         = objbin
      objhead              = intab
      len                     = objpack-doc_size
   EXCEPTIONS
      err_conv_failed   = 1 
   OTHERS                = 2.

*LISTO!!! En la tabla objbin nos queda guardado el PDF para salvarlo *en la PC con la función ‘GUI_DOWNLOAD’ o bien enviarlo por mail con *la función ‘SO_NEW_DOCUMENT_ATT_SEND_API1’


Technorati tags:





Transacción NACU – Clases de Mensaje

7 05 2010

La transacción NACU es de mucha utilidad para conocer la configuración de cualquier clase de mensaje.

Al ingresar nos pedirá elegir el tipo de aplicación (facturación, ventas, expedición, etc.). Tras ejecutar abre una nueva pantalla con todo el listado de Clases de Mensaje para el tipo de aplicación elegida. Y a la izquierda podremos seleccionar para ver: títulos y textos, rutinas de proceso y funciones de interlocutor.

Es ideal para cuando un programador quiera conocer el formulario de impresión.

PD: Los créditos son para mi amigo Claudio Suriano.


Technorati tags:





C14Z_DYNP_READ_FIELD – Función para leer campos de una DYNPRO

29 04 2010

La función C14Z_DYNP_READ_FIELD sirve para leer campos de una Dynpro o Pantalla.
No necesariamente de la dynpro en que nos encontramos. Puede ser de una pantalla anterior.

Esto nos puede ser muy útil, como fue en mi caso, para el desarrollo de Field Exits.


A continuación el código:

* A I_PROGRAM hay que pasarle el nombre del programa.
* A I_DYNPRO se le pasa el número de pantalla o dynpro.
* Y I_FIELDNAME el campo del cual queremos conocer su contenido.
* La función nos devuelve en la variable W_EVAL el valor encontrado.

DATA: W_EVAL LIKE DYNPREAD-FIELDVALUE.

CALL FUNCTION ‘C14Z_DYNP_READ_FIELD’                                    
EXPORTING                                                              
   I_PROGRAM       = ‘SAPF110O’                                         
   I_DYNPRO        = ‘0102’                                             
   I_FIELDNAME     = ‘REGUH-LAUFD’                                      
   I_FLG_STEPLOOP  = ‘X’                                                
CHANGING                                                               
   E_VALUE         = W_EVAL.   


Technorati tags:





Guardar archivo en formato PDF

11 01 2010

Con el siguiente código podremos generar archivos PDF.

Ya que con la función GUI_DOWNLOAD únicamente no se puede hacer. Previamente hay que realizar una conversión para luego sí guardar el fichero .PDF.


 

*&—————————————————————–*
*& Report  Y_TEST
*&
*&—————————————————————–*
*&
*&
*&—————————————————————–*

REPORT y_test NO STANDARD PAGE HEADING.

**********************************************************************
*  Definición de variables                                                                   *
**********************************************************************

DATA: filesize  TYPE i,
header  LIKE thead,
options  LIKE itcpo,
result    LIKE itcpp,
otf        LIKE itcoo OCCURS 0 WITH HEADER LINE,
lines     LIKE tline OCCURS 0 WITH HEADER LINE,
lv_file   TYPE string.

**********************************************************************
*  Definición de la pantalla de selección                                              *
**********************************************************************

SELECTION-SCREEN BEGIN OF BLOCK blq1 WITH FRAME TITLE text-t01.
PARAMETERS:
p_impre TYPE pri_params-pdest OBLIGATORY,
p_file  TYPE rlgrap-filename OBLIGATORY DEFAULT ‘C:\PRUEBA.PDF’.
SELECTION-SCREEN END OF BLOCK blq1.

 

**********************************************************************
*  Proceso principal                                                                           *
**********************************************************************

*Se completa tabla lines con el contenido que queramos que tenga el archivo PDF
lines-tdline = ‘Este es el texto que aparecerá en el archivo PDF’.
lines-tdformat = ‘K’.
APPEND lines.

*Se obtienen y definen las opciones de formato del archivo
options-tddest = p_impre. “Nombre de impresora local
options-tdnewid = ‘X’.
options-tdgetotf = ‘X’.

CALL FUNCTION ‘PRINT_TEXT’
EXPORTING
device           = ‘PRINTER’
dialog           = ‘ ‘
application    = ‘TX’
header          = header
options         = options
IMPORTING
result         = result
TABLES
lines          = lines
otfdata      = otf
EXCEPTIONS
canceled     = 01
device        = 02
form          = 03
options      = 04
unclosed    = 05
unknown    = 06
format       = 07
textformat  = 08
communication = 09.

* Se convierte a PDF
CALL FUNCTION ‘CONVERT_OTF’
EXPORTING
format                = ‘PDF’
max_linewidth     = 132
IMPORTING
bin_filesize          = filesize
TABLES
otf                    = otf
lines                 = lines
EXCEPTIONS
err_conv_not_possible = 1.

* Bajamos el archivo
lv_file = p_file.

CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
bin_filesize = filesize
filename = lv_file
filetype = ‘BIN’
* APPEND = ‘ ‘
* CODEPAGE = ‘ ‘
* NO_BYTEORDER_MARK = ‘ ‘
* IMPORTING
* FILELENGTH = c
TABLES
data_tab = lines
* FORMAT_TAB =
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6.


Technorati tags:





Reducir el tamaño de los Transaction Logs

10 07 2009

Cuando los transactions logs de la base de datos de SQL Server crecen demasiado pueden generarnos errores en SAP y varios dolores de cabeza.

En esos casos la solución es truncar dichos archivos, reducir su tamaño. Nunca eliminarlos!.


Atención: Lo que sigue es sólo para SQL Server, para otro tipo de base de datos, como ser Oracle, los comandos cambian.

¿Cómo truncamos o reducimos los archivos?

Primero tenemos que saber los nombres de los transactions logs y su ubicación. Para eso ingresamos en la transacción DB02.

Esta transacción tiene toda la información referida a la base de datos, y en el medio nos da un detalle completo de todos los archivos y de los transactions logs. 

Una vez que sabemos los nombres de los transactions logs (extensión .LDF); bajamos SAP y acto seguido ingresamos al servidor donde esta instalado SQL.

Ya estamos preparados para reducir los logs, pero antes se recomienda hacer un back up de los archivos que vamos a truncar.

Abrimos el SQL Management Studio y nos conectamos a nuestra base de datos. A continuación clickeamos en el botón “Nueva consulta” y escribimos el siguiente comando:
BACKUP LOG <sid> WITH NO_LOG

    • <sid> = nombre de la base de datos.
      Luego apretar el botón “Ejecutar”.

 

Cuando termina hacemos una nueva consulta pero con el comando:
DBCC SHRINKFILE (<name_logfile>, <size>)

    • <name_logfile> = nombre del transaction log
    • <size> = tamaño al que queremos truncar/reducir el archivo., Ej: 10 MB.

           Apretar el botón “Ejecutar”.
(Repetir este comando por cada transaction log).

 

Con esto ya tendremos reducidos nuestros archivos en cuestión. Espero que les sea útil. Para más información pueden ver la nota de SAP nro 625546.


Technorati tags:





Transacción SGEN – Compilación de Programas

1 07 2009

image

La transacción SGEN es una gran utilidad que nos permitirá compilar o recompilar todos los programas.

Pueden generarse programas, grupos de funciones, clases y aplicaciones Business Server Page (aplicaciones BSP).

Hay que tener en cuenta que la misma tarda bastante tiempo en ejecutarse.

Para saber con qué opción ejecutarla, acceder al botónInfo sobre el generador de carga SAP”. La información es muy completa y detallada.

O bien ver la nota de sap nro  379918.


Technorati tags:





SELECT OPTIONS DINÁMICOS

19 04 2009

Con el siguiente código podremos crear pantallas de entrada de datos dinámicas. Donde según el radio button que se elija, aparecerán distintos filtros de selección.

image 

image

 

TABLES: KNA1, MARA.

************************************************************************
*** SELECTION-SCREEN / PARAMETERS / SELECT-OPTIONS                   ***
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-A01.
PARAMETERS:
            R_CLIE  RADIOBUTTON GROUP GRUP USER-COMMAND R DEFAULT ‘X’,
            R_MATE  RADIOBUTTON GROUP GRUP.
SELECTION-SCREEN END OF BLOCK B1.

*Datos Clientes
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-B02.
SELECT-OPTIONS: SO_CLIE  FOR KNA1-KUNNR MODIF ID CLI,
                SO_NAME  FOR KNA1-NAME1 MODIF ID CLI,
                SO_LAND  FOR KNA1-LAND1 MODIF ID CLI.
SELECTION-SCREEN END OF BLOCK B2.

*Datos Materiales
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-B03.
SELECT-OPTIONS: SO_MATE FOR MARA-MATNR NO INTERVALS NO-EXTENSION MODIF ID MAT.
SELECTION-SCREEN END OF BLOCK B3.

*———————————————————————–*
*AT SELECTION-SCREEN.
*———————————————————————–*

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.

    IF SCREEN-GROUP1 = ‘MAT’.
      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 1.
        WHEN OTHERS.
          SCREEN-ACTIVE = 0.
      ENDCASE.
    ELSEIF SCREEN-GROUP1 = ‘CLI’.
      CASE R_MATE.
        WHEN ‘X’.
          SCREEN-ACTIVE = 0.
        WHEN OTHERS.
          SCREEN-ACTIVE = 1.
      ENDCASE.
    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.


Technorati tags:





Circuito de Reparaciones (Orden de Renovación)

25 12 2008

Ingresamos a la transacción IW81. Todos los campos deben ser completados tal como se indica en la figura:
clip_image002[4]
Clase de orden:PM04
Prioridad: Muy elevado, Alto, Medio (utilizado normalmente) y Bajo.
Número material: Material a reparar.
Centro planificación:1100” en este caso, Varía según la configuración de cada empresa. 

Luego presionamos ENTER o el botón Datos cab.

Pantalla inicial:
Completar en la parte superior de la pantalla el nombre o descripción del proceso (ejemplo : Prueba repa motor).

clip_image018

 

Debemos completar los siguientes campos en la solapa “Datos cab.”:
Responsable:
Rs.pto.tr.: Colocar el responsable de la operación.

Renovación:
Debemos completar tanto el centro y almacén de ingreso y salida (DE…A).

Primera operación:
Operación: Texto libre referente a la operación a realizar.

Pto Trab/Ce: Colocar el responsable de la operación.

ClvCtrol: Completar con la clave de control.

Cl.activ: Se puede dejar vacío o completar con la clase de actividad.

Trabinvert, Cantidad, y Dur.oper: El tiempo a emplear en la operación.

 

Luego vamos a la solapa “Interloc.”:
Y colocamos el número de cliente y seleccionamos del matchcode el título AG SOLICITANTE. Presionamos ENTER y se completan los datos.
Si necesitamos visualizar los datos del cliente ingresamos por la parte superior de la pantalla al botón clip_image025.
Antes de grabar debemos presionar el botón clip_image029 para liberar la orden y poder continuar con el proceso.
Finalizar grabando la orden clip_image036

 

!!!Con la transacción IW32 podemos visualizar esta orden una vez creada.

 

El siguiente paso es la entrada de la mercadería y se explica a continuación:
Ingresamos a la transacción IW8W:

Colocamos en el campo el número de orden generado previamente. Y presionamos ENTER.
clip_image044
Completamos los campos de fecha, almacén y cantidad del material que recibimos para reparar. Y finalizamos grabando el documento.

 

Notificación de OT:
Ingresamos a la transacción IW42

En la siguiente pantalla presionamos ENTER para visualizar los datos (horas de trabajo) grabados en la orden (Notificación tiempo).
Y deberíamos incluir los materiales adicionales que se usarán en la reparación. Centro/ Almacén (Movimientos de mercancías).

 

Ahora debemos generar el remito o formulario que acompañará la operación:
Ingresamos a la transacción MB11.

Chequear que esté puesto el tilde en el campo “IMPR.”. Presionamos el botón Por orden…

Completamos el campo de Orden. Presionamos el botón Tomar + Detalle.

Y se visualizarán los datos, si lo necesitamos… podemos agregar un texto en el campo del mismo nombre.

Presionando ENTER, veremos el detalle del movimiento de salida que se está por realizar.

Finalmente si hacemos doble click sobre el número de material; se abrirá una nueva pantalla donde podremos elegir las opciones de impresión con el botón “Mensajes“.

Volvemos entonces a la pantalla inicial donde ahora sí contabilizamos el documento utilizando el botón de grabar. Emitiendo así el remito.


Technorati tags:





Circuito de subcontratación

17 10 2008

Planteo del problema:
Nuestra empresa requiere poder enviar un material semielaborado o materia prima a un proveedor. Para que luego el proveedor devuelva el material terminado con una factura por el costo del servicio.

Solución mediante SAP:
En este ejemplo se utiliza el material 200011 que es una lista de material que tiene como componente el material 100043.
Por lo tanto, para este ejemplo nuestra empresa entregará a un tercero las unidades correspondientes de la materia prima (material 100043) para luego recibir el producto terminado (material 200011).


1º PASO: Ingresar a la transacción ME21N y crear un pedido de tipo NB (estándar), en este caso cree un el tipo ZSUB (Sol. Subcontratación) que es una copia del tipo NB. Y elegir el proveedor que realizará el trabajo:
image

En la parte de las posiciones colocar el material terminado que se recibirá del proveedor. Completar con los datos que se usan comúnmente (fecha de entrega, cantidad, precio, etc).
Y en la columna de tipo de posición colocar L (subcontratación).
image

Luego completar, como hacen comúnmente con cualquier pedido, los campos que consideren necesarios de la parte de Cabecera.
image
En la parte de Detalles de la posición se podrán ver los componentes del material. En este caso el material 100043.

Finalmente se debe grabar el pedido:
clip_image002

 

2º PASO: El segundo paso es hacer entrega del material al proveedor relacionado al pedido que creamos en el paso anterior. En este ejemplo el material que se entregará es el 100043.
Para esto hay que ir a la transacción MB1B
Y completar con Clase de movimiento 541, centro y tildar la opción Impr para que se imprima un remito.
Acto siguiente apretar el botón de Por pedido…
clip_image002[5]

Nos aparecerá una ventana donde debemos completar con el número del pedido creado en el primer paso. Y clickear en el botón Tomar + Detalle.
clip_image002[7]
Por último apretar el botón de grabar para que se contabilice el traspaso y se imprima el remito.

 

3º PASO: Finalmente, el tercer y último paso es, una vez que se recibe el material terminado del proveedor. Hay que darlo de alta y dar de baja el material entregado.

Ir a la transacción MIGO
Eligiendo: Entrada de mercancía, pedido, número de pedido, y el movimiento 101.
image

Luego tildar la opción de Posición OK, completar la fecha de contabilidad y Nota de entrega. Apretar el botón Verificar.
Si todo da bien, apretar en el botón guardar.
image

Con esto, el circuito de subcontratación queda terminado.


Technorati tags:





Completar variables con espacios a la izquierda

16 08 2008

Es común que en nuestras tareas diarias nos pidan generar archivos con algún formato en particular. Para luego ser levantado por un aplicativo fuera de SAP.

Y  es probable que nos pidan que ciertos campos los completemos con espacios en blanco adelante (a la izquierda). Por lo tanto acá dejo una sentencia ABAP para completar con espacios:


DATA: lv_dato(14) TYPE C.

lv_dato = ‘HOLA’.

*-> Con esta sentencia la variable lv_dato queda con 10 espacios en blanco y luego la palabra HOLA
SHIFT lv_dato RIGHT DELETING TRAILING SPACE.

 

Para saber más sobre la sentencia SHIFT…


Technorati tags:





Función SAVE_TEXT – Crear y guardar Textos en SAP

15 08 2008

Con la función SAVE_TEXT vamos a poder crear y completar campos de textos en SAP. Podremos llenar, por ejemplo, textos de cabecera y posición en forma masiva.


Vamos a necesitar algo de información previa. Para eso hay que ir al lugar donde ponemos el texto y clickeamos en el menú Pasar a —> Cabecera…

 

El código que tenemos que agregar es:

*Declaraciones para los textos.
DATA: it_header  TYPE thead,
           it_lines      TYPE TABLE OF tline.

         REFRESH it_lines.
         CLEAR it_header.

*—–>Texto para agregar       
        it_lines-tdline = ‘Este es un texto de cabecera’.
        APPEND wa_lines TO it_lines.

*—–>Completamos con los datos que obtuvimos arriba 
        it_header-tdobject = ‘VBBK’.  “VG_OBJ
        it_header-tdname = ‘0000000057’.  “VG_NAME
        it_header-tdid   = ‘ZCER’.  “VG_ID
        it_header-tdspras = ‘E’.  “VG_LANG
        it_header-tdlinesize = ‘072’.

*—->Llamamos a la función que nos completa el texto
        CALL FUNCTION ‘SAVE_TEXT’
          EXPORTING
            header          = it_header
            insert          = ‘X’
            savemode_direct = ‘X’
          TABLES
            lines           = it_lines
          EXCEPTIONS
            id              = 1
            language        = 2
            name            = 3
            object          = 4
            OTHERS          = 5.
        IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

Como resultado obtenemos:


Technorati tags: