FTR CUSTOMER EXTENT
Ir a la navegación
Ir a la búsqueda
Añadir pestañas adicionales con campos Z en transacciones de contratos/lineas de credito/facilities Transacciones FTR_EDIT, TM_61, TM_62, TM_63...
Los campos añadidos en esta extension han de ser pasados en las BAPIs de FTR_* a traves del parametro EXTENSIONIN
Ejemplo para rellenar EXTENSIONIN
FUNCTION ztrm_ftr_vtbfha_to_extensionin.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(I_ZTRM_VTBFHA) TYPE ZTRM_VTBFHA
*" EXPORTING
*" REFERENCE(ET_EXTENSIONIN) TYPE BAPIPAREX_T
*" EXCEPTIONS
*" ILLEGAL_PARAMETER_TYPE
*"----------------------------------------------------------------------
DATA container TYPE string.
DATA lw_extensionin TYPE bapiparex.
DATA start TYPE sytabix VALUE 0.
DATA length TYPE sytabix VALUE 960.
DATA total_length TYPE sytabix.
DATA remain TYPE sytabix.
* Initialization
REFRESH et_extensionin.
* Copy structure to RAW field (CHAR)
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = i_ztrm_vtbfha
IMPORTING
ex_container = container
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE illegal_parameter_type.
ENDIF.
* Structure does not fit in a single EXTENSIONIN row, so we do a loop in
* container to split it in BAPIPAREX(960) pieces
start = 0.
length = 960.
total_length = strlen( container ).
remain = total_length. " Initally all strig remains to be moved to extensionin
DO.
IF start >= total_length. " Break loop
EXIT.
ENDIF.
IF length > remain.
length = remain. " Length of last chunk
ENDIF.
CLEAR lw_extensionin.
lw_extensionin-structure = 'ZTRM_VTBFHA'.
MOVE container+start(length) TO lw_extensionin+30. " move chunk to extensionin
APPEND lw_extensionin TO et_extensionin.
start = start + length. " move pointer to next chunk
remain = remain - length. " Update remaining chars in the string
ENDDO.
ENDFUNCTION.
Ejemplo para recuperar componentes de EXTENSIONIN
FUNCTION ZTRM_FTR_EXTENSIONIN_TO_VTBFHA.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(IT_EXTENSIONIN) TYPE BAPIPAREXTAB
*" EXPORTING
*" REFERENCE(E_ZTRM_VTBFHA) TYPE ZTRM_VTBFHA
*" EXCEPTIONS
*" ILLEGAL_PARAMETER_TYPE
*"----------------------------------------------------------------------
DATA container(4096) TYPE C.
DATA start TYPE sy-tabix.
FIELD-SYMBOLS <fs_extensionin> TYPE bapiparex.
CLEAR e_ztrm_vtbfha.
start = 0.
LOOP AT it_extensionin ASSIGNING <fs_extensionin>.
MOVE <fs_extensionin>+30 TO container+start.
start = start + 960.
ENDLOOP.
CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>READ_CONTAINER_C
EXPORTING
im_container = container
IMPORTING
ex_value = e_ztrm_vtbfha.
ENDFUNCTION.
Recuperar EXTENSIONIN en la BADI
METHOD if_ex_ftr_customer_extent~evt_bapi_set_custom1.
* Leemos la tabla extensionin de la bapi y pasamos los valores a la ampliacion de la vtbfha
CALL FUNCTION 'ZTRM_FTR_LEER_EXTENSIONIN_BAPI'
IMPORTING
pi_return = pe_return
TABLES
pt_extensionin = pi_extensionin.
* ENDIF.
ENDMETHOD.
FUNCTION ztrm_ftr_leer_extensionin_bapi .
*"----------------------------------------------------------------------
*"*"Interfase local
*" EXPORTING
*" REFERENCE(PI_RETURN) TYPE BAPIRET2_TAB
*" TABLES
*" PT_EXTENSIONIN TYPE BAPIPAREXTAB
*"----------------------------------------------------------------------
DATA len TYPE c LENGTH 3.
DATA ztab LIKE LINE OF g_tab_fha_appends.
DATA ls_zvtbfha TYPE ztrm_vtbfha.
DATA ls_extensionin TYPE bapiparex.
CHECK pt_extensionin[] IS NOT INITIAL.
* "getting data from append structure (user-exit tab 1)"
CALL METHOD g_proxy_cust_data->get_cust_data
IMPORTING
pe_tab_fha_appends = g_tab_fha_appends
EXCEPTIONS
OTHERS = 4.
* "Read data from EXT structures from function module BAPI_FTR_IRATE_DEALCREAT into append structure G_TAB_FHA_APPENDS"
IF sy-subrc = 0.
CLEAR ls_extensionin.
READ TABLE pt_extensionin INDEX 1 INTO ls_extensionin.
CLEAR ls_zvtbfha.
CALL FUNCTION 'ZTRM_FTR_EXTENSIONIN_TO_VTBFHA'
EXPORTING
it_extensionin = pt_extensionin[]
IMPORTING
e_ztrm_vtbfha = ls_zvtbfha
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ztab-tabname = 'ZTRM_VTBFHA'.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_zvtbfha
IMPORTING
ex_container = ztab-content
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
MODIFY g_tab_fha_appends FROM ztab INDEX 1.
ENDIF.
* "Saving data from EXT structure into transaction"
CALL METHOD g_proxy_cust_data->set_cust_data
EXPORTING
pi_tab_fha_appends = g_tab_fha_appends
EXCEPTIONS
invalid_data = 1
invalid_call = 2
OTHERS = 3.
IF sy-subrc <> 0. ENDIF.
ENDFUNCTION.