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:
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.
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:
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:
- Sociedad
- 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.