Liste aus einer internene Tabelle über FUBA erstellen

Getting started ... Alles für einen gelungenen Start.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

Liste aus einer internene Tabelle über FUBA erstellen

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo ABAP-Experten,

weiss jemand, ob es einen Funktionsbaustein gibt, mit dem man eine Liste aus einer internen Tabelle erstellen kann? (So könnte man z.B. Berechnung der Spaltenpositionen sparen...).
Danke für die Tips!

Grüße,
Jura

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von axel.mohnen (ForumUser / 18 / 0 / 0 ) »
Hallo Jura,

probiere es mal mit dem FB 'POPUP_WITH_TABLE_DISPLAY'

Gruß

Axel

Re: Liste aus einer internene Tabelle über FUBA erstellen

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Jura hat geschrieben:weiss jemand, ob es einen Funktionsbaustein gibt, mit dem man eine Liste aus einer internen Tabelle erstellen kann? (So könnte man z.B. Berechnung der Spaltenpositionen sparen...).
FuBa: REUSE_ALV_LIST_DISPLAY. Ausgabe ist eine Liste incl. Sortier-/Berechnungs-/Export-/Layoutfunktion.
Gruß Hendrik

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo zusammen,

danke für die Tips. Ich habe nur vergessen zu schreiben, dass dies eine Standardliste sein soll, die ich dann per Job an den Spool schicken möchte.
Popups und Alv-Grid passen also nicht.

Grüße,
Jura

Beitrag von axel.mohnen (ForumUser / 18 / 0 / 0 ) »
FuBa: C160_TABLE_WRITE

Gruß
Axel

Beitrag von brinam ( / / 0 / 3 ) »
Hallo Jura,

wieso bist Du der Meinung, dass der FuBa REUSE_ALV_GRID_DISPLAY nicht batch- und/oder spoolfähig ist?
Schau Dir in der Doku mal den Paramter is_print an.

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo zusammen,

vielen Dank an Euch beide für die FB's. REUSE_ALV_GRID_DISPLAY scheint kann tatsächlich eine Standardliste ausgeben. Der C160_TABLE_WRITE passt mir diesmal viel besser, leider muss ich noch die Überschrift selbst basteln. Aber das werde schon hinkriegen.

Noch mal vielen Dank und Grüße!
Jura

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo,

ich brauche doch noch Eure Hilfe:

ich versuche aus meiner internen Tabelle mit Hilfe vom Funktionsbaustein 'REUSE_ALV_GRID_DISPLAY' einen Spoolauftrag zu erstellen. Dem FB habe ich folgende IS_PRINT Parameter übergeben:

wa_print-PRINT = 'X'.
wa_print-PRINT_CTRL-PRI_PARAMS-PDEST = 'locl'.
wa_print-PRINT_CTRL-PRI_PARAMS-prnew = 'X'.

Beim Ausführen des Programms taucht ständig das Fenster 'ALV-Liste drucken' mit der Frage nach dem Drucker. Und die Liste wird gedruckt, obwohl ich nur einen neuen Spoolauftrag erstellen möchte.
Da das Programm als Job laufen muss, wird der Job abbrechen, wenn so ein Popup-Fenster kommen würde.
Welche Parameter sollte ich dem FB noch übergeben, damit
1. kein Popup-Fenster mit der Frage nach einem Drucker kommt
2. damit die Liste nicht gedruckt wird, sondern nur ein Spoolauftrag erstellt wird?

Danke für den Rat.

Grüße,
Jura

Beitrag von poldi (Specialist / 116 / 0 / 0 ) »
Hallo Jura,

das passende System habe ich zur Zeit nicht zur Verfügung. Der Drucker muß auf alle Fälle groß geschrieben werden. Den Parameter print würde ich leer lassen. Alles ohne Garantie. Eventuell noch einen "Dummy"-Drucker einrichten, der SAP-seitig gesperrt ist oder wo gar keiner angeschlossen ist.

Viele Grüße
Wilfried
Wir sind lustig und haben es gar nicht nötig!

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo Wilfried,

