Histórico da Página
...
User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+Código del producto.
Local cItem := PARAMIXB[2] // Número del Item.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
Local nRecSD2 := 0
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/
//Realizar tratamiento conforme tamaño del campo DXD2_ITEM
cItem := SubStr(cCodProd,1,2)
cCod := SubStr(cCodProd,3)
...
RestArea(cArea)
Return aDetFac
Ejemplo 4: Búsqueda en tabla SD1
#include 'protheus.ch'
User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+Código del producto.
Local cItem := PARAMIXB[2] // Número del Item.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
Local nRecSD2 := 0
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/
//Realizar tratamiento conforme tamaño del campo D1_ITEM
cItem := SubStr(cCodProd,1,4)
cCod := SubStr(cCodProd,5)
BeginSQL Alias "SD1TMP"
SELECT D1_ITEM,D1_DESCRI
FROM %Table:SD1% SD1
WHERE SD1.D1_FILIAL = %xFilial:SD1%
AND SD1.D1_SERIE = %Exp:SF1->F1_SERIE%
AND SD1.D1_DOC = %Exp:SF1->F1_DOC%
AND SD1.D1_FORNECE = %Exp:SF1->F1_FORNECE%
AND SD1.D1_LOJA = %Exp:SF1->F1_LOJA%
AND SD1.D1_TIPO = %Exp:SF1->F1_TIPO%
AND SD1.%NotDel%
EndSQL
DbSelectArea("SD1TMP")
While !SD1TMP ->(Eof())
if AllTrim(SD1TMP -> D1_ITEM) == AllTrim(cItem)
aDetFac[6] := AllTrim(SD1TMP -> D1_DESCRI)
EndIf
SD1TMP -> (dbskip())
EndDo
SD1TMP ->(dbCloseArea())
RestArea(cArea)
Return aDetFac
NOTA: Cabe mencionar que al momento de la ejecución del punto de entrada, se puede posicionar en algunas tablas como de Clientes (SA1) , Productos(SB1), Items de factura(SD2|SD1), por lo que se podrán utilizar campos que ya existen de estas tablas o campos nuevos que sean agregados y definir la regla para el armado del los atributos del nodo Conceptos.
Para la tabla de Items de factura(SD2|SD1) ,se recomienda apegarse al ejemplo descrito y usar la instrucción BeginSql para sql embebido , ya que las instrucciones como DbSetOrder y DbSeek causan conflicto por el uso de un archivo temporal.
...