MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 20/02/14, 06:20:32
sponsor sponsor is offline
Senior Member
 
Fecha de Ingreso: may 2010
Mensajes: 108
Adjuntar anexo en factura

Buenas, tengo el siguiente método para adjuntar un anexo en un documento (es una ZZ).

METHOD adjuntar_annexos_gefact.
DATA: l_subrc TYPE sysubrc,

l_objkey TYPE swo_typeid,
l_id_extern TYPE zgf_gefact_id,

lcl_efactura TYPE REF TO zgf_cl_ws_efactura,

lr_message TYPE bapireturn1,
lr_posicion TYPE zfit_058,

lr_id_annex TYPE zgf_r_annex_ws,
li_id_annex TYPE zgf_t_annex_ws,
lr_folder_id TYPE sofdk,
l_obj_data TYPE sood1,
l_obj_id TYPE soodk,
lr_document_id TYPE sofmk,
li_objcont TYPE STANDARD TABLE OF soli,
li_objhead TYPE STANDARD TABLE OF soli,

lr_boridcomment TYPE borident,
lr_boridproject TYPE borident,

lo_obj_sofm_key TYPE sofmk,
* lo_obj_sofm TYPE swc0_object,
lo_obj_sofm TYPE swc_object,
l_index TYPE n,
l_id_annex_est TYPE zgf_gefact_id.

* Creem l'objecte per la clase de missatges
IF ps_mensajes IS NOT BOUND.
CREATE OBJECT ps_mensajes.
ENDIF.

CALL METHOD me->get_id_gefact
IMPORTING
ps_id_gefact_extern = l_id_extern.

LOOP AT me->posicions INTO lr_posicion
WHERE estat_reg = zfi_cl_preregistre_fac=>estat_pos_conformada.
CONCATENATE lr_posicion-bukrs_zz
lr_posicion-belnr_zz
lr_posicion-gjahr_zz
INTO l_objkey.

CREATE OBJECT lcl_efactura.

CALL METHOD lcl_efactura->ws_obtenir_annex_pendents
EXPORTING
* pe_centre_receptor =
pe_id_gefact = l_id_extern
IMPORTING
ps_msg = lr_message
ts_annexos = li_id_annex[].

IF lr_message IS INITIAL.

swc_container container.
* swc0_create_container container.

CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
region = 'B'
IMPORTING
folder_id = lr_folder_id
EXCEPTIONS
OTHERS = 1.

LOOP AT li_id_annex INTO lr_id_annex.
CLEAR l_obj_data.
l_index = sy-index.

CALL FUNCTION 'ZGF_F_WF_GENERAR_ANNEX'
EXPORTING
pe_id_annex = lr_id_annex-id_annex
TABLES
ts_soli = li_objcont.

IF sy-subrc = 0.
CONCATENATE 'annex'
l_index
l_objkey
INTO l_obj_data-objdes SEPARATED BY '_'.

l_obj_data-file_ext = lr_id_annex-extensio.
l_obj_data-objnam = 'SOFM'.
l_obj_data-objla = sy-langu.
l_obj_data-objlen = LINES( li_objcont ) * 255.

CALL FUNCTION 'SO_OBJECT_INSERT'
EXPORTING
folder_id = lr_folder_id
object_type = 'EXT'
object_hd_change = l_obj_data
IMPORTING
object_id = l_obj_id
TABLES
objhead = li_objhead
objcont = li_objcont
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
dl_name_exist = 4
folder_not_exist = 5
folder_no_authorization = 6
object_type_not_exist = 7
operation_no_authorization = 8
owner_not_exist = 9
parameter_error = 10
substitute_not_active = 11
substitute_not_defined = 12
system_failure = 13
x_error = 14
OTHERS = 15.

IF sy-subrc = 0.
COMMIT WORK AND WAIT.

IF sy-subrc = 0.
lr_document_id-foltp = lr_folder_id-foltp.
lr_document_id-folyr = lr_folder_id-folyr.
lr_document_id-folno = lr_folder_id-folno.
lr_document_id-doctp = l_obj_id-objtp.
lr_document_id-docyr = l_obj_id-objyr.
lr_document_id-docno = l_obj_id-objno.
ENDIF.

* swc0_create_object lo_obj_sofm 'SOFM' lr_document_id.
swc_create_object lo_obj_sofm 'SOFM' lr_document_id.

IF sy-subrc = 0.
* swc0_get_object_key lo_obj_sofm lo_obj_sofm_key.
swc_get_object_key lo_obj_sofm lo_obj_sofm_key.

lr_boridcomment-objkey = lo_obj_sofm_key.
lr_boridcomment-objtype = 'MESSAGE'.

MOVE zfi_cl_preregistre_fac=>gefact_adjunt_objtyp TO lr_boridproject.

lr_boridproject-objtype = zfi_cl_preregistre_fac=>gefact_adjunt_objtyp.

CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'
EXPORTING
obj_rolea = lr_boridproject
obj_roleb = lr_boridcomment
relationtype = 'ATTA'
EXCEPTIONS
no_model = 1
internal_error = 2
unknown = 3
OTHERS = 4.

IF sy-subrc = 0.

COMMIT WORK AND WAIT.

ELSE.
* No s'han pogut annexar els fitxers.
ENDIF.
ELSE.
* No s'han pogut annexar els fitxers.
ENDIF.
ELSE.
* No s'han pogut annexar els fitxers.
ENDIF.
ELSE.
ps_subrc = 1.

CALL METHOD ps_mensajes->insertar_mensaje
EXPORTING
pe_tipo_msg = zfg_cl_mensajes=>tipo_mensaje_sap
pe_type = lr_message-type
pe_id = lr_message-id
pe_number = lr_message-number
pe_message_v1 = lr_message-message_v1
pe_message_v2 = lr_message-message_v2
pe_message_v3 = lr_message-message_v3
pe_message_v4 = lr_message-message_v4.
ENDIF.

ENDLOOP.
ELSE.
ps_subrc = 1.

CALL METHOD ps_mensajes->insertar_mensaje
EXPORTING
pe_tipo_msg = zfg_cl_mensajes=>tipo_mensaje_sap
pe_type = lr_message-type
pe_id = lr_message-id
pe_number = lr_message-number
pe_message_v1 = lr_message-message_v1
pe_message_v2 = lr_message-message_v2
pe_message_v3 = lr_message-message_v3
pe_message_v4 = lr_message-message_v4.
ENDIF.
ENDLOOP.
ENDMETHOD.

Este código funciona perfectamente en una función, pero necesitábamos pasarlo a un método.

La única diferencia respecto a la funcion es el siguiente include:
INCLUDE <cntn01>. Este include no esta permitido en un método y en internet encontré estos dos para suplirlo, <CNTN02> and <CNTN03>.

Aun así no me funciona, me recupera el anexo y parece que lo inserta pero luego no hace nada.

Alguna sugerencia?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 08:57:15.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web