- *--[
- *--[ El patrón se crea en la SE38 -> Utilidades, una vez que se le da el nombre
- *--[ Se mete directamente este código como línea única: *$&$MUSTER
- *--[
- *--[ Luego debe crearse una función con el nombre del patrón terminada en:
- *--[ _EDITOR_EXIT
- *--[
- *--[ La función a crear debe ser de este TIPO
- FUNCTION [NOMBRE_PATRON]_EDITOR_EXIT.
- *"----------------------------------------------------------------------
- *"*"Interfase local
- *" TABLES
- *" BUFFER TYPE RSWSOURCET
- *" EXCEPTIONS
- *" CANCELLED
- *"----------------------------------------------------------------------
- CONSTANTS: c_importing TYPE i VALUE 1,
- c_exporting TYPE i VALUE 2,
- c_changing TYPE i VALUE 3,
- c_tables TYPE i VALUE 4,
- c_raise TYPE i VALUE 5,
- c_call TYPE i VALUE 0,
- c_end TYPE i VALUE 99,
- c_tabs TYPE c LENGTH 30 VALUE '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'.
- TYPES: BEGIN OF ty_out,
- ord TYPE i,
- pos TYPE i,
- line TYPE string,
- END OF ty_out.
- DATA: t_out TYPE STANDARD TABLE OF ty_out,
- l_out TYPE ty_out.
- data: field type DYNPREAD-FIELDNAME.
- * CALL FUNCTION 'RS_HELP_HANDLING'
- * EXPORTING
- * DYNPFIELD = FIELD
- * DYNPNAME = SY-DYNNR
- * OBJECT = 'FB'
- * PROGNAME = 'SAPLSFUNCTION_BUILDER'
- * SUPPRESS_SELECTION_SCREEN = 'X'.
- DATA:
- fieldtab TYPE STANDARD TABLE OF dynpread WITH HEADER LINE.
- fieldtab-fieldname = 'RS38L-NAME'.
- APPEND fieldtab.
- PERFORM call_f4
- in program SAPLSEUH
- TABLES fieldtab
- USING 'FB'
- ''
- 'X'
- ''.
- read table fieldtab into data(l_tab) index 1.
- IF sy-subrc = 0 AND NOT l_tab-FIELDVALUE IS INITIAL.
- DATA(l_func) = l_tab-FIELDVALUE.
- SELECT * FROM fupararef INTO TABLE @DATA(t_func)
- WHERE funcname = @l_func.
- LOOP AT t_func INTO DATA(X_func).
- AT FIRST.
- l_out-ord = c_call.
- l_out-pos = 99.
- l_out-line = 'CALL FUNCTION ''' && l_func && ''''.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- ENDAT.
- CLEAR l_out.
- CASE x_func-paramtype.
- WHEN 'I' OR 'E' OR 'C' OR 'T'.
- CASE x_func-paramtype.
- WHEN 'I'.
- DATA(lc_orden) = c_importing.
- DATA(lc_tit) = 'EXPORTING'.
- DATA(lc_prevar) = 'LF_I_'.
- DATA(lc_posvar) = ''.
- WHEN 'E'.
- lc_orden = c_exporting.
- lc_tit = 'IMPORTING'.
- lc_prevar = 'LF_E_'.
- lc_posvar = ''.
- WHEN 'C'.
- lc_orden = c_changing.
- lc_tit = 'CHANGING'.
- lc_prevar = 'LF_C_'.
- lc_posvar = ''.
- WHEN 'T'.
- lc_orden = c_tables.
- lc_tit = 'TABLES'.
- lc_prevar = 'LF_C_'.
- lc_posvar = '~STANDARD~TABLE~ OF~'.
- ENDCASE.
- l_out-ord = lc_orden. l_out-pos = 0. l_out-line = '~~' && lc_tit.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- l_out-ord = lc_orden.
- l_out-pos = X_func-pposition.
- l_out-line = '[[~]] 22 julio 2021 a las 01h41' && X_func-parameter && '~=~' && lc_prevar && X_func-parameter.
- IF NOT X_func-optional IS INITIAL.
- l_out-line = l_out-line && ' "Opcional'.
- ENDIF.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- l_out-ord = 0.
- l_out-pos = 1.
- IF x_func-structure IS INITIAL.
- x_func-structure = 'C'.
- ENDIF.
- l_out-line = 'DATA:~' && lc_prevar && X_func-parameter && '~TYPE~' && lc_posvar && x_func-structure && '.'.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- WHEN 'X'.
- lc_orden = c_raise.
- lc_tit = 'EXCEPTIONS'.
- lc_prevar = ''.
- lc_posvar = ''.
- l_out-ord = lc_orden. l_out-pos = 0. l_out-line = '~~' && lc_tit.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- l_out-ord = lc_orden.
- l_out-pos = X_func-pposition.
- l_out-line = '[[~]] 22 julio 2021 a las 01h41' && X_func-parameter && '~=~' && X_func-pposition.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- l_out-pos = 999.
- l_out-line = '[[~]] 22 julio 2021 a las 01h41others~~=~99.'.
- TRANSLATE l_out-line USING '~ '. APPEND l_out TO t_out.
- ENDCASE.
- AT LAST.
- l_out-ord = c_end.
- l_out-pos = 1. l_out-line = '.'. APPEND l_out TO t_out.
- l_out-pos = l_out-pos + 1.
- l_out-line = 'if sy-subrc eq 0.'. APPEND l_out TO t_out.
- l_out-pos = l_out-pos + 1.
- l_out-line = ' '. APPEND l_out TO t_out.
- l_out-pos = l_out-pos + 1.
- l_out-line = 'else.'. APPEND l_out TO t_out.
- l_out-pos = l_out-pos + 1.
- l_out-line = ' '. APPEND l_out TO t_out.
- l_out-pos = l_out-pos + 1.
- l_out-line = 'endif.'. APPEND l_out TO t_out.
- SORT t_out BY ord ASCENDING pos ASCENDING.
- DELETE ADJACENT DUPLICATES FROM t_out.
- *--[ Tabulamos iguales.
- CLEAR lc_orden.
- LOOP AT t_out INTO l_out WHERE line CP '*=*'.
- FIND '=' IN l_out-line.
- IF sy-fdpos > lc_orden.
- lc_orden = sy-fdpos.
- ENDIF.
- ENDLOOP.
- LOOP AT t_out INTO l_out WHERE line CP '*=*'.
- FIND '=' IN l_out-line.
- IF sy-fdpos < lc_orden.
- sy-fdpos = lc_orden - sy-fdpos.
- sy-lisel = c_tabs.
- sy-lisel+sy-fdpos(1) = '='. ADD 1 TO sy-fdpos.
- sy-lisel = sy-lisel+0(sy-fdpos).
- REPLACE '=' IN l_out-line WITH sy-lisel.
- TRANSLATE l_out-line USING '~ '.
- ENDIF.
- MODIFY t_out INDEX sy-tabix FROM l_out.
- ENDLOOP.
- ENDAT.
- ENDLOOP.
- *--[ Mostramos salida
- LOOP AT t_out INTO l_out.
- append l_out-line to BUFFER.
- * WRITE: / l_out-line.
- ENDLOOP.
- ENDIF.
- ENDFUNCTION.
Última modificación de la página el 22 July 2021 a las 08h41
Powered by
PmWiki