buenas tardes estimados consultores en SAP BO, en esta oportunidad escribo para solicitar ayuda o alguna pista acerca de campos de usuario tipo fecha:
he creado un campo de usuario tipo fecha como título en documentos de marketing para configurar en el formulario de ORDEN DE VENTA para ingresar fecha de orden de compra del cliente, y que debe ser obligatorio, luego de grabar el documento este campo debe quedar en modo lectura que no permita editar al usuario, mejor digo que se convierta como desactivado en color gris. comparto la imagen.
Hola @sfreddy, como estas ? como tal no puedes realizar esta operación de utilizar un campo y que luego se quede Inactivo, lo que se me ocurre es que puedes controlar este Campo a través de una Validación de TN que controle que el Campo sea cargado y otra validación para que solamente un usuario especifico pueda actualizar esta Información.
Para lo primero tienes dos caminos, en la parte de Configuración del Campo de Usuario al momento de crear asignarle el Check de Verificación de Campo Obligatorio.
O crear la TN de que el campo cuando se cree o actualice no esté vacío paso un ejemplo que lo puedes Adaptar:
—TN-123— ORDEN DE VENTAS - VALIDA QUE SE CARGUE IMPUESTOS - LINEAS DETALLES
cont := 0;
if :object_type=‘17’ and (:transaction_type=‘A’ or :transaction_type=‘U’) then
SELECT COUNT(*) INTO cont FROM ORDR T0 INNER JOIN RDR1 T1 ON T0.“DocEntry” = T1.“DocEntry”
WHERE IFNULL(T1.“TaxCode”,‘’) = ‘’
AND T0.“DocEntry” = :list_of_cols_val_tab_del
;
if :cont>0 then
error := 123;
error_message := ‘TN: DETALLES - NO SE PUEDE CREAR ORDEN DE VENTA SIN IMPUESTOS’;
end if;
END if;
Para la segunda consigna, en la que necesitas que solo un usuario especifico pueda aplicar una actualización sobre un campo. Envio un Ej: que puedes Adaptarlo a tu requerimiento, recuerda utilizar los codigos del USERID y designar el Campo a ser controlado en este caso tu campo de usuario de Fecha creado.
—TN-140— ORDEN DE VENTA - VALIDA CAMPOS DE ID DE LICITACIONES PARA CLIENTES PUBLICOS (Act: 23/07/2025)
cont := 0;
if :object_type=‘17’ and (:transaction_type=‘A’ or :transaction_type=‘U’) then
SELECT COUNT(*) INTO cont FROM ORDR T0
INNER JOIN OUSR T1 ON T0.“UserSign” = T1.“USERID”
INNER JOIN RDR1 T2 ON T0.“DocEntry” = T2.“DocEntry”
INNER JOIN OCRD T3 ON T0.“CardCode” = T3.“CardCode”
WHERE T3.“GroupCode” = ‘102’
AND T0.“DocEntry” = :list_of_cols_val_tab_del
and IFNULL(T0.“U_IDLicitacion”,‘’) = ‘’
AND T1.“USERID” in (‘67’, ‘1’)
–and T1.“USERID” = 45 and T1.“USERID” = 16 --26 or T1.“USERID” <> 50 or T1.“USERID” <> 9 or T1.“USERID” <> 52 – 26 mirna 50 alejandra 9 laura 52 silvina
;
if :cont>0 then
error := 140;
error_message := ‘TN: FALTA CARGAR ID DE LICITACIONES EN CAMPO DE USUARIO’;
end if;
END if;
Espero que te sirva.
Saludos
Atte.,
estimado Francisco, agradecido por su apoyo, saludos
