Difference between revisions of "SAP ABAP DICTIONARY"
From SapWiki
| Line 2: | Line 2: | ||
===Eventos en SE11-->Utilidades-->Generador actualiz.tab.=== | ===Eventos en SE11-->Utilidades-->Generador actualiz.tab.=== | ||
Ver tabla TVIMF | Ver tabla TVIMF | ||
| − | + | ==== Ejemplo Evento 01==== | |
<nowiki> | <nowiki> | ||
FORM check_resolucion_ini. | FORM check_resolucion_ini. | ||
| Line 75: | Line 75: | ||
</nowiki> | </nowiki> | ||
| − | + | ==== Ejemplo evento 05==== | |
<nowiki> | <nowiki> | ||
FORM check_resolucion_ini_new. | FORM check_resolucion_ini_new. | ||
| Line 128: | Line 128: | ||
ENDFORM. | ENDFORM. | ||
</nowiki> | </nowiki> | ||
| + | |||
| + | ====ejemplo evento AA==== | ||
| + | <nowiki> | ||
| + | FORM read_z_my_table. | ||
| + | |||
| + | DATA lt_z_my_table TYPE TABLE OF z_my_table. | ||
| + | DATA ra_user TYPE TABLE OF zbptaxnum_rango. | ||
| + | |||
| + | REFRESH total. | ||
| + | |||
| + | IMPORT ra_user FROM MEMORY ID 'Z_MY_TABLE'. | ||
| + | |||
| + | SELECT * INTO TABLE lt_z_my_table FROM z_my_table WHERE usernw IN ra_user. | ||
| + | IF sy-subrc = 0 AND lt_z_my_table[] IS NOT INITIAL. | ||
| + | LOOP AT lt_z_my_table INTO DATA(wa). | ||
| + | * append missing entry | ||
| + | <vim_total_struc> = wa. | ||
| + | APPEND total. | ||
| + | ENDLOOP. | ||
| + | * ensure correct sorting | ||
| + | SORT total BY <vim_xtotal_key>. | ||
| + | ENDIF. | ||
| + | ENDFORM. </nowiki> | ||
| + | |||
| + | programa para actualizar tabla | ||
| + | <nowiki> | ||
| + | DATA wa TYPE z_my_table. | ||
| + | |||
| + | *--------------------------------------------------------------------* | ||
| + | SELECT-OPTIONS: ra_user FOR wa-usernw. | ||
| + | *--------------------------------------------------------------------* | ||
| + | |||
| + | *--------------------------------------------------------------------* | ||
| + | START-OF-SELECTION. | ||
| + | *--------------------------------------------------------------------* | ||
| + | * ver eventos en mantenedor de tabla z_my_table (trn SE11) | ||
| + | EXPORT ra_user TO MEMORY ID 'Z_MY_TABLE'. | ||
| + | |||
| + | CALL FUNCTION 'VIEW_MAINTENANCE_CALL' | ||
| + | EXPORTING | ||
| + | action = 'U' | ||
| + | view_name = 'Z_MY_TABLE' | ||
| + | no_warning_for_clientindep = 'X' | ||
| + | EXCEPTIONS | ||
| + | OTHERS = 15. | ||
| + | |||
| + | IF sy-subrc <> 0. | ||
| + | MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno | ||
| + | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. | ||
| + | |||
| + | ENDIF.</nowiki> | ||
Revision as of 22:07, 31 August 2022
Contents
Tablas
Eventos en SE11-->Utilidades-->Generador actualiz.tab.
Ver tabla TVIMF
Ejemplo Evento 01
FORM check_resolucion_ini.
TYPES: BEGIN OF ty_data, "campos de Mi tabla
perca TYPE zseg_ds67_1000-perca,
nresini TYPE zseg_ds67_1000-nresini,
nresfin TYPE zseg_ds67_1000-nresfin,
END OF ty_data.
DATA lt_data TYPE TABLE OF ty_data.
DATA lt_data2 TYPE TABLE OF ty_data.
DATA ls_data LIKE LINE OF lt_data.
DATA ls_data2 LIKE LINE OF lt_data.
DATA: fieldname1 TYPE fieldname VALUE 'PERCA'.
DATA: fieldname2 TYPE fieldname VALUE 'NRESINI'.
DATA: fieldname3 TYPE fieldname VALUE 'NRESFIN'.
FIELD-SYMBOLS: <fs1> TYPE any.
FIELD-SYMBOLS: <fs2> TYPE any.
FIELD-SYMBOLS: <fs3> TYPE any.
LOOP AT total.
ASSIGN COMPONENT fieldname1 OF STRUCTURE <vim_total_struc> TO <fs1>.
ASSIGN COMPONENT fieldname2 OF STRUCTURE <vim_total_struc> TO <fs2>.
ASSIGN COMPONENT fieldname3 OF STRUCTURE <vim_total_struc> TO <fs3>.
ls_data-perca = <fs1>.
ls_data-nresini = <fs2>.
ls_data-nresfin = <fs3>.
APPEND ls_data TO lt_data.
ENDLOOP.
SORT lt_data BY perca.
DATA: l_string TYPE string,
l_string2 TYPE string.
* verificar Nr.Res.Fin >= Nr.Res.Ini
LOOP AT lt_data INTO ls_data.
IF ls_data-nresfin < ls_data-nresini and ls_data-nresfin is NOT INITIAL.
l_string = |Para Período { ls_data-perca } Nr.Res.Fin { ls_data-nresfin } menor a|.
MESSAGE e000(0k) WITH l_string 'Nr.Res.Ini' ls_data-nresini.
vim_abort_saving = 'X'.
ENDIF.
ENDLOOP.
CLEAR sy-subrc.
lt_data2[] = lt_data[].
SORT lt_data2 BY perca DESCENDING.
SORT lt_data BY perca ASCENDING.
* verificar Nr.Res.Ini > Nr.Res.Fin de períodos anteriores
LOOP AT lt_data INTO ls_data.
LOOP AT lt_data2 INTO ls_data2 WHERE perca < ls_data-perca.
if ls_data2-nresfin is INITIAL.
ls_data2-nresfin = ls_data2-nresini.
endif.
IF ls_data-nresini <= ls_data2-nresfin.
l_string = |Para Período { ls_data-perca } Nr.Res.Ini { ls_data-nresini } menor/igual a|.
l_string2 = |Nr.Res.Fin { ls_data2-nresfin } de Período { ls_data2-perca }|.
MESSAGE e000(0k) WITH l_string l_string2.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM.
Ejemplo evento 05
FORM check_resolucion_ini_new.
TYPES: BEGIN OF ty_total.
INCLUDE STRUCTURE zseg_ds67_1000. "Mi tabla
INCLUDE STRUCTURE vimtbflags.
TYPES: END OF ty_total.
TYPES: BEGIN OF ty_data,
perca TYPE zseg_ds67_1000-perca,
nresini TYPE zseg_ds67_1000-nresini,
nresfin TYPE zseg_ds67_1000-nresfin,
END OF ty_data.
DATA lt_data TYPE TABLE OF ty_data.
DATA ls_data LIKE LINE OF lt_data.
DATA: l_string TYPE string.
DATA: l_string2 TYPE string.
FIELD-SYMBOLS: <ls_data> TYPE zseg_ds67_1000,
<ls_total> TYPE ty_total.
ASSIGN <table1> TO <ls_data>.
IF <ls_data>-nresfin < <ls_data>-nresini and <ls_data>-nresfin is NOT INITIAL.
l_string = |Para Período { <ls_data>-perca } Nr.Res.Fin { <ls_data>-nresfin } menor a|.
MESSAGE e000(0k) WITH l_string 'Nr.Res.Ini' <ls_data>-nresini.
ENDIF.
LOOP AT total ASSIGNING <ls_total> CASTING.
MOVE-CORRESPONDING <ls_total> TO ls_data.
APPEND ls_data TO lt_data.
ENDLOOP.
SORT lt_data BY perca DESCENDING.
data l_res type ZSEG_DS67_1000-nresfin.
LOOP AT lt_data INTO ls_data WHERE perca < <ls_data>-perca.
if ls_data-nresfin is INITIAL.
ls_data-nresfin = ls_data-nresini.
endif.
IF <ls_data>-nresini <= ls_data-nresfin.
l_string = |Para Período { <ls_data>-perca } Nr.Res.Ini { <ls_data>-nresini } menor/igual a|.
l_string2 = |Nr.Res.Fin { ls_data-nresfin } de Período { ls_data-perca }|.
MESSAGE e000(0k) WITH l_string l_string2.
ENDIF.
ENDLOOP.
ENDFORM.
ejemplo evento AA
FORM read_z_my_table.
DATA lt_z_my_table TYPE TABLE OF z_my_table.
DATA ra_user TYPE TABLE OF zbptaxnum_rango.
REFRESH total.
IMPORT ra_user FROM MEMORY ID 'Z_MY_TABLE'.
SELECT * INTO TABLE lt_z_my_table FROM z_my_table WHERE usernw IN ra_user.
IF sy-subrc = 0 AND lt_z_my_table[] IS NOT INITIAL.
LOOP AT lt_z_my_table INTO DATA(wa).
* append missing entry
<vim_total_struc> = wa.
APPEND total.
ENDLOOP.
* ensure correct sorting
SORT total BY <vim_xtotal_key>.
ENDIF.
ENDFORM.
programa para actualizar tabla
DATA wa TYPE z_my_table.
*--------------------------------------------------------------------*
SELECT-OPTIONS: ra_user FOR wa-usernw.
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
START-OF-SELECTION.
*--------------------------------------------------------------------*
* ver eventos en mantenedor de tabla z_my_table (trn SE11)
EXPORT ra_user TO MEMORY ID 'Z_MY_TABLE'.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U'
view_name = 'Z_MY_TABLE'
no_warning_for_clientindep = 'X'
EXCEPTIONS
OTHERS = 15.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.