weiteres feld

Getting started ... Alles für einen gelungenen Start.
18 Beiträge • Vorherige Seite 2 von 2 (current)
18 Beiträge Vorherige Seite 2 von 2 (current)

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
ich weiss einfach nicht, wie ich dir danken kann. einfach super von dir JHM, vielen vielen dank für deine Hilfe
hier noch der code

Code: Alles auswählen.

PROGRAM zliefervolu.

*---------------------------------------------------------------------*
* Definition                                                          *
*---------------------------------------------------------------------*
TABLES: likp, "Vertriebsbeleg: Lieferung: Kopfdaten
        lips, "Vertriebsbeleg: Lieferung: Positionsdaten
        kna1, "Kundenstamm (allgemeiner Teil)
        marm. "Mengeneinheiten zum Material

FIELD-SYMBOLS: <fs_data> TYPE REF TO data,
               <fs_1> TYPE ANY TABLE,
               <fs_2> TYPE ANY,
               <fs_3>,
               <fs_4>.

DATA: BEGIN OF i_vbeln OCCURS 1,
      faktor(5) TYPE n,
      END OF i_vbeln.

DATA: BEGIN OF v_lief OCCURS 1,
      faktor TYPE string,
      END OF v_lief.

DATA: ok_code LIKE sy-ucomm, "Bildschirmbilder, Funktionscode, der PAI ausgelöst hat
      i_lieferdatenn TYPE TABLE OF zvoludata WITH HEADER LINE INITIAL SIZE 2, "Interne Tabelle speichern von Hauptdaten
      i_lieferdaten TYPE TABLE OF zvoludata WITH HEADER LINE INITIAL SIZE 2, "Interne Tabelle2 speichern von Hauptdaten
      v_debittext TYPE string, "Kundentext
      v_debitnulltext TYPE string,"Kundennummer ohne führende Nullen
      v_debit TYPE kunnr, "Kundennummer zum vergleichen
      v_umvkz TYPE string,
      v_lifg TYPE i,
      v_datumkl TYPE wadat,
      v_datumgr TYPE wadat,
      v_faktor(5) TYPE n,
      v_tabix TYPE sy-tabix,
      v_volurech TYPE string, "Volumenberechnung
      v_faktors TYPE string,
      v_datum TYPE string,
      v_count TYPE i,
      lt_fieldcatalog TYPE lvc_t_fcat,
      ls_fieldcatalog TYPE lvc_s_fcat,
      new_table TYPE REF TO data,
      new_line  TYPE REF TO data,
      lt_data TYPE REF TO data,
      v_datumlow(10) TYPE c,
      v_datumhigh(10) TYPE c,
      v_text TYPE string,
      name_catolog TYPE lvc_t_fcat, "Ändern von Spaltenname
      g_container TYPE scrfname VALUE 'BCALV_GRID_CONTROL',
      grid1 TYPE REF TO cl_gui_alv_grid, "ALV Grid Definition
      g_fieldname(100) TYPE c,
      g_custom_container TYPE REF TO cl_gui_custom_container.

SELECT-OPTIONS: s_kunnr FOR likp-kunnr, "Lieferung
                s_wadat FOR likp-wadat OBLIGATORY, "Geplantes Datum der Warenbewegung
                s_vbeln FOR likp-vbeln. "Warenempfänger

*---------------------------------------------------------------------*
* Main Program                                                        *
*---------------------------------------------------------------------*
START-OF-SELECTION.

  CLEAR: likp.
  REFRESH: i_lieferdaten.
* Selektion Vertriebsbeleg: Lieferung: Kopfdaten
  SELECT * FROM likp WHERE vbeln IN s_vbeln
                     AND wadat IN s_wadat
                     AND kunnr IN s_kunnr
                     ORDER BY vbeln.

    CLEAR: i_lieferdaten.

    MOVE likp-kunnr TO i_lieferdaten-kunnr.

    CLEAR: lips.