danke für Deine Antwort.
Leider hat es nichts gebracht, den LOCL groß zu schreiben. Mit leerem Print-Parameter wurde die Liste nicht in den Spoolauftrag gestellt, sondern auf dem Bildschirm angezeigt.
Was könnte man noch machen?

Danke und Grüße,
Jura

Beitrag von poldi (Specialist / 116 / 0 / 0 ) »
Hallo Jura,

probiere es mal mit wa_print-print_ctrl-pri_params-pdest und primm=space.
Habe jetzt ein System, bin aber in Eile.

Gruß,
Wilfried
Wir sind lustig und haben es gar nicht nötig!

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo Wilfried,

mit wa_print-print_ctrl-pri_params-pdest und primm = space hat nicht geklappt. Wenn ich im Popup-Fenster 'BTCH' statt 'LOCL' eingebe, dann wird tatsächlich nur ein Spoolauftrag erstellt. Aber mit wa_print-print_ctrl-pri_params-pdest = 'BTCH' ist trotzdem das Popup-Fenster gekommen, wo ich noch mal BTCH eingeben musste.
Vielleicht wurde der Funktionsbaustein REUSE_ALV_GRID_DISPLAY nicht für einen Job geeignet gemacht und man hier nichts mehr machen kann?

Grüße,
Jura

Beitrag von poldi (Specialist / 116 / 0 / 0 ) »
Hallo Jura!

Zunächst ein Quelltextbeispiel.

REPORT zsntest.
type-pools: slis.
tables: usr02.
data: it_usr02 type standard table of usr02,
it_fieldcat type lvc_t_fcat.
select * from usr02 up to 5 rows into table it_usr02.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'USR02'
TABLES
t_outtab = it_usr02.

Bei der Jobeinplanung mit der SM36 werden dann beim STEP die PRINT-Parameter wie Dreucker und nicht sofort ausgeben mitgeteilt ... eigentlich ganz einfach.

Gruß,
Wilfried
Wir sind lustig und haben es gar nicht nötig!

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
ÄHM,
wieso gibst du da bei print was mit?
las das mal ganz weg und starte das programm einfach so im Hintergrund.
Der macht das dann Automatisch.

Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
Hallo Jura,
ich weiss, ich bin etwas spät, aber ich habe mir mal einen FuBa für diesen Zweck geschrieben, der meines Wissens so ziemlich mit allem klar kommt und einfach aufzurufen ist.
Vielleicht hilft er Dir ja:

Code: Alles auswählen.

function z_list_table.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(I_TABLE) TYPE  ANY TABLE
*"     VALUE(I_ZEBRA) TYPE  LVC_ZEBRA
*"     VALUE(I_ROWSEP) TYPE  ZROW_SEP
*"----------------------------------------------------------------------
  data:
    lv_intensiv type i.
  field-symbols:
    <ls_zeile> type any.
  format reset.
  loop at i_table[] assigning <ls_zeile>.
    at first.
      uline.
      perform write_headerline using <ls_zeile>.
      lv_intensiv = 1.
    endat.
    if i_zebra is initial.
      format color off intensified off.
    else.
      lv_intensiv = ( lv_intensiv + 1 ) mod 2.
      format color col_normal intensified = lv_intensiv.
    endif.
    perform write_line using <ls_zeile> i_rowsep.
    at last.
      if i_rowsep is initial.
        uline.
      endif.
    endat.
  endloop.
endfunction.

