El primero no me acababa de funcionar a la hora de grabar y el segundo no me acaba de gustar lo que hace para dejar modificar los campos o no. He seguio lo que decía para activar las BADIS. Aqui explico lo que he hecho para poder grabar, he usado un grupo de funciones para el control del screen como hace el segundo link.
Mi append lo he hecho para la LFB1 y le he llamado ZLFB1.
Me he creado un grupo de funciones ZBC_VENDOR con un dynpro 9000 y he puesto he cogido los campos de diccionario de LFB1.
Tiene como variables globales en LZBC_VENDORTOP
tables: zlfb1.data: gl_activity type aktyp.
La dynpro tiene process before output. module status_9000.
module status_9000 output.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
loop at screen.
*For XD01, It would be H
*For XD02, it would be V
*For XD03, it would be A.
if gl_activity = 'A'. "
Display screen-input = '0'.
endif.
modify screen.
endloop.*
endmodule.
Y tiene 2 módulos de funciones.
function z_bc_vendor_screen_get.
*"----------------------------------------------------------------------
*"*"Interfase local
*" EXPORTING
*" REFERENCE(P_ZLFB1) TYPE ZLFB1
*"----------------------------------------------------------------------
move-corresponding zlfb1 to p_zlfb1.
endfunction.
*"----------------------------------------------------------------------
*"*"Interfase local
*" EXPORTING
*" REFERENCE(P_ZLFB1) TYPE ZLFB1
*"----------------------------------------------------------------------
move-corresponding zlfb1 to p_zlfb1.
endfunction.
function z_bc_vendor_screen_set.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(P_ACTIVITY) TYPE AKTYP OPTIONAL
*" REFERENCE(P_ZLFB1) TYPE ZLFB1 OPTIONAL
*"----------------------------------------------------------------------
*
move-corresponding p_zlfb1 to zlfb1.
gl_activity = p_activity.
*
endfunction.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(P_ACTIVITY) TYPE AKTYP OPTIONAL
*" REFERENCE(P_ZLFB1) TYPE ZLFB1 OPTIONAL
*"----------------------------------------------------------------------
*
move-corresponding p_zlfb1 to zlfb1.
gl_activity = p_activity.
*
endfunction.
Y las implementos en los métodos de la BADI VENDOR_ADD_DATA_CS de la siguiente forma.
method if_ex_vendor_add_data_cs~set_data.
*
data: l_zlfb1 type zlfb1.
move-corresponding i_lfb1 to l_zlfb1.
*
call function 'Z_BC_VENDOR_SCREEN_SET'
exporting
p_activity = i_activity
p_zlfb1 = l_zlfb1.
*
endmethod.
*
data: l_zlfb1 type zlfb1.
move-corresponding i_lfb1 to l_zlfb1.
*
call function 'Z_BC_VENDOR_SCREEN_SET'
exporting
p_activity = i_activity
p_zlfb1 = l_zlfb1.
*
endmethod.
method if_ex_vendor_add_data_cs~get_data.
data: l_zlfb1 type zlfb1.
call function 'Z_BC_VENDOR_SCREEN_GET'
importing
p_zlfb1 = l_zlfb1.
*
move-corresponding l_zlfb1 to s_lfb1.
*
endmethod.
data: l_zlfb1 type zlfb1.
call function 'Z_BC_VENDOR_SCREEN_GET'
importing
p_zlfb1 = l_zlfb1.
*
move-corresponding l_zlfb1 to s_lfb1.
*
endmethod.
method if_ex_vendor_add_data_cs~get_taxi_screen.
if flt_val = 'Z1'.
case i_taxi_fcode.
when 'ZTAB1'.
e_program = 'SAPLZBC_VENDOR'. "Grupo de funciones ZBC_VENDOR
e_screen = '9000'.
e_headerscreen_layout = 'B'.
when others.
endcase.
endif.
endmethod.
Además para que si no hay datos de sociedad no salga la pestaña ZTAB1
METHOD if_ex_vendor_add_data_cs~suppress_taxi_tabstrips.
*
DATA: code TYPE not_used_taxi_fcodes_tab,
code_l LIKE LINE OF code.
*
IF i_bukrs IS INITIAL.
code_l = 'ZTAB1'.
APPEND code_l TO code.
*
e_not_used_taxi_fcodes = code.
ENDIF.
*
ENDMETHOD.
if flt_val = 'Z1'.
case i_taxi_fcode.
when 'ZTAB1'.
e_program = 'SAPLZBC_VENDOR'. "Grupo de funciones ZBC_VENDOR
e_screen = '9000'.
e_headerscreen_layout = 'B'.
when others.
endcase.
endif.
endmethod.
Además para que si no hay datos de sociedad no salga la pestaña ZTAB1
METHOD if_ex_vendor_add_data_cs~suppress_taxi_tabstrips.
*
DATA: code TYPE not_used_taxi_fcodes_tab,
code_l LIKE LINE OF code.
*
IF i_bukrs IS INITIAL.
code_l = 'ZTAB1'.
APPEND code_l TO code.
*
e_not_used_taxi_fcodes = code.
ENDIF.
*
ENDMETHOD.