mercoledì 5 agosto 2009

Leggere intestazione tabella

Questa function permette di leggere tutte le descrizioni di tutti i campi di una tabella e li concatena in una unica stringa.

DATA
:
va_desc(4096) TYPE c.
PERFORM read_table_fields USING 'BKPF' va_desc.


FORM
read_table_fields USING i_table va_record.

CLEAR va_record.

DATA: subrc LIKE sy-subrc,
help_fields LIKE dfies,
fieldname LIKE dfies-fieldname,
fieldsandtext_line TYPE gd13_fields_text.

CALL FUNCTION 'G_FIELD_SET'
EXPORTING
ftype = ' '
langu = sy-langu
table = i_table
text_flag = 'X'
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING not_found.
ENDIF.

CALL FUNCTION 'G_FIELD_GET'
IMPORTING
field_attr = help_fields
subrc = subrc
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING not_found.
ENDIF.
fieldname = help_fields-fieldname.
fieldsandtext_line-fieldname = help_fields-fieldname.
fieldsandtext_line-scrtext_m = help_fields-scrtext_m.
WHILE subrc = 0.
READ TABLE e_t_fields INTO fieldname WITH KEY fieldname.
CONCATENATE va_record fieldsandtext_line-scrtext_m ';'
INTO va_record.
CONDENSE va_record.
CALL FUNCTION 'G_FIELD_GET'
IMPORTING
field_attr = help_fields
subrc = subrc
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING not_found.
ENDIF.
fieldname = help_fields-fieldname.
fieldsandtext_line-fieldname = help_fields-fieldname.
fieldsandtext_line-scrtext_m = help_fields-scrtext_m.
ENDWHILE.

ENDFORM. " read_table_fields


martedì 4 agosto 2009

Selezionare file locale

DATA: tb_path_in TYPE file_table OCCURS 0,
wa_path TYPE file_table.
DATA: in_str TYPE string.
CLEAR tb_path_in.

CALL METHOD cl_gui_frontend_services=>file_open_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = tb_path_in
rc = rc.

READ TABLE tb_path_in INDEX 1 INTO wa_path.
MOVE wa_path-filename TO p_in.
MOVE wa_path-filename TO in_str.

lunedì 3 agosto 2009

Ottenere tutti i valori di un set

Creare la seguente funzione:

FUNCTION ZGET_SET.
*"--------------------------------------------------------------------
*"*"Interfaccia locale:
*" IMPORTING
*" REFERENCE(NOME) TYPE RGSBM-SHORTNAME
*" TABLES
*" TAB STRUCTURE HRRANGES
*" EXCEPTIONS
*" SET_NOT_FOUND
*" SET_IS_EMPTY
*"--------------------------------------------------------------------



DATA: va_new_set_id LIKE sethier-setid.
DATA: tb_option LIKE rgsb4 OCCURS 0 WITH HEADER LINE.


IF nome IS INITIAL.
MESSAGE i208(00) WITH 'Il nome del set non può essere vuoto'
RAISING set_is_empty.
ENDIF.

CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
shortname = nome
IMPORTING
new_setid = va_new_set_id.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION 'G_SET_GET_ALL_VALUES'
EXPORTING
setnr = va_new_set_id
TABLES
set_values = tb_option.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CLEAR tb_option.
LOOP AT tb_option.
CLEAR tab.
IF tb_option-to = tb_option-from.
tab-sign = 'I'.
tab-opti = 'EQ'.
tab-low = tb_option-from.
ELSE.
tab-sign = 'I'.
tab-opti = 'BT'.
tab-low = tb_option-from.
tab-high = tb_option-to.
ENDIF.
APPEND tab.
ENDLOOP.




ENDFUNCTION.