Ver Mensaje Individual
  #1  
Viejo 31/03/08, 22:53:14
camaron camaron is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 14
Bapi_0050_create

Hola muchachos:
Aca les dejo un reporte para la ceacion de documentos de presupuestacion transaccion FMBB utilizando la BAPI_0050_CREATE, por si a alguien le interesa
REPORT zfm_in_modif_presupuestaria.
INCLUDE zfm_in_modif_presup_top.
INCLUDE zfm_in_modif_presup_rut.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dir.
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dir.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Modificacion Presupuestaria'
CHANGING
file_table = it_filetable
rc = l_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE it_filetable INDEX 1 INTO l_filename.
pa_dir = l_filename.
*----------------------------------------------------------------------*
* INICIO
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data.
IF l_popup_value EQ 1.
PERFORM input_data.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
* TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF e_data, "Estructura de la Plantilla
movimiento(10) TYPE c,
process_ui TYPE buku_process_ui, "Proceso
budcat TYPE buku_budcat, "Cat. Presupuesto
doctype TYPE bued_doctype, "Clase de Documento
version TYPE buku_version, "Version
docdate(10) TYPE c, "Fecha del Documento
* docdate TYPE bp_bldat, "Fecha del Documento
sfiscyear TYPE gjahr, "Ejercicio
sbudtype TYPE buku_budtype, "Clase de Presupuesto
rperiod TYPE buku_period, "Periodo Destinatario
speriod TYPE buku_period, "Periodo
item_text TYPE sgtxt, "Textoç
fund TYPE bp_geber, "Fondos
funcarea TYPE fm_farea, "Area Funcional
fundsctr TYPE fistl, "Centro Gestor
cmmtitem TYPE fm_fipex, "Posicion Presupuestaria
docstate TYPE bued_docstate, "Signo XXXXXXX
amount TYPE bapicurr_d, "Importe
END OF e_data.
TYPES: BEGIN OF i_data,
fm_area TYPE fikrs,
version TYPE buku_version,
docdate(10) TYPE c,
pstng_date TYPE budat,
doctype TYPE bued_doctype,
docstate TYPE bued_docstate,
process TYPE buku_process_ui,
external_number TYPE bued_ext_docnr,
END OF i_data.
DATA: it_datatable TYPE STANDARD TABLE OF e_data,
wa_data TYPE e_data,
* wa_header_data TYPE bapi_0050_header,
i_data type STANDARD TABLE OF bapi_0050_header,
wa_header_data TYPE BAPI_0050_HEADER, "i_data,
wa_header_data_add TYPE bapi_0050_header_add,
l_total_records TYPE string,
it_return2 TYPE bapiret2,
wa_return TYPE bapiret2,
it_return TYPE STANDARD TABLE OF bapiret2,
ti_return TYPE STANDARD TABLE OF bapiret2,
it_period_data TYPE STANDARD TABLE OF bapi_0050_period,
wa_period_data TYPE bapi_0050_period,
it_sender_item_data TYPE STANDARD TABLE OF bapi_0050_item,
wa_sender_item_data TYPE bapi_0050_item,
it_sender_period_data TYPE STANDARD TABLE OF bapi_0050_period,
wa_sender_period_data TYPE bapi_0050_period,
it_item_data TYPE STANDARD TABLE OF bapi_0050_item,
wa_item_data TYPE bapi_0050_item,
ti_long TYPE STANDARD TABLE OF bapi_0050_longtext,
wa_long TYPE bapi_0050_longtext,
ti_ext TYPE STANDARD TABLE OF bapiparex,
wa_ext TYPE bapiparex,
l_current_record TYPE i,
l_text_popup TYPE string,
l_popup_value TYPE c,
it_filetable TYPE filetable,
l_rc TYPE i,
l_current_record_s TYPE string,
l_filename TYPE string.
* Tabla de resultados
DATA: it_messages TYPE STANDARD TABLE OF bdcmsgcoll,
wa_messages TYPE bdcmsgcoll,
it_mjes_aux TYPE STANDARD TABLE OF bdcmsgcoll.

