AAAAA

Lo MeJoR De Lo MeJoR TiPs.
Este blog esta Pensado para aportar tips y ejemplos de Programas SAP - ABAP.

martes, 9 de agosto de 2022

Maestro Proveedor Maestro cliente SAP

 Muchas veces tenemos el caso de no identificar bien el maestro de proveedor y maestro de clientes,

por lo que haré una simple comparación entre ambos

Maestro de proveedor:                                                 

1. Proveedor (Área de compras, almacén)                                                                              

- Utilizado para crear la orden de compra y almacen                      

 - Organización de compras                                                          

2. Acreedor (Área de contabilidad, tesorería)                                                                                  

- Utilizado para realizar el pago.                                                

- Sociedad

Maestro de cliente

1. Cliente (Área de ventas)    

-  utilizado para crear el pedido de  venta.

2. Deudor. (Área de contabilidad, cobranza)    

- Utilizado para cobrar el pago.

El maestro de proveedor es utilizado para comprar, en el área contable y tesorería es llamado Acreedor a quien se le debe registra su factura y realizar el pago por el producto o servicio.

El maestro de cliente es utilizado para realizarle una venta, el área contable y cobranza es llamado Deudor quien debe realizársele el cobro del bien o producto que le hemos brindado.

Cuando estamos en la versión S/4 Hana, todas estas funcionalidades están agrupadas en la TX "BP" Business Partner donde aparece el rol de "Intercolutor comercial" o "Socio comercial" donde nos permite navegar a cada rol especifico, SAP realizó esta agrupación para no repetir información compartida como son dirección, nombre identificación Fiscal (RUC) entre otros.





viernes, 26 de octubre de 2018

7. ME23N, Cambiar la información a mostrar en Orden de compra SAP

En este ejemplo vamos a modificar la información que se muestra en una orden de compra ME23N,

Reemplazará solo al visualizar la OC,  la información que se tiene en la Base de datos.


1. Debemos identificar la BAPI a modificar,
 para el caso de la orden de compra es la siguiente:

TX: SE18
BAPI: ME_PROCESS_PO_CUST (sino esta implementada la BAPI deben hacerlo)



Vamos a ingresar el código correspondiente en el Método IF_EX_ME_PROCESS_PO_CUST~OPEN, el cual se ejecuta antes de mostrar la pantalla de la ME23N.



Código y explicación de cada paso.



Ejemplo del reemplazo.
Valores Reales:



Nuevos Valores reemplazados (Solo en tiempo de ejecución).


***************************************Código**********************

METHOD if_ex_me_process_po_cust~open.
*********************************************************************
*********************************************************************
  " Obtenemos los datos de la cabecera
  DATA:
    lw_mepoheader TYPE mepoheader,                 "Datos a Nivel cabecera
    lc_po_header  TYPE REF TO cl_po_header_handle_mm,"Clase Manejo OC a nivel cabecera
    lt_items      TYPE purchase_order_items,             "Tabla de posiciones de la OC
    lw_item       TYPE purchase_order_item,             "Posición de la OC
    lw_detail     TYPE mepoitem.                      "Posición de la OC (Valores)

  IF sy-tcode 'ME23N'.

*** Modificar cabecera Orden de compra.
    lw_mepoheader im_header->get_data).
    lc_po_header ?= im_header.
    lc_po_header->my_ibs_firewall_on 'X'.                    " Variable para que permita modificar

    lw_mepoheader-ekgrp '201'.             " Nuevo valor a mostrar a nivel Cab. 
    CALL METHOD im_header->set_dataim_data lw_mepoheader ).

*** Obtener y modificar posición.
    lt_items im_header->get_items).

    LOOP AT lt_items INTO lw_item.
      lw_detail lw_item-item->get_data).
      lw_detail-idnlf 'AA'.                  " Nuevo valor a mostrar a nivel Pos.
      lw_item-item->set_dataim_data lw_detail ).
    ENDLOOP.
  ENDIF.
*********************************************************************
ENDMETHOD.





martes, 6 de marzo de 2018

5. Fecha liberación Orden de compra (SAP) (Pedido de compra)

Muchas veces se requiere obtener la fecha de liberación de una Orden de compra (pedido de compra),
ME21N, funciona para bienes y servicios.

En caso se haya modificado más de 1 vez la liberación final también funciona.

Para ello NO se tiene un campo especifico, de forma estándar. así que para obtener la fecha de la liberación final se obtendrá del Log de modificación de la Orden de compra.

Tablas a utilizar.
EKKO    = Cabecera del documento de compras
CDHDR = Cabecera del documento de modificación
CDPOS  = Posiciones en el documento de modificación

Este código Abap esta con HANA, pero fácilmente puede ser cambiado a forma ABAP sin Hana.

1. Para este caso tenemos una orden de compra que requiere 3 aprobaciones. 
el campo "Ind.liberación" será de gran importancia.


2. Visualizar Log de modificación de cabecera.


El valor a obtener es el marcado.



3. Código ABAP

REPORT ycrprueba2.

"Camp de la tabla EKKO
"FRGKE SI esta vacío  "No tiene estrategia de liberación"
"FRGKE Si igual a 'X' "No esta liberado".
"FRGKE si igual a '1' "Liberado completamente".