*   Selektion Vertriebsbeleg: Lieferung: Positionsdaten
    SELECT * FROM lips WHERE vbeln EQ likp-vbeln.

      CLEAR: marm.
*     Selektion Mengeneinheiten zum Material
      SELECT SINGLE * FROM marm WHERE matnr EQ lips-matnr
                                AND meinh EQ lips-vrkme.

      CLEAR: v_volurech.
*     Volumen = Zähler für die Umrechnung in Basismengeneinheiten * Tatsächlich gelieferte Menge in VME * Höhe
      v_volurech = lips-lfimg * marm-hoehe.

      MOVE v_volurech TO i_lieferdaten-volomen.
      MOVE lips-lfimg TO i_lieferdaten-lfimg.
      MOVE lips-umvkz TO i_lieferdaten-umvkz.
      APPEND i_lieferdaten.

*     Vorhandene Faktor abspeichern
      MOVE lips-umvkz TO i_vbeln-faktor.
      APPEND i_vbeln.
    ENDSELECT.

*    MOVE likp-vbeln TO lieferschein-vbeln.
*    APPEND lieferschein.

  ENDSELECT.

  CLEAR: i_vbeln, i_lieferdaten.
  SORT i_vbeln BY faktor.
  SORT i_lieferdaten BY kunnr umvkz ASCENDING.

*------------------------*
* Matrixdaten füllen     *
*------------------------*
  LOOP AT i_lieferdaten.

    IF i_lieferdaten-kunnr NE v_debit.

      IF v_count NE 0.
        APPEND i_lieferdatenn.
      ENDIF.
      CLEAR: i_lieferdatenn.
      MOVE i_lieferdaten-kunnr TO v_debit.
      MOVE i_lieferdaten-umvkz TO v_umvkz.
      MOVE-CORRESPONDING i_lieferdaten TO i_lieferdatenn.
      v_count = v_count + 1.

    ELSEIF i_lieferdaten-kunnr EQ v_debit AND i_lieferdaten-umvkz EQ v_umvkz.

      ADD i_lieferdaten-lfimg TO i_lieferdatenn-lfimg.
      ADD i_lieferdaten-volomen TO i_lieferdatenn-volomen.

    ELSEIF i_lieferdaten-kunnr EQ v_debit AND i_lieferdaten-umvkz NE v_umvkz.

      APPEND i_lieferdatenn.
      CLEAR: i_lieferdatenn.
      MOVE i_lieferdaten-umvkz TO v_umvkz.
      MOVE-CORRESPONDING i_lieferdaten TO i_lieferdatenn.

    ENDIF.

  ENDLOOP.

  APPEND i_lieferdatenn.

*------------------------*
* Datumsfeld             *
*------------------------*
  MOVE s_wadat-low TO v_datumkl.
  v_datumlow = v_datumkl+6.
  WRITE '.' TO v_datumlow+2.
  WRITE v_datumkl+4(2) TO v_datumlow+3.
  WRITE '.' TO v_datumlow+5.
  WRITE v_datumkl(4) TO v_datumlow+6.


  LOOP AT s_wadat WHERE high IS NOT INITIAL.
    MOVE s_wadat-high TO v_datumgr.
  ENDLOOP.

  v_datumhigh = v_datumgr+6.
  WRITE '.' TO v_datumhigh+2.
  WRITE v_datumgr+4(2) TO v_datumhigh+3.
  WRITE '.' TO v_datumhigh+5.
  WRITE v_datumgr(4) TO v_datumhigh+6.

  IF v_datumgr IS NOT INITIAL.
    CONCATENATE v_datumlow '-' v_datumhigh INTO v_datum.
  ELSE.
    MOVE v_datumlow TO v_datum.
  ENDIF.

  CLEAR v_text.
  v_text = 'DATUM'.
  MOVE v_text TO v_lief-faktor.
  APPEND v_lief.