DATA: contador1 TYPE i.
DATA: v_new TYPE c,
v_end TYPE c.
************************************************************************
* CONSTANTS *
************************************************************************
CONSTANTS: t_code TYPE sy-tcode VALUE 'FMBB'. "Codigo de Transaccion
*----------------------------------------------------------------------*
* SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: pa_dir(1024) TYPE c OBLIGATORY,
p_test AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM get_data .
IF l_filename IS INITIAL AND pa_dir IS NOT INITIAL.
l_filename = pa_dir.
ENDIF.
* Cargar Archivo Plano a la Tabla Interna
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'ASC'
has_field_separator = 'X'
read_by_line = 'X'
CHANGING
data_tab = it_datatable
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Obtener el No. de rergistros a cargar
DESCRIBE TABLE it_datatable LINES l_total_records.
CONCATENATE 'Se cargarán'
l_total_records
'registros en el mandante'
sy-mandt
'.'
'Desea Continuar?'
INTO l_text_popup SEPARATED BY space.
*Mostrar Dialogo de Confirmacion
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Confirmación'
text_question = l_text_popup
IMPORTING
answer = l_popup_value
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*
*& Form INPUT_DATA
*&---------------------------------------------------------------------*
FORM input_data .
DATA: v_item(6) TYPE n.
* break hbravo.
LOOP AT it_datatable INTO wa_data.
AT NEW doctype.
CLEAR: v_item.
CLEAR: wa_header_data.
CLEAR: it_item_data, it_item_data.
REFRESH: it_item_data, it_sender_item_data.
v_new = 'X'.
ENDAT.
IF v_new EQ 'X'.
wa_header_data-fm_area = ' '.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_data-version
IMPORTING
output = wa_header_data-version.
CONCATENATE wa_data-docdate+6(4)
wa_data-docdate+3(2)
wa_data-docdate(2) into
wa_header_data-docdate. "Fecha de documento
wa_header_data-doctype = wa_data-doctype. "Clase documento de entrada presup.
wa_header_data-docstate = '1'.
wa_header_data-process = wa_data-process_ui. "Proceso presupuestación
ENDIF.
CLEAR: v_new.
AT END OF doctype.
v_end = 'X'.
ENDAT.
CLEAR: ti_return. REFRESH: ti_return.
ADD 1 TO v_item.
IF wa_data-docstate EQ '-'.
CLEAR: wa_item_data.
wa_item_data-item_num = v_item. "Línea documento en documento entrada presupuesto
wa_item_data-fisc_year = wa_data-sfiscyear. "Ejercicio
wa_item_data-budcat = wa_data-budcat. "Categoría de presupuesto
wa_item_data-budtype = wa_data-sbudtype. "Clase de presupuesto
wa_item_data-fund = wa_data-fund. "Fondo
wa_item_data-funds_ctr = wa_data-fundsctr. "Centro gestor
wa_item_data-cmmt_item = wa_data-cmmtitem. "Posición presupuestaria
wa_item_data-func_area = wa_data-funcarea. "Área funcional
wa_item_data-trans_curr = 'USD'.
wa_item_data-total_amount = wa_data-amount. "Importe
wa_item_data-item_text = wa_data-item_text.
wa_item_data-valtype = 'B1'.
wa_item_data-distkey = '0'.
APPEND wa_item_data TO it_item_data.
ELSE.
CLEAR: wa_sender_item_data.
wa_sender_item_data-item_num = v_item. "Línea documento en documento entrada presupuesto
wa_sender_item_data-fisc_year = wa_data-sfiscyear. "Ejercicio
wa_sender_item_data-budcat = wa_data-budcat. "Categoría de presupuesto
wa_sender_item_data-budtype = wa_data-sbudtype. "Clase de presupuesto
wa_sender_item_data-fund = wa_data-fund. "Fondo
wa_sender_item_data-funds_ctr = wa_data-fundsctr. "Centro gestor
wa_sender_item_data-cmmt_item = wa_data-cmmtitem. "Posición presupuestaria
wa_sender_item_data-func_area = wa_data-funcarea. "Área funcional
wa_sender_item_data-trans_curr = 'USD'.
wa_sender_item_data-total_amount = wa_data-amount. "Importe
wa_sender_item_data-item_text = wa_data-item_text.
wa_sender_item_data-valtype = 'B1'.
wa_sender_item_data-distkey = '0'.
APPEND wa_sender_item_data TO it_sender_item_data.
ENDIF.
IF v_end EQ 'X'.
CLEAR: ti_return. REFRESH: ti_return.

CALL FUNCTION 'BAPI_0050_CREATE'
EXPORTING
language = sy-langu
header_data = wa_header_data
header_data_add = wa_header_data_add
testrun = p_test
TABLES
item_data = it_item_data
sender_item_data = it_sender_item_data
period_data = it_period_data
sender_period_data = it_sender_period_data
long_text = ti_long
extension_in = ti_ext
return = ti_return.
LOOP AT ti_return INTO wa_return.
wa_messages-msgtyp = wa_return-type.
wa_messages-msgspra = sy-langu.
wa_messages-msgid = wa_return-id.
wa_messages-msgnr = wa_return-number.
wa_messages-msgv1 = wa_return-message_v1.
wa_messages-msgv2 = wa_return-message_v2.
wa_messages-msgv3 = wa_return-message_v3.
wa_messages-msgv4 = wa_return-message_v4.
APPEND wa_messages TO it_messages.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = it_return2.
ENDIF.
CLEAR: v_end.
ENDLOOP.
* MOSTRAR RESULTADOS
CALL FUNCTION 'ZDEFU_BDC_SHOW_RESULTS_ALV'
EXPORTING
progn = sy-repid
tcode = sy-tcode
filep = l_filename
regsp = l_current_record_s
TABLES
it_messages = it_messages.
ENDFORM. " INPUT_DATA


Saludo2
Responder Con Cita