PDA

Ver la Versión Completa : alguien que sepa mucho de BAPI_ACC_DOCUMENT_POST


maeve
29/05/08, 21:09:38
Hola a todos, vuelvo con una pregunta, a ver quien me puede ayudar.

Tengo una funcion, que se las copio a continuacion, que llama a la bapi que nombré en el titulo.

FUNCTION Z_EP_CASH_MVMNT .
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(ZPEP_FI_DOC_HEADER) TYPE ZSEP_FI_DOC_HEADER
*" TABLES
*" ZPEP_GL_ITEM STRUCTURE ZSEP_GL_ITEM
*" ZPEP_MESSAGE STRUCTURE ZSEP_MESSAGE
*"----------------------------------------------------------------------

DATA: s_header TYPE bapiache09,
t_accountgl TYPE TABLE OF bapiacgl09,
s_accountgl TYPE bapiacgl09,
t_currency TYPE TABLE OF bapiaccr09,
s_currency TYPE bapiaccr09,
t_return TYPE TABLE OF bapiret2,
s_return TYPE bapiret2.

REFRESH zpep_message.

s_header-bus_act = 'RFBU'.
s_header-header_txt = zpep_fi_doc_header-text.
s_header-comp_code = zpep_fi_doc_header-comp_code.
s_header-doc_date = zpep_fi_doc_header-doc_date.
s_header-pstng_date = zpep_fi_doc_header-pos_date.
s_header-doc_type = 'SA'.
s_header-ref_doc_no = zpep_fi_doc_header-reference.
s_header-username = sy-uname.
* s_header-CURRENCY = zpep_fi_doc_header-currency.

LOOP AT zpep_gl_item.
s_accountgl-itemno_acc = sy-tabix.
s_accountgl-gl_account = zpep_gl_item-account.
s_accountgl-ITEM_TEXT = zpep_gl_item-text.
s_accountgl-ALLOC_NMBR = zpep_gl_item-alloc_nmbr.
s_accountgl-COSTCENTER = zpep_gl_item-COSTCENTER.

s_currency-itemno_acc = s_accountgl-itemno_acc.
s_currency-curr_type = '00'.
s_currency-currency = zpep_fi_doc_header-currency.
s_currency-amt_doccur = zpep_gl_item-amount.

APPEND: s_accountgl TO t_accountgl,
s_currency TO t_currency.
CLEAR: s_accountgl, s_currency.
ENDLOOP.


CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = s_header
IMPORTING
obj_type = s_header-obj_type
obj_key = s_header-obj_key
obj_sys = s_header-obj_sys
TABLES
accountgl = t_accountgl
currencyamount = t_currency
return = t_return.

IF s_header-obj_key+1 IS INITIAL.
LOOP AT t_return INTO s_return.
zpep_message-id = '66'.
zpep_message-text = s_return-message.
APPEND zpep_message.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
zpep_message-id = '00'.
MESSAGE s000(zmep001) INTO zpep_message-text.
append zpep_message.
ENDIF.


ENDFUNCTION.


Bueno, el tema es el siguiente: esta funcion la utilizo en un servidor SAP 5.0 y funciona ok.
Dentro de BAPI_ACC_DOCUMENT_POST se llama a check_and_fill_acc_document, y dentro de ella a reference_create_prelim.
Este ultimo carga en los campos obj_type, obj_key y obj_sys los valores que necesita para seguir corriendo la bapi original.

En un SAP 4.6, la bapi_acc_document_post es diferente, y no existe reference_create_prelim.
El problema es que en ese servidor no se estan cargando los 3 valores de obj_type, obj_key y obj_sys y me devuelve un error porque no los tiene.

¿alguien sabe de que forma se pueden obtener estos valores?

no quisiera llegar a "duplicar" la bapi original en una funcion z, por miedo a que varias cosas no funcionen, pero ademas por miedo a que si hay alguna mejora a esa bapi (nota, o lo que sea), tengamos que volver a duplicarla...

gracias desde ya
Maeve