*&--------------------------------------------------------------------*
*&      Form  write_line
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->VALUE(LP_LItext
*      -->VALUE(LP_ROtext)
*---------------------------------------------------------------------*
form write_line using value(lp_line) type any
                      value(lp_rowsep) type xfeld.
  data:
    lv_index type i,
    lr_edescr type ref to cl_abap_elemdescr,
    lr_cast type ref to cx_sy_move_cast_error,
    lv_string type string.
  field-symbols:
    <ls_field> type any,
    <ls_outlen> type i.
  lv_index = 1.
  assign component lv_index of structure lp_line to <ls_field>.
  while sy-subrc is initial.
    if lv_index = 1.
      write:
        / sy-vline no-gap.
    endif.
    try.
        lr_edescr ?= cl_abap_typedescr=>describe_by_data( <ls_field> ).
        case lr_edescr->type_kind.
          when cl_abap_elemdescr=>typekind_date.
            assign 10 to <ls_outlen>.
          when cl_abap_elemdescr=>typekind_string.
            assign 50 to <ls_outlen>.
          when others.
            assign lr_edescr->output_length to <ls_outlen>.
        endcase.
        write:
          at (<ls_outlen>) <ls_field> no-gap, sy-vline no-gap.
        add 1 to lv_index.
      catch cx_sy_move_cast_error into lr_cast.
        concatenate lr_cast->source_typename '->'
          lr_cast->target_typename
          into lv_string separated by space.
        perform fehler
          using 'WRITE_LINE' 'CX_SY_MOVE_CAST_ERROR' lv_string
                'X' sy-batch.
      catch cx_root. "all other
        perform fehler using 'WRITE_LINE' 'CX_ROOT' <ls_field>
                             'X' sy-batch.
      cleanup.
*     leave while loop
        lv_index = 9999999999.
    endtry.
    assign component lv_index of structure lp_line to <ls_field>.
  endwhile.
  write:
    at sy-linsz sy-vline.
  if not lp_rowsep is initial.
    uline.
  endif.
endform. "Write_line

*&--------------------------------------------------------------------*
*&      Form  fehler
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->VALUE(LP_FOtext
*      -->VALUE(LP_VAtext
*      -->VALUE(LP_TEtext
*---------------------------------------------------------------------*
form fehler using value(lp_form) type csequence
                  value(lp_fehlerklasse) type csequence
                  value(lp_value) type any
                  value(lp_liste) type zchar1flag
                  value(lp_email) type zchar1flag.
* Diese Prozedur bzw. ihre Aufrufe kann später durch die zentrale
* Fehlerklasse ersetzt werden
  data:
    lv_wert type z_zeile.
  write lp_value to lv_wert.                                "#EC *
  shift lv_wert left deleting leading space.
  call function 'Z_ERRORMSG'
    exporting
      lp_part1 = lp_form
      lp_part2 = lp_fehlerklasse
      lp_part3 = lv_wert
      lp_zeile = '&1: Fehler &2 aufgetreten bei &3!'
      lp_liste = lp_liste
      lp_email = lp_email.
endform. "Fehler

*&--------------------------------------------------------------------*
*&      Form  write_headerline
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->VALUE(LP_LItext
*---------------------------------------------------------------------*
form write_headerline using value(lp_line) type any.
  types:
    begin of lt_dd04t,
      reptext type dd04t-reptext,
      scrtext_s type dd04t-scrtext_s,
      scrtext_m type dd04t-scrtext_m,
      scrtext_l type dd04t-scrtext_l,
    end of lt_dd04t.
  data:
    lr_sdescr type ref to cl_abap_structdescr,
    lv_index type i,
    lv_reptext type reptext,
    lr_edescr type ref to cl_abap_elemdescr,
    lv_dd04t type lt_dd04t,
    lv_len type i,
    lr_cast type ref to cx_sy_move_cast_error,
    lv_string type string.
  field-symbols:
    <ls_field> type any,
    <ls_outlen> type i,
    <lr_compds> type abap_compdescr.
  format reset.
  format color col_heading intensified on.
  try.
      lr_sdescr ?= cl_abap_typedescr=>describe_by_data( lp_line ).
      lv_index = 1.
      assign component lv_index of structure lp_line to <ls_field>.
      while sy-subrc is initial.
        if lv_index = 1.
          uline.
          write:
            / sy-vline no-gap.
        endif.
        clear:
          lv_reptext.
        lr_edescr ?=  cl_abap_typedescr=>describe_by_data( <ls_field> ).
        assign lr_edescr->output_length to <ls_outlen>.
        case lr_edescr->type_kind.
          when cl_abap_typedescr=>typekind_date.
            assign 10 to <ls_outlen>.
          when cl_abap_typedescr=>typekind_string.
            assign 50 to <ls_outlen>.
          when others.
*           NOP
        endcase.
        if not lr_edescr->help_id is initial.
          select single reptext scrtext_s scrtext_m scrtext_l
            into corresponding fields of lv_dd04t
            from dd04t
            where rollname = lr_edescr->help_id
              and ddlanguage = sy-langu
              and as4local = 'A' "only activated
         and as4vers = '0000'. "not used is written at 2005-08-08 by SAP
          if not sy-subrc is initial.
*           NOP, not activated
          else.
            lv_len = strlen( lv_dd04t-reptext ).
            if lv_len > 0 and lv_len <= <ls_outlen>.
              lv_reptext = lv_dd04t-reptext.
            else.
              lv_len = strlen( lv_dd04t-scrtext_l ).
              if lv_len > 0 and lv_len <= <ls_outlen>.
                lv_reptext = lv_dd04t-scrtext_l.
              else.
                lv_len = strlen( lv_dd04t-scrtext_m ).
                if lv_len > 0 and lv_len <= <ls_outlen>.
                  lv_reptext = lv_dd04t-scrtext_m.
                else.
*                 no length check
                  lv_reptext = lv_dd04t-scrtext_s.
                endif.
              endif.
            endif.
          endif.
        endif.
        if lv_reptext is initial.
*         not activated or no DDIC type => we use the field name
          read table lr_sdescr->components[] index lv_index
            assigning <lr_compds>.
          if sy-subrc is initial.
            lv_reptext = <lr_compds>-name.
          else.
           perform fehler using 'WRITE_HEADERLINE' 'NOT_FOUND' lv_index
                                'X' sy-batch.
          endif.
        endif.
        write:
          at (<ls_outlen>) lv_reptext no-gap, sy-vline no-gap.
        add 1 to lv_index.
        assign component lv_index of structure lp_line to <ls_field>.
      endwhile.
      write:
        at sy-linsz sy-vline.
      uline.
    catch cx_sy_move_cast_error into lr_cast.
      concatenate lr_cast->source_typename '->'
        lr_cast->target_typename
        into lv_string separated by space.
      perform fehler
        using 'WRITE_HEADERLINE' 'CX_SY_MOVE_CAST_ERROR' lv_string
              'X' sy-batch.
    catch cx_root. "all other
      perform fehler using 'WRITE_HEADERLINE' 'CX_ROOT' <ls_field>
                           'X' sy-batch.
    cleanup.
*     NOP
  endtry.
endform. "Write_headerline
ZCHAR1FLAG hat den Typ XFLAG, ZROW_SEP ebenso.

EDIT: Release 6.20

MfG
Thomas R.

Vergleichbare Themen

5
Antw.
715
Views
FUBA mit FUBA RSPO_OUTPUT_DEVICEDATA eine Liste ausgeben
von Thomas E » 06.05.2021 12:49 • Verfasst in ABAP® Core
0
Antw.
887
Views
Liste.doc (Textfile) aus UNICODE-System erstellen
von niko022 » 18.01.2007 11:09 • Verfasst in ABAP® Core
4
Antw.
16073
Views
Mit ABAP eine Excel-Liste erstellen
von KaOestreich » 07.01.2009 15:09 • Verfasst in Tips + Tricks & FAQs
2
Antw.
8400
Views
Transportauftrag über Fuba erstellen
von jondahl11 » 04.04.2007 15:06 • Verfasst in ABAP® für Anfänger
2
Antw.
8239
Views
FuBa um IDOC ORDERS zu erstellen
von Andreas G » 13.09.2006 13:25 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

RFC FuBa Call - Korrupte Daten
vor einer Stunde von a-dead-trousers 4 / 45
alv_grid aktualisieren
vor 2 Stunden von Egzon gelöst 4 / 79
SELECT CHAR16 in CHAR12-Feld
vor 11 Stunden von Shortcut IT 3 / 42

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

RFC FuBa Call - Korrupte Daten
vor einer Stunde von a-dead-trousers 4 / 45
alv_grid aktualisieren
vor 2 Stunden von Egzon gelöst 4 / 79
SELECT CHAR16 in CHAR12-Feld
vor 11 Stunden von Shortcut IT 3 / 42

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170