"Revisamos si esta liberado, para luego buscar su fecha de liberación final.
SELECT SINGLE ebelnfrgke
  INTO @DATA(lw_ekko)
  FROM ekko
 WHERE ebeln '4500308595'  "Ingresar su Orden de compra
   AND frgke '1'.           "Valor que vemos en Orden compra "Ind.liberación"

IF sy-subrc 0.      "Pedido esta liberado

"Obtener detalle de los cambios para el campo de liberación
  SELECT *
    INTO TABLE @DATA(lt_cdpos)
    FROM cdpos
   WHERE objectclas 'EINKBELEG'
     AND tabname    'EKKO'
     AND fname      'FRGKE'
     AND objectid   @lw_ekko-ebeln.

  IF lt_cdpos[] IS NOT INITIAL.
    SORT lt_cdpos[] BY changenr DESCENDING.

" Nos quedamos con la actualización final.
    DELETE ADJACENT DUPLICATES FROM lt_cdpos COMPARING objectid.
    READ TABLE lt_cdpos INDEX INTO DATA(lw_cdpos).

" Obtener el cambio a nivel de cabecera para obtener fecha requerida.
    SELECT SINGLE *
      INTO @DATA(lw_cdhdr)
      FROM cdhdr
     WHERE objectclas 'EINKBELEG'
       AND change_ind 'U'
       AND objectid @lw_cdpos-objectid
       AND changenr @lw_cdpos-changenr.

    WRITE'Usuario de liberación:'.
    WRITE/ lw_cdhdr-username.
    WRITE'Fecha de liberación:'.
    WRITE/ lw_cdhdr-udate.
    WRITE'Hora de liberación:'.
    WRITE/ lw_cdhdr-utime.

  ENDIF.

ENDIF.


Fotos de las tablas

Si les fue útil, comentan.


jueves, 10 de septiembre de 2015

4. Exit Screen Ampliación CO01 /CO02 / CO03 Orden de Fabricación, u Orden de Producción

 Ejemplo Completo para agregar nuevo TAB Orden de fabricación CO01/CO02/CO03

Ampliación
Exit Screen.

Nuevo TAB = Nro Dispensación.

 Nuevo Campo
Para comenzar debemos crear un nuevo proyecto y buscar la ampliación estándar que necesitemos.
Ir Transacción CMOD y crear proyecto ZCO01
 Completamos descripción

INGRESAMOS A asignación de ampliación
Buscamos el exit a implementar.

 Ahora nos vamos  a Componentes.
Aquí es importante saber identificar las acciones a realizar.
 Exit de Pantalla. Se creará en pantalla los nuevos campos a mostrar.
Para ello se debe realizar lo siguiente:
-   Crear un includ TOP y colocar los nuevos campos. (el nombre del includ ya se sugiere si no existe crearlo) “ZXCO1TOP”

Para el diseño jalamos con el icono rojo las variables del programa. Es decir nuestra variable creada en el TOP


En el PBO crear nuevo Includ para controlar es estado de edición o visualización del sistema.
                             



-   Para que se guarde en la tabla se debe ingresar nuevos campos en una estructura append CI_AUFK de la tabla AUFK (Datos maestros de ordenes)

 Se observa el nuevo campo agregado a la estructura append
Con ello ya tenemos el lugar donde se guardará en la base de datos. Tabla AUFK
 Exit de menú: Se coloca el nombre del tab a mostrar,


 Exit funcionesAquí se controla la asignación de los nuevos valores ingresados en el campo. Es decir se pasará el valor ingresado la pantalla a la estructura para que sea guardado en la tabla y para el caso de visualizar se pasa de la estructura a l nuevo campo.
EXIT_SAPLCOKO1_001 ( se Ejecuta en el PBO)
Crear el includ Z con el nombre predefinido.
 Si es para editar o visualizar (CO02/CO03) se pasa el valor que está guardado en estructura al campo de la dynpro para mostrarlo.
 EXIT_SAPLCOKO1_002 (Se Ejecutra en el PAI
Se crea en includ Predefinido.

 Al crear o editar. Pasar el valor de la dynpro a la estructura para guardarlo.
 Luego solo queda activar y listo.



Si les fue útil dejar comentario. Gracias.




martes, 18 de marzo de 2014

3. Enumeracion de Smartforms

Cuando no aparece el número de pagina o la cantidad de pagina en un smartforms utilizar el sgte codigo.
y funcionará...
Página &SFSY-PAGE& de &SFSY-FORMPAGES&
por:
Página &SFSY-PAGE(4Z)& de &SFSY-FORMPAGES(4Z)&

martes, 11 de marzo de 2014

2. Transacciones


  • SE11 Mantenimiento de diccionario de datos
  • SE12 Visualización de diccionario de datos
  • SE13 Opciones técnicas
  • SE16 Contenido de tablas
  • SE18 BADIS : Ampliaciones
  • SE38 Editor ABAP
  • SE91 Clases de mensajes
  • SE93 Mantenimiento de transacciones

1. Colita de chancho

La virgulilla es un signo ortográfico en forma de coma, rasguillo o trazo. La virgulilla generalmente es identificada como la tilde de la eñe o virgulilla de la eñe1 (~), aunque laReal Academia Española acepta también como ejemplos de virgulilla el apóstrofo (’), la cedilla (Ç) y el acento agudo (´). Las palabras «tilde» y «virgulilla» se pueden referir a cualquier trazo, sin embargo, el contexto puede indicar que se habla específicamente del signo ~.

Alt + 126 = ~