Showing posts with label Function. Show all posts
Showing posts with label Function. Show all posts

MD_STOCK_REQUIREMENTS_LIST_API - MD04 - listado de doc. por Material/Centro

Esta función nos permite ver la información de la tx MD04.

 

Mi req. era realizar un reporte con las cantidades disponibles en Ordenes de compra, Ordenes previsionales, Ordenes de producción y Solped. Pero la función trae muchos más doc. se pueden ver todos en el dominio DELKZ.

 

A la función ingresamos con Material y centro y en la tabla MDEZX estará la información necesaria.

Separar un texto largo cada X cantidad de char o por un símbolo de retorno de carro a una tabla

Esta función RKD_WORD_WRAP , nos permitirá partir un texto largo en X cantidad de caracteres y además podremos tener otro corte de control por un CHAR que le pasemos.

 

Ejemplo:

image

El resultado de esta corrida será una tabla de 7 registros, notese que si no existe el char de retorno de carro nos separará cada 5 chars, si encuentra el simbolo cortará en ese simbolo y comenzará otro renglón.

image

Pasar el signo negativo de la derecha a la izq

Esto puede resultar tonto, pero hay veces en que los clientes quieren que los números negativos tengan el signo a la izquierda y no a la der. Si bien esto podemos hacerlo trabajando con la cadena de caracteres hay una función que nos simplifica la vida.

CLOI_PUT_SIGN_IN_FRONT

Ejemplo:

image

Saltear falta de autorización para una transacción

Existe una función llamada: RS_HDSYS_CALL_TC_VARIANT

Ir a la SE37, ejecutar la función, en el parámetro TCODE ponemos la transacción deseada y le sacamos la X al parámetro AUTHORITY-CHECK.

 

NOTA: No es infalible, puede ser que igualmente no podamos usarlo y ojo porque queda en log el acceso.

FIMA_DAYS_AND_MONTHS_AND_YEARS

Esta función nos devuelve la diferencia en dias, meses y años entre dos fechas.

    CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'       
      EXPORTING                                          
        i_date_from          = s_badat2-low               
        i_date_to            = s_badat2-high              
     IMPORTING                                           
        e_days               = gv_dias2                 
*       E_MONTHS             =                          
*       E_YEARS              =                          

MD_PEGGING_NODIALOG - Ordenes que posee una Solped

Devuelve las ordenes que están asociadas a una solped.

 

Ej:Bloque en el cual por cada solped encontrada para determinado Material-Centro busco las ordenes que están asociadas a esa solped.

DATA: lt_mdpsx TYPE STANDARD TABLE OF mdps,
      ls_mdpsx TYPE mdps,
      LT_MDRQX TYPE STANDARD TABLE OF mdrq,
      ls_mdrqx TYPE mdrq,
      l_fixkz TYPE EBAN-fixkz,
      l_msg(100),
      l_solped TYPE MDPS-DEL12,
      l_aufnr TYPE AUFK-AUFNR.

*    *** Veo todas las solicitudes de pedidos en las que se encuentra el componente
CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'
EXPORTING
        matnr                          = ls_resbd-MATNR
        werks                          = ls_resbd-WERKS
TABLES
        MDPSX                          = lt_MDPSX[]
EXCEPTIONS
        MATERIAL_PLANT_NOT_FOUND       = 1
        PLANT_NOT_FOUND                = 2
OTHERS                         = 3.
IF sy-subrc = 0.
*    *** Veo todas las ordenes asociadas con las solpeds.
LOOP AT lt_MDPSX INTO ls_mdpsx WHERE DELKZ = 'BA' AND FIX01 = 'X'.
CLEAR l_solped.
      l_solped = ls_mdpsx-DELNR.
CALL FUNCTION 'MD_PEGGING_NODIALOG'
EXPORTING
          edelkz                      = 'BA'
          edelnr                      = l_solped "lt_MDPSX-DELNR
          EDELPS                      = ls_mdpsx-DELPS
          ematnr                      = ls_resbd-MATNR
          ewerks                      = ls_resbd-WERKS
tables
          imdrqx                      = LT_MDRQX[]
EXCEPTIONS
         ERROR                       = 1
         NO_REQUIREMENTS_FOUND       = 2
         ORDER_NOT_FOUND             = 3
OTHERS                      = 4.

MD_STOCK_REQUIREMENTS_LIST_API - Lista de Solped por Componente

Le pasamos Material y Centro y nos devuelve todas las Solped en las que ese componente se encuentra.

 

