Como colocar los titulos de un ALV Jerarquico (las posiciones en la Cabecera)

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jeanficetola
    Member
    • sep
    • 64

    #1

    Como colocar los titulos de un ALV Jerarquico (las posiciones en la Cabecera)

    FORM append_alv_for_documents .
    DATA: ls_layout TYPE slis_layout_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_fieldcat_all TYPE slis_t_fieldcat_alv,
    lt_eventtab TYPE slis_t_event,
    ls_key TYPE slis_keyinfo_alv,
    ls_events TYPE slis_alv_event.

    FIELD-SYMBOLS:
    <ls_fieldcat> TYPE slis_fieldcat_alv.

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    i_program_name = sy-repid
    i_structure_name = 'FAGL_S_RFBELJ10_DOCUMENTS_HEAD'
    CHANGING
    ct_fieldcat = lt_fieldcat
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.


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



    LOOP AT lt_fieldcat ASSIGNING <ls_fieldcat>.
    <ls_fieldcat>-tabname = 'HEAD'.

    CASE <ls_fieldcat>-fieldname.

    * WHEN 'USNAM'.

    * <ls_fieldcat>-no_out = 'X'.
    * if poland is initial.
    * <ls_fieldcat>-no_out = 'X'.
    * endif.
    WHEN 'BUKRS' OR 'GJAHR'.
    <ls_fieldcat>-no_out = 'X'.
    * WHEN 'NUMBR'.
    * <ls_fieldcat>-seltext_l = text-140.
    * <ls_fieldcat>-seltext_m = text-140.
    * <ls_fieldcat>-seltext_s = text-140.
    * <ls_fieldcat>-reptext_ddic = text-140.
    * <ls_fieldcat>-no_zero = 'X'.
    WHEN 'WAERS'.
    <ls_fieldcat>-no_out = 'X'.
    WHEN 'CPUDT'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'BLDAT'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'BLAR'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'DOCNR'.
    <ls_fieldcat>-no_out = 'X'.
    WHEN 'RYEAR'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'STBLG'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'STJAH'.
    <ls_fieldcat>-no_out = 'X'.

    ENDCASE.

    ENDLOOP.

    APPEND LINES OF lt_fieldcat TO lt_fieldcat_all.
    REFRESH lt_fieldcat.


    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    i_program_name = sy-repid
    i_structure_name = 'FAGL_S_RFBELJ10_DOCUMENTS_ITEM'
    CHANGING
    ct_fieldcat = lt_fieldcat
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    LOOP AT lt_fieldcat ASSIGNING <ls_fieldcat>.
    <ls_fieldcat>-tabname = 'ITEM'.
    CASE <ls_fieldcat>-fieldname.
    WHEN 'BUKRS' OR 'GJAHR' OR 'BELNR' OR 'NUMBR' OR 'HWAER'
    OR 'NAME2' OR 'PSTLZ' OR 'ORT01' OR 'STRAS'
    OR 'SGTXT'.
    <ls_fieldcat>-no_out = 'X'.


    WHEN 'WRSHB'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'BUZEI'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'DOCLN'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'GSBER'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'BSCHL'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN 'UMSKZ'.
    <ls_fieldcat>-no_out = 'X'.

    WHEN ' XNEGP'.
    <ls_fieldcat>-no_out = 'X'.


    WHEN 'KOART'.
    <ls_fieldcat>-no_out = 'X'. "note955881


    WHEN 'XNEGP'.
    <ls_fieldcat>-no_out = 'X'.


    WHEN 'DMHAB'. "HABER

    <ls_fieldcat>-do_sum = 'X'.

    IF italy IS INITIAL. "note955881
    <ls_fieldcat>-no_zero = 'X'.
    <ls_fieldcat>-seltext_l = text-131.
    <ls_fieldcat>-seltext_m = text-131.
    <ls_fieldcat>-seltext_s = text-131.
    <ls_fieldcat>-reptext_ddic = text-131.
    ENDIF.
    * <ls_fieldcat>-outputlen = 15.


    WHEN 'DMSOL'. "DEBE

    <ls_fieldcat>-do_sum = 'X'.

    IF italy IS INITIAL. "note955881

    <ls_fieldcat>-no_zero = 'X'.
    <ls_fieldcat>-seltext_l = text-130.
    <ls_fieldcat>-seltext_m = text-130.
    <ls_fieldcat>-seltext_s = text-130.
    <ls_fieldcat>-reptext_ddic = text-130.
    ENDIF.
    * <ls_fieldcat>-outputlen = 15.


    WHEN 'DOCLN'.
    IF NOT fagl_active IS INITIAL
    AND par_docc IS INITIAL.
    ELSE.
    <ls_fieldcat>-no_out = 'X'.
    ENDIF.

    ENDCASE.
    ENDLOOP.

    APPEND LINES OF lt_fieldcat TO lt_fieldcat_all.

    ls_layout-list_append = 'X'.
    ls_layout-min_linesize = 255.
    ls_layout-info_fieldname = 'COLOR'.

    ls_events-name = 'END_OF_LIST'.
    ls_events-form = 'OUTPUT_EOL'.
    append ls_events to lt_eventtab.
    ls_events-name = 'TOP_OF_PAGE'.
    ls_events-form = 'TOP_OF_PAGE'.
    APPEND ls_events TO lt_eventtab.
    ls_events-name = 'END_OF_PAGE'.
    ls_events-form = 'END_OF_PAGE'.
    APPEND ls_events TO lt_eventtab.

    ls_key-header01 = 'BUKRS'.
    ls_key-item01 = 'BUKRS'.
    ls_key-header02 = 'BELNR'.
    ls_key-item02 = 'BELNR'.
    ls_key-header03 = 'GJAHR'.
    ls_key-item03 = 'GJAHR'.

    gs_variant-report = sy-repid.
    gs_variant-variant = par_var1.

    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    is_layout = ls_layout
    it_fieldcat = lt_fieldcat_all
    * it_sort = lt_sort_acc
    is_variant = gs_variant
    i_save = 'A'
    it_events = lt_eventtab
    i_tabname_header = 'HEAD'
    i_tabname_item = 'ITEM'
    is_keyinfo = ls_key
    is_print = gs_print
    TABLES
    t_outtab_header = gt_doc_head
    t_outtab_item = gt_doc_item
    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.






    (Necesito colocar las posiciones en la misma linea de la cabecera
    Jean Carlos Hernandez Ficetola

    Consultor ABAP
    INFOGESA S.A , Venezuela
  • ic_man_777
    Member
    • oct
    • 97

    #2
    Busque y no encontre como hacer eso... si lo encuentras me avisas =)

    Yo lo unico que pude hacer fue, a mi tabla interna de items agregarle un campo blank de tamaño de un caracter.

    E ir metiendo ese campo al fieldcat cuando era necesario, para alinearlo aproximadamente a la columna del header.

    Puedes meter varias veces el mismo campo en la tabla de items, así que, si metes un campo en blanco este lo espaciará... en el titulo de este campo tambien lo dejé vacío...

    Comentario

    Trabajando...