*------------------------*
* Faktorfelder           *
*------------------------*
  CLEAR: v_count.
  LOOP AT i_vbeln.

    IF i_vbeln-faktor NE v_faktor.
      MOVE i_vbeln-faktor TO v_faktor.
      PACK i_vbeln-faktor TO v_faktors.
      CONDENSE v_faktors.
      MOVE v_faktors TO v_lief-faktor.
      v_count = v_count + 1.
      APPEND v_lief.
    ENDIF.

  ENDLOOP.

  CLEAR v_text.
  v_text = 'VOLUMEN'.
  MOVE v_text TO v_lief-faktor.
  APPEND v_lief.

  CLEAR: v_lief.

*-----------------------------*
* Erstellen von Dym. Struktur *
*-----------------------------*
  LOOP AT v_lief.
    IF v_lief-faktor EQ 'DATUM' OR v_lief-faktor EQ 'VOLUMEN'.
      CLEAR: ls_fieldcatalog.
      ls_fieldcatalog-fieldname = v_lief-faktor.
      IF v_lief-faktor EQ 'DATUM'.
        ls_fieldcatalog-coltext = v_datum.
*        ls_fieldcatalog-inttype = .
        ls_fieldcatalog-outputlen = '30'.
      ELSEIF v_lief-faktor EQ 'VOLUMEN'.
        ls_fieldcatalog-coltext = 'Volumen'.
        ls_fieldcatalog-outputlen = '10'.
      ENDIF.

      APPEND ls_fieldcatalog TO lt_fieldcatalog.
    ELSE.
      CLEAR: ls_fieldcatalog.
      ls_fieldcatalog-fieldname = v_lief-faktor.
      ls_fieldcatalog-coltext = v_lief-faktor.
      ls_fieldcatalog-outputlen = '6'.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
    ENDIF.
  ENDLOOP.

  ASSIGN lt_data TO <fs_data>.

  IF v_count NE 0.
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog           = lt_fieldcatalog
      IMPORTING
        ep_table                  = <fs_data>
      EXCEPTIONS
        generate_subpool_dir_full = 1
        OTHERS                    = 2.

    IF sy-subrc <> 0.
*
*
*
    ENDIF.

*-----------------------------*
* Matrix füllen               *
*-----------------------------*

    ASSIGN <fs_data>->* TO <fs_1>.

    CREATE DATA new_line LIKE LINE OF <fs_1>.

    ASSIGN new_line->* TO <fs_2>.

    ASSIGN i_lieferdatenn TO <fs_3>.

    CLEAR: v_count, v_debit, i_lieferdatenn, v_volurech.

    APPEND i_lieferdatenn.

    LOOP AT i_lieferdatenn.
      CLEAR: kna1.
*     Selektion Kundenstamm (allgemeiner Teil)
      SELECT SINGLE * FROM kna1 WHERE kunnr EQ i_lieferdatenn-kunnr.

      IF i_lieferdatenn-kunnr NE v_debit.

        IF v_count NE 0.
          CONCATENATE '<FS_2>-' 'VOLUMEN' INTO g_fieldname.
          ASSIGN (g_fieldname) TO <fs_3>.
          <fs_3> = v_volurech.

          INSERT <fs_2> INTO TABLE <fs_1>.
          CLEAR:<fs_2>.
        ENDIF.

        MOVE i_lieferdatenn-kunnr TO v_debit.
        v_count = v_count + 1.

        CONCATENATE '<FS_2>-' 'DATUM' INTO g_fieldname.
        ASSIGN (g_fieldname) TO <fs_3>.
        PACK i_lieferdatenn-kunnr TO v_debitnulltext.
        CONDENSE v_debitnulltext.
        CONCATENATE v_debitnulltext ` ` kna1-name1 INTO v_debittext.
        <fs_3> = v_debittext.

        v_umvkz = i_lieferdatenn-umvkz.
        CONCATENATE '<FS_2>-' v_umvkz INTO g_fieldname.
        ASSIGN (g_fieldname) TO <fs_3>.
        v_lifg = i_lieferdatenn-lfimg.
        <fs_3> = v_lifg.

        v_volurech = v_volurech + i_lieferdatenn-volomen.

      ELSEIF i_lieferdatenn-kunnr EQ v_debit.

        CLEAR v_umvkz.
        v_umvkz = i_lieferdatenn-umvkz.
        CONCATENATE '<FS_2>-' v_umvkz INTO g_fieldname.
        ASSIGN (g_fieldname) TO <fs_3>.
        v_lifg = i_lieferdatenn-lfimg.
        <fs_3> = v_lifg.

        v_volurech = v_volurech + i_lieferdatenn-volomen.

      ENDIF.

    ENDLOOP.

  ELSE.
    CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT_LO'
      EXPORTING
        titel        = text-tit
        textline1    = text-feh
        start_column = 15 "Abstand von Links
        start_row    = 6. "Abstand von Oben
  ENDIF.

  CALL SCREEN 100.