DATA: lt_mdpsx TYPE STANDARD TABLE OF mdps,
      ls_mdpsx TYPE mdps.

* *** Veo todas las solicitudes de pedidos en las que se encuentra el componente
CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'
EXPORTING
        matnr                          = ls_resbd-MATNR
        werks                          = ls_resbd-WERKS
TABLES
        MDPSX                          = lt_MDPSX[]
EXCEPTIONS
        MATERIAL_PLANT_NOT_FOUND       = 1
        PLANT_NOT_FOUND                = 2
OTHERS                         = 3.

FIMA_DAYS_AND_MONTHS_AND_YEARS

Esta función nos devuelve la diferencia en dias, meses y años entre dos fechas.




    CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'       
      EXPORTING                                          
        i_date_from          = s_badat2-low               
        i_date_to            = s_badat2-high              
     IMPORTING                                           
        e_days               = gv_dias2                 
*       E_MONTHS             =                          
*       E_YEARS              =                          


BAPI_COMPANYCODE_GET_PERIOD

Esta función nos sirve para obtener el ejercicio desde una fecha dada, ya que algunas empresas no usan el año fiscal similar al calendario solar.

Parámetros:

  1. Sociedad
  2. Fecha

Tomar valores de un Pop Up

A veces en la impresión de algun documento u alguna otra cosa, necesitamos un corte de control para ingresar un valor y usarlo para algo.

En este ejemplo se muestra como haces para realizar esto:

report zjacprueba.
data: V_NUMERO like sval OCCURS 0 WITH HEADER LINE..

V_NUMERO-TABNAME = 'MARA'. "Tabla de donde queremos coger el campo
V_NUMERO-fieldname = 'MATNR'. "Campo que queremos pedir por pantalla
APPEND V_NUMERO.
V_NUMERO-TABNAME = 'MARA'.
V_NUMERO-FIELDNAME = 'MTART'.
APPEND V_NUMERO.

CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
* NO_VALUE_CHECK = ' '
POPUP_TITLE = 'Complete los campos'
START_COLUMN = '5'
START_ROW = '5'
* IMPORTING
* RETURNCODE =
TABLES
FIELDS = V_NUMERO.
* EXCEPTIONS
* ERROR_IN_FIELDS = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

LOOP AT V_NUMERO.
WRITE :/ V_NUMERO-VALUE. "Valor dado por pantalla.
ENDLOOP.

SPELL_AMOUNT - Texto de importes

CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = L_ENTRADA "Indicar importe
CURRENCY = 'EUR' "Indicar moneda
LANGUAGE = SY-LANGU "Indicar idioma texto
IMPORTING
IN_WORDS = L_RESULTADO
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
OTHERS = 3

L_entrada es el importe que quieras traducir a letras. El resultado lo tendras en L_RESULTADO. Más detallado:
L_RESULTADO-WORD = parte entera
L_RESULTADO-IN_WORDS = parte decimal.

Llamar aplicación externa de SAP

WS_EXECUTE permite ejecutar el programa externo de SAP, permite pasar parámetros.

CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
COMMANDLINE = ' -min -a c:destino.zip c:1.txt c:2.txt'
* INFORM = ' '
PROGRAM = 'winzip32.exe'
* STAT = ' '
* WINID = ' '
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
* IMPORTING
* RBUFF =
* EXCEPTIONS
* FRONTEND_ERROR = 1
* NO_BATCH = 2
* PROG_NOT_FOUND = 3
* ILLEGAL_OPTION = 4
* GUI_REFUSE_EXECUTE = 5
* OTHERS = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

PopUp de texto a Usuario

CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = SY-MANDT
USER = USR_TABL-BNAME
MESSAGE = MESSAGE
EXCEPTIONS
USER_NOT_FOUND = 1.

Función GET_DYNP_VALUE

Esta función se suele usar en los Field Exits, o en alguna que otra exits.

Con esta función podemos obtener el valor de un campo en la pantalla que estamos parados.

Recibe 3 parametros:
1- Campo
2- Programa
3- Pantalla

y devuelve un STRING con el valor determinado.

Example

DATA: l_vkorg TYPE STRING.

CALL FUNCTION 'GET_DYNP_VALUE'
EXPORTING
I_FIELD = 'RMMG1-VKORG'
I_REPID = 'SAPLMGD1'
I_DYNNR = '1004'
CHANGING
O_VALUE = l_vkorg.