Ejemplo de Field-Exit campo Numero de PO
Publicado por Enrique Jesus (1 intervención) el 08/07/2008 20:59:51
Buenas buenas:
Para los que lo necesiten alguna vez este es un ejemplo de Field-Exit para la transacción MIGO a nivel de número de PO (elemento de datos EBELN, programa SAPLMIGO).
FUNCTION FIELD_EXIT_EBELN.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------
output = input.
DATA: it_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE.
DATA: wa_ekko LIKE ekko.
DATA: v_ebeln LIKE ekko-ebeln,
v_refdoc(3) TYPE c,
v_bwart(3) TYPE c.
DATA: v_bsart(3) TYPE c,
v_bwart2(4) TYPE c.
DATA: sy_subrc1 LIKE sy-subrc,
sy_subrc2 LIKE sy-subrc.
DATA: v_dynumb LIKE d020s-dnum.
CLEAR: v_ebeln,
v_refdoc,
v_bwart.
data: conta(1) type n.
clear conta.
DO 2 TIMES.
conta = conta + 1.
FREE it_dynpread.
CLEAR it_dynpread.
CASE conta.
WHEN '1'.
v_dynumb = '2000'.
it_dynpread-fieldname = 'GODYNPRO-PO_NUMBER'.
APPEND it_dynpread.
WHEN '2'.
v_dynumb = '0010'.
it_dynpread-fieldname = 'GODYNPRO-REFDOC'.
APPEND it_dynpread.
it_dynpread-fieldname = 'GODEFAULT_TV-BWART'.
APPEND it_dynpread.
ENDCASE.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'SAPLMIGO'
dynumb = v_dynumb
* TRANSLATE_TO_UPPER = ' '
* REQUEST = ' '
* PERFORM_CONVERSION_EXITS = ' '
* PERFORM_INPUT_CONVERSION = ' '
* DETERMINE_LOOP_INDEX = ' '
TABLES
dynpfields = it_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
CASE conta.
WHEN '1'.
READ TABLE it_dynpread WITH KEY fieldname = 'GODYNPRO-PO_NUMBER'.
v_ebeln = it_dynpread-fieldvalue.
WHEN '2'.
READ TABLE it_dynpread WITH KEY fieldname = 'GODYNPRO-REFDOC'.
v_refdoc = it_dynpread-fieldvalue.
READ TABLE it_dynpread WITH KEY fieldname = 'GODEFAULT_TV-BWART'.
v_bwart = it_dynpread-fieldvalue.
ENDCASE.
ENDDO.
IF v_refdoc EQ 'R01'.
SELECT SINGLE *
INTO wa_ekko
FROM ekko
WHERE ebeln EQ v_ebeln.
IF sy-subrc EQ 0.
SELECT SINGLE bwart
INTO v_bwart2
FROM zmmmovtype
WHERE bwart EQ v_bwart.
sy_subrc1 = sy-subrc.
SELECT SINGLE bsart
INTO v_bsart
FROM ZMMSTOTYPE
WHERE bsart EQ wa_ekko-bsart.
sy_subrc2 = sy-subrc.
IF sy_subrc1 EQ '0' AND sy_subrc2 EQ '0'.
MESSAGE e001(zpo).
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
Las tablas zmmmovtype y ZMMSTOTYPE son tablas Z creadas para almacenar los tipos de moviemtos del GR y el tipo de documento del PO.
Saludos.
Para los que lo necesiten alguna vez este es un ejemplo de Field-Exit para la transacción MIGO a nivel de número de PO (elemento de datos EBELN, programa SAPLMIGO).
FUNCTION FIELD_EXIT_EBELN.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------
output = input.
DATA: it_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE.
DATA: wa_ekko LIKE ekko.
DATA: v_ebeln LIKE ekko-ebeln,
v_refdoc(3) TYPE c,
v_bwart(3) TYPE c.
DATA: v_bsart(3) TYPE c,
v_bwart2(4) TYPE c.
DATA: sy_subrc1 LIKE sy-subrc,
sy_subrc2 LIKE sy-subrc.
DATA: v_dynumb LIKE d020s-dnum.
CLEAR: v_ebeln,
v_refdoc,
v_bwart.
data: conta(1) type n.
clear conta.
DO 2 TIMES.
conta = conta + 1.
FREE it_dynpread.
CLEAR it_dynpread.
CASE conta.
WHEN '1'.
v_dynumb = '2000'.
it_dynpread-fieldname = 'GODYNPRO-PO_NUMBER'.
APPEND it_dynpread.
WHEN '2'.
v_dynumb = '0010'.
it_dynpread-fieldname = 'GODYNPRO-REFDOC'.
APPEND it_dynpread.
it_dynpread-fieldname = 'GODEFAULT_TV-BWART'.
APPEND it_dynpread.
ENDCASE.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'SAPLMIGO'
dynumb = v_dynumb
* TRANSLATE_TO_UPPER = ' '
* REQUEST = ' '
* PERFORM_CONVERSION_EXITS = ' '
* PERFORM_INPUT_CONVERSION = ' '
* DETERMINE_LOOP_INDEX = ' '
TABLES
dynpfields = it_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
CASE conta.
WHEN '1'.
READ TABLE it_dynpread WITH KEY fieldname = 'GODYNPRO-PO_NUMBER'.
v_ebeln = it_dynpread-fieldvalue.
WHEN '2'.
READ TABLE it_dynpread WITH KEY fieldname = 'GODYNPRO-REFDOC'.
v_refdoc = it_dynpread-fieldvalue.
READ TABLE it_dynpread WITH KEY fieldname = 'GODEFAULT_TV-BWART'.
v_bwart = it_dynpread-fieldvalue.
ENDCASE.
ENDDO.
IF v_refdoc EQ 'R01'.
SELECT SINGLE *
INTO wa_ekko
FROM ekko
WHERE ebeln EQ v_ebeln.
IF sy-subrc EQ 0.
SELECT SINGLE bwart
INTO v_bwart2
FROM zmmmovtype
WHERE bwart EQ v_bwart.
sy_subrc1 = sy-subrc.
SELECT SINGLE bsart
INTO v_bsart
FROM ZMMSTOTYPE
WHERE bsart EQ wa_ekko-bsart.
sy_subrc2 = sy-subrc.
IF sy_subrc1 EQ '0' AND sy_subrc2 EQ '0'.
MESSAGE e001(zpo).
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
Las tablas zmmmovtype y ZMMSTOTYPE son tablas Z creadas para almacenar los tipos de moviemtos del GR y el tipo de documento del PO.
Saludos.
Valora esta pregunta
0