ABAP - Ejemplo de Field-Exit campo Numero de PO

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder