agosto 08, 2003

Recuperar la descripcion larga de un material

En un formulario, habia unos casos que no recuperaba el texto largo del material.
Armaba una clave que no correspondia.
Lo que hice fue crear una rutina que la llamaba desde el formulario. Esta accedia a la tabla T165P que tiene las dif reglas para recuperar esos textos. Chequeaba con la funcion READ_TEXT que alguna regla recuperara el texto y le mandaba al sapscript la clave correcta.

Modificacion en el Sapscript.

K2 <H> Descripcion</> &AM07M-ZZSGTXT&
/* Modificacion SIDTBES - 09/08/2003
/: PERFORM BUSCO_DESC_LARGA_MATERIAL IN PROGRAM ZFNSPGLB0005
/: USING &AM07M-ZZTXNAM&
/: USING &AM07M-ZZTDOBJECT&
/: USING &AM07M-ZZTDID&
/: CHANGING &V_ID&
/: CHANGING &V_OBJECT&
/: ENDPERFORM
/* INCLUDE &AM07M-ZZTXNAM& OBJECT &AM07M-ZZTDOBJECT& ID &AM07M-ZZTDID&
/* LANGUAGE &SY-LANGU& PARAGRAPH K2
/: INCLUDE &AM07M-ZZTXNAM& OBJECT &V_OBJECT& ID &V_ID& LANGUAGE &SY-LANGU& PARAGRAPH K2
/* Fin modificacion SIDTBES - 09/08/2003

Rutina BUSCO_DESC_LARGA_MATERIAL

FORM busco_desc_larga_material TABLES ent STRUCTURE itcsy
sal STRUCTURE itcsy.

DATA: BEGIN OF i_descripcion OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF i_descripcion.

DATA: BEGIN OF i_reglas OCCURS 0.
INCLUDE STRUCTURE t165p.
DATA: END OF i_reglas.

DATA: v_material LIKE THEAD-TDNAME,
v_object like AM07M-ZZTDOBJECT,
v_id like AM07M-ZZTDID,
v_lineas type i.

READ TABLE ent INDEX 1.
MOVE ent-value TO v_material.
READ TABLE ent INDEX 2.
MOVE ent-value TO v_object.
READ TABLE ent INDEX 3.
MOVE ent-value TO v_id.


SELECT * INTO CORRESPONDING FIELDS OF TABLE i_reglas
FROM t165p
WHERE tdobject EQ 'EKPO' AND
tdid EQ 'F03'.

LOOP AT i_reglas.

CALL FUNCTION 'READ_TEXT'
EXPORTING
id = i_reglas-koid
language = sy-langu
name = v_material
object = i_reglas-koobject
TABLES
lines = i_descripcion
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

IF sy-subrc EQ 0.
READ TABLE sal INDEX 1.
MOVE i_reglas-koid TO sal-value.
MODIFY sal INDEX 1.
READ TABLE sal INDEX 2.
MOVE i_reglas-koobject TO sal-value.
MODIFY sal INDEX 2.
exit.
ENDIF.

ENDLOOP.

describe table i_descripcion lines v_lineas.

if v_lineas eq 0.
READ TABLE sal INDEX 1.
MOVE v_id TO sal-value.
MODIFY sal INDEX 1.
READ TABLE sal INDEX 2.
MOVE v_object TO sal-value.
MODIFY sal INDEX 2.
endif.

ENDFORM. "busco_desc_larga_material