END-OF-SELECTION.
*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
MODULE pbo OUTPUT.
  SET PF-STATUS 'MAIN100'.
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
           EXPORTING container_name = g_container.
    CREATE OBJECT grid1
           EXPORTING i_parent = g_custom_container.

*   ALV Methode aufruf für Ausgabe
    CALL METHOD grid1->set_table_for_first_display
*      EXPORTING
*        i_structure_name = 'lvc_t_fcat'
      CHANGING
        it_outtab        = <fs_1>
        it_fieldcatalog  = lt_fieldcatalog.
  ENDIF.
ENDMODULE.                    "PBO OUTPUT
*---------------------------------------------------------------------*
*       MODULE PAI INPUT                                              *
*---------------------------------------------------------------------*
MODULE pai INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=>dispatch.
  CASE ok_code.
    WHEN 'EXIT'.
      PERFORM exit_program.
    WHEN OTHERS.
*     do nothing
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                    "PAI INPUT
*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
FORM exit_program.
*  CALL METHOD G_CUSTOM_CONTAINER->FREE.
*  CALL METHOD CL_GUI_CFW=>FLUSH.
  LEAVE PROGRAM.
ENDFORM.                    "EXIT_PROGRAM

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


Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
Noch eine Frage, wie kann ich die spalte datum blau färben?

Beitrag von JHM (Top Expert / 1212 / 2 / 202 ) »
kostonstyle hat geschrieben:Noch eine Frage, wie kann ich die spalte datum blau färben?
Must du im Fieldcat angeben:

Code: Alles auswählen.

IF v_lief-faktor EQ 'DATUM'. 
        ls_fieldcatalog-coltext = v_datum. 
        ls_fieldcatalog-outputlen = '30'. 
       ls_fieldcatalog-emphasize = 'CXYZ'.
Wobei gilt:
x: Farbnummer
y: intensivierte Darstellung an/aus
z: inverse Darstellung an/aus

Wenn du zu xyz Fragen hast schau dir die F1-Hilfe zum Befehl FORMAT an.
Gruß Hendrik

Vergleichbare Themen

2
Antw.
3019
Views
Feld sperren, wenn in and. Feld gerade etwas eingegeben wird
von kbit100 » 18.07.2018 11:41 • Verfasst in ABAP® für Anfänger
0
Antw.
1570
Views
Setze EMARA Feld in Bapi bei IDOC Verarbeitung. Feld aber nachher leer
von Woelli » 12.02.2021 16:32 • Verfasst in ABAP® Core
0
Antw.
2303
Views
32
Antw.
4603
Views
Feld belegen
von 1337 » 02.12.2013 08:32 • Verfasst in ABAP® für Anfänger
0
Antw.
1476
Views
Feld kursx_m
von tt_bd » 24.01.2014 09:49 • Verfasst in Financials

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 7220
Meine Inbox
vor einer Woche von Rabea1103 1 / 5209
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 6347
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 11786

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

IF mit AND und OR
vor einer Woche von GastX 6 / 7220
Meine Inbox
vor einer Woche von Rabea1103 1 / 5209
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 6347
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 11786