*&---------------------------------------------------------------------*
*& Report ZRMM009
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrmm009.
TYPE-POOLS : abap, slis, icon.
TABLES: ekko, ekpo, ekkn.
SELECTION-SCREEN BEGIN OF BLOCK par WITH FRAME .
PARAMETERS:
p_ekorg TYPE ekorg DEFAULT 'OCLW'.
SELECT-OPTIONS:
s_bukrs FOR ekko-bukrs,
s_datum FOR ekko-bedat,
s_lifnr FOR ekko-lifnr,
s_ebeln FOR ekko-ebeln.
SELECTION-SCREEN END OF BLOCK par.
SELECTION-SCREEN BEGIN OF BLOCK var.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK var.
DATA: r_ebeln TYPE RANGE OF ebeln.
DATA:
BEGIN OF t_output OCCURS 0,
ekorg LIKE ekko-ekorg, " Organização de Compras
bukrs LIKE ekko-bukrs, " Empresa
bsart LIKE ekko-bsart, " Tipo de Pedido de Compra
ebeln LIKE ekko-ebeln, " Número do Pedido de Compra
ebelp LIKE ekpo-ebelp, " Item do Pedido de Compra
lifnr LIKE ekko-lifnr, " Nümero do Fornecedor
name1 LIKE lfa1-name1, " Nome do Fornecedor
zterm LIKE ekko-zterm, " Condição de Pagamento
aedat LIKE ekko-aedat, " Data de Criação do Doc Compras
ernam LIKE ekko-ernam, " Usuário que Criou Doc de Compras
loekz LIKE ekpo-loekz, " Status de Bloq/Eliminação
knttp LIKE ekpo-knttp, " Classificação Contábil do Item
matnr LIKE ekpo-matnr, " Código de Material
matkl LIKE ekpo-matkl, " Grupo de Mercadorias
txz01 LIKE ekpo-txz01, " Texto do Item do Item
menge LIKE ekpo-menge, " Quantidade do Item
meins LIKE ekpo-meins,
" Unidade de Medida para Quantidade do Item
netwr LIKE ekpo-netwr, " Valor Unitário
waers LIKE ekko-waers, " Moeda do Pedido de Compra
werks LIKE ekpo-werks, " Centro
kostl LIKE csks-kostl, " Centro de Custo
anln1 LIKE anla-anln1, " Número de Imobilizado
anln2 LIKE anla-anln2, " Sub Número de Imobilizado
cost_descr TYPE char15,
" Descrição de Imobilizado ou Centro de Custo
END OF t_output.
TYPE-POOLS: slis, sydes.
DATA: "Dynpro Control
lvc_t_fcat TYPE lvc_t_fcat,
lvc_t_sort TYPE lvc_t_sort,
lvc_w_layout TYPE lvc_s_layo,
lvc_t_filter TYPE lvc_t_filt.
*DATA: t_fcat TYPE slis_t_fieldcat_alv.
*DATA: w_slis_layout_alv TYPE slis_layout_alv.
*DATA: t_sort TYPE slis_t_sortinfo_alv.
*DATA: t_filter TYPE slis_t_filter_alv.
DATA: w_ekko TYPE ekko,
t_ekpo TYPE TABLE OF ekpo,
t_ekkn TYPE TABLE OF ekkn,
t_ekbe TYPE TABLE OF ekbe.
DATA: g_save,
g_exit,
g_variant TYPE disvariant,
gx_variant TYPE disvariant.
INITIALIZATION.
g_save = 'A'.
CLEAR g_variant.
g_variant-report = sy-cprog.
* Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
* Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
* it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
START-OF-SELECTION.
PERFORM select_data.
END-OF-SELECTION.
PERFORM process_data.
PERFORM output_report.
*&---------------------------------------------------------------------*
*& Form SELECT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_data .
IF s_ebeln[] IS INITIAL.
PERFORM get_ebeln_by_date TABLES r_ebeln.
ELSE.
r_ebeln[] = s_ebeln[].
ENDIF.
CHECK r_ebeln[] IS NOT INITIAL.
DATA:
t_callback TYPE TABLE OF ldbcb,
t_selections TYPE TABLE OF rsparams.
PERFORM prepare_ldb TABLES t_callback t_selections.
CALL FUNCTION 'LDB_PROCESS'
EXPORTING
ldbname = 'ENM'
* VARIANT =
* EXPRESSIONS =
* FIELD_SELECTION =
* DYN_NODE_TYPES =
TABLES
callback = t_callback
selections = t_selections
EXCEPTIONS
ldb_not_reentrant = 1
ldb_incorrect = 2
ldb_already_running = 3
ldb_error = 4
ldb_selections_error = 5
ldb_selections_not_accepted = 6
variant_not_existent = 7
variant_obsolete = 8
variant_error = 9
free_selections_error = 10
callback_no_event = 11
callback_node_duplicate = 12
callback_no_program = 13
callback_no_cbform = 14
dyn_node_no_type = 15
dyn_node_invalid_type = 16
OTHERS = 17
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " SELECT_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process_data .
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form OUTPUT_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM output_report .
PERFORM prepare_sort USING lvc_t_sort.
PERFORM build_fcat.
PERFORM prepare_fcat.
PERFORM prepare_filter USING lvc_t_filter.
PERFORM call_alv.
ENDFORM. " OUTPUT_REPORT
*&---------------------------------------------------------------------*
*& Form BUILD_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_FCAT text
*----------------------------------------------------------------------*
FORM build_fcat.
DATA: t_slis_fcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog
i_internal_tabname = 'T_OUTPUT'
* i_structure_name = 'T_OUTPUT'
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-cprog
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = t_slis_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
it_fieldcat_alv = t_slis_fcat
* IT_SORT_ALV =
* IT_FILTER_ALV =
* IS_LAYOUT_ALV =
IMPORTING
et_fieldcat_lvc = lvc_t_fcat
* ET_SORT_LVC =
* ET_FILTER_LVC =
* ES_LAYOUT_LVC =
TABLES
it_data = t_output
* EXCEPTIONS
* IT_DATA_MISSING = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " BUILD_FCAT
*&---------------------------------------------------------------------*
*& Form PREPARE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_FCAT text
*----------------------------------------------------------------------*
FORM prepare_fcat.
DATA: w_lvc_fcat LIKE LINE OF lvc_t_fcat.
PERFORM get_lvc_fcat_dtel
USING 'T_OUTPUT' 'COST_DESCR' 'CHAR15'
'Descrição Custo' w_lvc_fcat.
w_lvc_fcat-col_pos = LINES( lvc_t_fcat ) + 1.
APPEND w_lvc_fcat TO lvc_t_fcat.
ENDFORM. " PREPARE_FCAT
*&---------------------------------------------------------------------*
*& Form PREPARE_FILTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_FILTER text
*----------------------------------------------------------------------*
FORM prepare_filter USING p_t_filter.
ENDFORM. " PREPARE_FILTER
*&---------------------------------------------------------------------*
*& Form PREPARE_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_SORT text
*----------------------------------------------------------------------*
FORM prepare_sort USING p_t_sort.
ENDFORM. " PREPARE_SORT
*&---------------------------------------------------------------------*
*& Form PREPARE_LDB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_CALLBACK text
* -->P_T_SELECTIONS text
*----------------------------------------------------------------------*
FORM prepare_ldb TABLES p_t_callback STRUCTURE ldbcb
"Introduzir nome correto para <...>
p_t_selections STRUCTURE rsparams.
DATA: callback_wa LIKE LINE OF p_t_callback,
seltab_wa LIKE LINE OF p_t_selections.
CLEAR: p_t_callback[], p_t_selections[].
callback_wa-ldbnode = 'EKKO'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKKO'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKPO'.
callback_wa-get = 'X'.
callback_wa-get_late = 'X'.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKPO'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKKN'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKKN'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKBE'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKBE'.
APPEND callback_wa TO p_t_callback.
seltab_wa-kind = 'S'.
seltab_wa-selname = 'EN_EBELN'.
DATA: w_ebeln LIKE LINE OF r_ebeln.
LOOP AT r_ebeln INTO w_ebeln.
w_ebeln-sign = 'I'.
w_ebeln-option = 'EQ'.
MOVE-CORRESPONDING w_ebeln TO seltab_wa.
APPEND seltab_wa TO p_t_selections.
ENDLOOP.
ENDFORM. " PREPARE_LDB
*&---------------------------------------------------------------------*
*& Form GET_EBELN_BY_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_R_EBELN text
*----------------------------------------------------------------------*
FORM get_ebeln_by_date TABLES p_r_ebeln LIKE r_ebeln.
"Introduzir nome correto para <...>.
SELECT ebeln AS low FROM ekbe
INTO CORRESPONDING FIELDS OF TABLE p_r_ebeln
WHERE budat IN s_datum
AND vgabe = '2'. " 2 = MIRO
SELECT ebeln AS low
FROM ekko
APPENDING CORRESPONDING FIELDS OF TABLE p_r_ebeln
WHERE aedat IN s_datum.
SELECT ebeln AS low
FROM eket
APPENDING CORRESPONDING FIELDS OF TABLE p_r_ebeln
WHERE eindt IN s_datum.
SORT p_r_ebeln BY low.
DELETE ADJACENT DUPLICATES FROM p_r_ebeln COMPARING low.
DATA: w_ebeln LIKE LINE OF p_r_ebeln.
w_ebeln-sign = 'I'.
w_ebeln-option = 'EQ'.
MODIFY TABLE p_r_ebeln FROM w_ebeln TRANSPORTING sign option.
ENDFORM. " GET_EBELN_BY_DATE
*&---------------------------------------------------------------------*
*& Form callback_ekko
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_ekko USING name TYPE ldbn-ldbnode
wa TYPE ekko
evt TYPE c
check TYPE c.
CASE evt.
WHEN 'G'.
CLEAR: w_ekko.
MOVE-CORRESPONDING wa TO w_ekko.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
*&---------------------------------------------------------------------*
*& Form callback_ekPo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_ekpo USING name TYPE ldbn-ldbnode
wa TYPE ekpo
evt TYPE c
check TYPE c.
DATA: l_ekpo LIKE LINE OF t_ekpo.
CASE evt.
WHEN 'G'.
CLEAR: t_ekpo[], t_ekbe[], t_ekkn[].
MOVE-CORRESPONDING wa TO l_ekpo.
APPEND l_ekpo TO t_ekpo.
WHEN 'L'.
PERFORM build_data.
ENDCASE.
ENDFORM. "callback_ekko
*&---------------------------------------------------------------------*
*& Form callback_ekkn
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_ekkn USING name TYPE ldbn-ldbnode
wa TYPE ekkn
evt TYPE c
check TYPE c.
DATA: l_ekkn LIKE LINE OF t_ekkn.
CASE evt.
WHEN 'G'.
MOVE-CORRESPONDING wa TO l_ekkn.
APPEND l_ekkn TO t_ekkn.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
*&---------------------------------------------------------------------*
*& Form callback_ekbe
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_ekbe USING name TYPE ldbn-ldbnode
wa TYPE ekbe
evt TYPE c
check TYPE c.
DATA: l_ekbe LIKE LINE OF t_ekbe.
CASE evt.
WHEN 'G'.
MOVE-CORRESPONDING wa TO l_ekbe.
APPEND l_ekbe TO t_ekbe.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
*&---------------------------------------------------------------------*
*& Form BUILD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_data .
*
* ekorg LIKE ekko-ekorg, " Organização de Compras
* bukrs LIKE ekko-bukrs, " Empresa
* bsart LIKE ekko-bsart, " Tipo de Pedido de Compra
* ebeln LIKE ekko-ebeln, " Número do Pedido de Compra
* ebelp LIKE ekpo-ebelp, " Item do Pedido de Compra
* lifnr LIKE ekko-lifnr, " Nümero do Fornecedor
* name1 LIKE lfa1-name1, " Nome do Fornecedor
* zterm LIKE ekko-zterm, " Condição de Pagamento
* aedat LIKE ekko-aedat,
* " Data de Criação do Documento de Compras
* ernam LIKE ekko-ernam,
" Usuário que Criou Documento de Compras
* loekz LIKE ekpo-loekz, " Status de Bloq/Eliminação
* knttp LIKE ekpo-knttp, " Classificação Contábil do Item
* matnr LIKE ekpo-matnr, " Código de Material
* matkl LIKE ekpo-matkl, " Grupo de Mercadorias
* txz01 LIKE ekpo-txz01, " Texto do Item do Item
* menge LIKE ekpo-menge, " Quantidade do Item
* meins LIKE ekpo-meins,
* " Unidade de Medida para Quantidade do Item
* netwr LIKE ekpo-netwr, " Valor Unitário
* waers LIKE ekko-waers, " Moeda do Pedido de Compra
* werks LIKE ekpo-werks, " Centro
* kostl LIKE csks-kostl, " Centro de Custo
* anln1 LIKE anla-anln1, " Número de Imobilizado
* anln2 LIKE anla-anln2, " Sub Número de Imobilizado
*cost_descr TYPE char15, " Descrição de Imobilizado ou Centro de Custo
DATA: v_ekko TYPE ekko,
v_ekpo TYPE ekpo,
v_ekkn TYPE ekkn,
v_ekbe TYPE ekbe,
i_ekkn TYPE i,
v_kostl_name TYPE bapi0012_5-name,
v_asset_detail TYPE bapi1022_2,
v_kokrs TYPE kokrs.
v_ekko = w_ekko.
READ TABLE t_ekpo INDEX 1 INTO v_ekpo.
DATA: v_output LIKE LINE OF t_output.
CLEAR: v_output, t_output[].
CALL FUNCTION 'KOKRS_GET_FROM_BUKRS'
EXPORTING
i_bukrs = v_ekko-bukrs
IMPORTING
e_kokrs = v_kokrs
EXCEPTIONS
no_kokrs_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
v_output-ekorg = v_ekko-ekorg.
v_output-bukrs = v_ekko-bukrs.
v_output-bsart = v_ekko-bsart.
v_output-ebeln = v_ekko-ebeln.
v_output-ebelp = v_ekpo-ebelp.
v_output-lifnr = v_ekko-lifnr.
SELECT SINGLE name1 FROM lfa1
INTO v_output-name1
WHERE lifnr = v_output-lifnr.
v_output-zterm = v_ekko-zterm.
v_output-aedat = v_ekko-aedat.
v_output-ernam = v_ekko-ernam.
v_output-loekz = v_ekpo-loekz.
v_output-knttp = v_ekpo-knttp.
v_output-matnr = v_ekpo-matnr.
v_output-matkl = v_ekpo-matkl.
v_output-txz01 = v_ekpo-txz01.
v_output-menge = v_ekpo-menge.
v_output-meins = v_ekpo-meins.
v_output-netwr = v_ekpo-netwr.
v_output-werks = v_ekpo-werks.
DESCRIBE TABLE t_ekkn LINES i_ekkn.
IF i_ekkn = 0.
IF v_output-knttp = ' '.
v_output-cost_descr = 'ESTOQUE'.
ENDIF.
APPEND v_output TO t_output.
ELSEIF i_ekkn = 1.
READ TABLE t_ekkn INDEX 1 INTO v_ekkn.
CASE v_output-knttp.
WHEN 'K'.
v_output-kostl = v_ekkn-kostl.
CALL FUNCTION 'BAPI_COSTCENTER_GETDETAIL'
EXPORTING
controllingarea = v_kokrs
costcenter = v_output-kostl
* DATE = SY-DATUM
IMPORTING
name = v_kostl_name
* DESCRIPTION =
* PERSON_IN_CHARGE =
* ADDRESS =
* COMMUNICATION =
* RETURN =
.
v_output-cost_descr = v_kostl_name.
WHEN 'A'.
v_output-anln1 = v_ekkn-anln1.
v_output-anln2 = v_ekkn-anln2.
CALL FUNCTION 'BAPI_FIXEDASSET_GETDETAIL'
EXPORTING
companycode = v_output-bukrs
asset = v_output-anln1
subnumber = '0000'
* EVALUATION_DATE = '00000000'
IMPORTING
basic_data = v_asset_detail
* ORGANIZATIONAL_DATA =
* SPECIAL_CLASSIFICATIONS =
* RETURN =
.
v_output-cost_descr = v_asset_detail-descript.
APPEND v_output TO t_output.
WHEN OTHERS.
" Do nothing
ENDCASE.
APPEND v_output TO t_output.
ELSE.
"TODO
APPEND v_output TO t_output.
ENDIF.
ENDFORM. " BUILD_DATA
*&---------------------------------------------------------------------*
*& Form CALL_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT_LVC =
it_fieldcat_lvc = lvc_t_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = g_save
is_variant = g_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_output
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " CALL_ALV
*&---------------------------------------------------------------------*
*& Form GET_LVC_FCAT_DTEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0519 text
* -->P_0520 text
* -->P_0521 text
* -->P_W_LVC_FCAT text
*----------------------------------------------------------------------*
FORM get_lvc_fcat_dtel USING value(p_table)
value(p_column)
value(p_dtel)
value(p_title)
p_fcat TYPE lvc_s_fcat.
DATA: dd_x031l_table TYPE dd_x031l_table,
x031l TYPE x031l,
ref_cl_abap_elemdescr TYPE REF TO cl_abap_elemdescr.
ref_cl_abap_elemdescr ?=
cl_abap_typedescr=>describe_by_name( p_dtel ).
dd_x031l_table = ref_cl_abap_elemdescr->get_ddic_object( ).
READ TABLE dd_x031l_table INDEX 1 INTO x031l.
CASE ref_cl_abap_elemdescr->type_kind.
WHEN 'C'.
p_fcat-datatype = 'CHAR'.
WHEN 'N'.
p_fcat-datatype = 'NUMC'.
WHEN 'D'.
p_fcat-datatype = 'DATE'.
WHEN 'P'.
p_fcat-datatype = 'PACK'.
WHEN OTHERS.
p_fcat-datatype = ref_cl_abap_elemdescr->type_kind.
ENDCASE.
p_fcat-inttype = ref_cl_abap_elemdescr->type_kind.
p_fcat-intlen = ref_cl_abap_elemdescr->length.
p_fcat-decimals = ref_cl_abap_elemdescr->decimals.
p_fcat-reptext = p_title.
p_fcat-fieldname = p_column.
p_fcat-tabname = p_table.
ENDFORM. " GET_LVC_FCAT_DTEL