Overblog
Folge diesem Blog Administration + Create my blog
SAPManDoo - SAP Resource

Der vorliegende Blog enthält von mir im Laufe meiner beruflichen Tätigkeit als SAP-Berater zusammengetragene Informationen / Beispiel-Codings zum Themenkreis SAP, speziell FI/CO.

Kostenartentexte und Sachkontentexte in andere Sprache kopieren

Veröffentlicht am 4. Dezember 2017 von sapmandoo in SAP Reports, FI, CO, Basis-Entwicklung allg.

Das hat vermutlich jeder schon mal erlebt: man meldet sich in einer Sprache <> DE im System an und bei der Anzeige von Sachkonten und/oder Kostenarten fehlen die Texte, weil bei der Anlage von neuen Konten das Übersetzen vergessen bzw. unterlassen wurde.

Anbei zwei Reports, die Kostenarten- und Sachkontentexte von einer Quellsprache in eine Zielsprache kopieren. Ein Anwendungsfall könnte bspw. sein, dass die englischen Texte in andere (Fremd-) Sprachen kopiert werden sollen, damit die ausländischen Kollegen in ihren Reports wenigstens die englischen Kontenbezeichnungen sehen...

 

Kopieren von Sachkontentexten

 

REPORT z_copy_sako_texts
       NO STANDARD PAGE HEADING LINE-SIZE 255.

*******************************************************************
* Rohde 01/2010
*******************************************************************
* Kopieren(!) von Sachkonten-Texten (Kurz und Langtext) von einer
* Sprache in eine andere. So lassen sich z.B. die englischen
* Sachkontenbezeichnungen auch in andere Sprachen kopieren, damit
* man bspw. bei Anmeldung in Spanisch keine leeren Sachkontentexte
* vorfindet. Die Betonung liegt auf KOPIEREN, nicht übersetzen,
* so schlau ist das Programm leider noch nicht!!!!
* Die Änderungen werden per Batch-Input durchgeführt. Bestehende
* Texte in der Zielsprache werden NICHT überschrieben.
*******************************************************************
TABLES: skat, ska1, t001.

INCLUDE bdcrecx1.

SELECTION-SCREEN ULINE.
SELECT-OPTIONS: so_saknr FOR skat-saknr.          "Sachkonten
* Achtung: die Angabe Buchungskreis wird nur zur Ermitlung des
* Kontenplans benötigt. Das Programm muss nicht pro Buchungskreis
* laufen, da die Texte buchungskreisunabhängig sind!!!!
PARAMETERS: pa_bukrs LIKE t001-bukrs OBLIGATORY.  "Buchungskreis
PARAMETERS: pa_qlang LIKE sy-langu OBLIGATORY.    "Quell-Sprache
PARAMETERS: pa_zlang LIKE sy-langu OBLIGATORY.    "Ziel-Sprache
PARAMETERS: pa_test AS CHECKBOX DEFAULT 'X'.      "Testlauf

DATA: i_skat TYPE TABLE OF skat.
DATA: wa_skat TYPE skat.

START-OF-SELECTION.

  IF pa_test IS INITIAL.
    PERFORM open_group.
  ENDIF.
* Buchungskreisdaten inkl. Kontenplan holen
  SELECT SINGLE * FROM t001 WHERE bukrs = pa_bukrs.
  CHECK sy-subrc = 0.
  SELECT * FROM  skat   INTO TABLE i_skat
         WHERE  spras  = pa_qlang
         AND    ktopl  = t001-ktopl
         AND    saknr IN so_saknr.
  LOOP AT i_skat INTO wa_skat.
    SELECT SINGLE COUNT(*) FROM  skat
           WHERE  spras  = pa_zlang
           AND    ktopl  = wa_skat-ktopl
           AND    saknr  = wa_skat-saknr.
    IF sy-subrc = 0.
      WRITE: / 'Konto', wa_skat-saknr,
               'Text in Sprache', pa_zlang, 'schon vorhanden'.
    ELSE.
      PERFORM protokoll.
      IF pa_test IS INITIAL.
        PERFORM fs00.
      ENDIF.
    ENDIF.
  ENDLOOP.
  IF pa_test IS INITIAL.
    PERFORM close_group.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  fs00
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fs00.

  PERFORM bdc_dynpro      USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=TAB04'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'GLACCOUNT_SCREEN_KEY-SAKNR'.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_KEY-SAKNR'
                                wa_skat-saknr.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_KEY-BUKRS'
                                pa_bukrs.
  PERFORM bdc_dynpro      USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=ACC_MOD'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'GLACCOUNT_SCREEN_KEY-SAKNR'.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_KEY-SAKNR'
                                wa_skat-saknr.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_KEY-BUKRS'
                                pa_bukrs.
  PERFORM bdc_dynpro      USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=2105_P++'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'GLACCOUNT_SCREEN_COA-LANGU_KW(01)'.
  PERFORM bdc_dynpro      USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=SAVE'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'GLACCOUNT_SCREEN_COA-TXT50_TX(01)'.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_COA-LANGU_TX(01)'
                                pa_zlang.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_COA-TXT20_TX(01)'
                                wa_skat-txt20.
  PERFORM bdc_field       USING 'GLACCOUNT_SCREEN_COA-TXT50_TX(01)'
                                wa_skat-txt50.
  PERFORM bdc_transaction USING 'FS00'.

ENDFORM.                    "fs00
*&---------------------------------------------------------------------*
*&      Form  PROTOKOLL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM protokoll .
  WRITE: / wa_skat-saknr,
           pa_zlang,
           wa_skat-txt20,
           wa_skat-txt50.

ENDFORM.                    " PROTOKOLL

Kopieren von Kostenartentexten

REPORT  z_copy_kstar_texts.

*******************************************************************
* Rohde 01/2010
*******************************************************************
* Kopieren(!) von Kostenarten-Texten (Kurz und Langtext) von einer
* Sprache in eine andere. So lassen sich z.B. die englischen
* Kostenartenbezeichnungen auch in andere Sprachen kopieren, damit
* man bspw. bei Anmeldung in Spanisch keine leeren Kostenartentexte
* vorfindet. Die Betonung liegt auf KOPIEREN, nicht übersetzen,
* so schlau ist das Programm leider noch nicht!!!!
* Die Änderungen werden per BAPI durchgeführt. Bestehende
* Texte in der Zielsprache werden NICHT überschrieben.
*******************************************************************

TABLES: csku, tka01.

DATA: git_csku TYPE TABLE OF csku,
      gs_csku  TYPE csku.
DATA: git_textmdco  TYPE TABLE OF textmdco,
      gs_textmdco    TYPE textmdco.

*******************************************************************
PARAMETERS: pa_kokrs LIKE tka01-kokrs OBLIGATORY.  "Kostenrech.kreis
SELECT-OPTIONS: so_kstar FOR csku-kstar.           "Kostenart
PARAMETERS: pa_qlang LIKE csku-spras OBLIGATORY,   "Quell-Sprache
            pa_zlang LIKE csku-spras OBLIGATORY.   "Ziel-Sprache
PARAMETERS: pa_test AS CHECKBOX DEFAULT 'X'.       "Testlauf
*******************************************************************

*******************************************************************
START-OF-SELECTION.
*******************************************************************

  SELECT SINGLE * FROM tka01 WHERE kokrs = pa_kokrs.
  IF sy-subrc NE 0.
    MESSAGE e600(fr) WITH 'Kostenrechungskreis' pa_kokrs
                          'ungültig'.
  ENDIF.

  SELECT * FROM  csku INTO TABLE git_csku
         WHERE  spras  = pa_qlang
         AND    ktopl  = tka01-ktopl
         AND    kstar IN so_kstar.

  LOOP AT git_csku INTO gs_csku.
    SELECT SINGLE * FROM  csku
           WHERE  spras  = pa_zlang
           AND    ktopl  = gs_csku-ktopl
           AND    kstar  = gs_csku-kstar.
    IF sy-subrc = 0.
      SUMMARY.
      WRITE: / 'Text zu Kostenart',
             gs_csku-kstar,
             'in Sprache', pa_zlang,
             'schon vorhanden'.
    ELSE.
      REFRESH git_textmdco.
      CLEAR   gs_textmdco.
      gs_textmdco-spras = pa_zlang.
      gs_textmdco-ktext = gs_csku-ktext.
      gs_textmdco-ltext = gs_csku-ltext.
      APPEND gs_textmdco TO git_textmdco.
      IF pa_test = space.
        PERFORM update_kstar_texts.
      ELSE.
        DETAIL.
        WRITE: / gs_csku-ktopl,
                 gs_csku-kstar,
                 gs_textmdco-spras,
                 gs_textmdco-ktext,
                 gs_textmdco-ltext.
      ENDIF.
    ENDIF.
  ENDLOOP.


*&---------------------------------------------------------------------*
*&      Form  update_kstar_texts
*&---------------------------------------------------------------------*
*       BAPI-Aufruf Ändern Kostenartentext
*----------------------------------------------------------------------*
FORM update_kstar_texts.

  CALL FUNCTION 'K_COSTELEMENT_CHANGE_TEXT'
    EXPORTING
      ktopl        = gs_csku-ktopl
      kstar        = gs_csku-kstar
    TABLES
      texttable    = git_textmdco
    EXCEPTIONS
      not_found    = 1
      foreign_lock = 2
      OTHERS       = 3.
  IF sy-subrc <> 0.
    SUMMARY.
    WRITE: 'Fehler', sy-subrc, 'beim Update Kostenart', gs_csku-kstar.
  ELSE.
    DETAIL.
    WRITE: 'Kostenart', gs_csku-kstar, 'aktualisiert'.
  ENDIF.

ENDFORM.                    "update_kstar_texts
Kommentare

Standardtexte in andere Sprachen kopieren

Veröffentlicht am 4. Dezember 2017 von sapmandoo in Basis-Entwicklung allg., SAP Reports

Anbei ein kleines Hilfstool, mit dem Standardtexte (SO10) in anderen Sprachen angelegt werden können. Es versteht sich wohl von selbst, dass die Texte nur kopiert und nicht übersetzt werden. Das Verfahren eignet sich z.B. für die Vervielfältigung von Adress-Textbausteinen in andere Sprachen...

Beispiel: "Kopiere alle Texte ZADR*, Text-ID ADRS von DE nach IT"

* Standardtexte (SO10) von einer Sprache in eine
* andere kopieren (nur kopieren[!] nicht übersetzen[!])
* Wer möchte, kann natürlich gerne einen Übersetzungsroboter
* dazubauen!!!

REPORT yytxcopy
       NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES: rssce, stxh.
INCLUDE bdcrecx1.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS: so_txnam FOR rssce-tdname OBLIGATORY.  "Text-name
PARAMETERS:     pa_tdid LIKE rssce-tdid OBLIGATORY, "Text-ID
                pa_slang LIKE sy-langu OBLIGATORY   "Source language
                         DEFAULT sy-langu,
                p_tlang  LIKE sy-langu OBLIGATORY.  "Target language


START-OF-SELECTION.

  PERFORM open_group.

  SELECT        * FROM  stxh
         WHERE  tdobject  = 'TEXT'
         AND    tdname   IN so_txnam
         AND    tdid      = pa_tdid
         AND    tdspras   = pa_slang.
    PERFORM so10.
  ENDSELECT.
  PERFORM close_group.

*&---------------------------------------------------------------------*
*&      Form  so10
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM so10.
  PERFORM bdc_dynpro      USING 'SAPMSSCE' '1100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSSCE-TDSPRAS'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=EDIT'.
  PERFORM bdc_field       USING 'RSSCE-TDNAME'
                                stxh-tdname.
  PERFORM bdc_field       USING 'RSSCE-TDID'
                                stxh-tdid.
  PERFORM bdc_field       USING 'RSSCE-TDSPRAS'
                                stxh-tdspras.
  PERFORM bdc_dynpro      USING 'SAPLSTXX' '1100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSTXT-TXLINE(02)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=TXNA'.
  PERFORM bdc_dynpro      USING 'SAPLSTXX' '1111'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSTXT-TDSPRAS'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=PPUP'.
  PERFORM bdc_field       USING 'RSTXT-TDNAME'
                                stxh-tdname.
  PERFORM bdc_field       USING 'RSTXT-TDID'
                                stxh-tdid.
  PERFORM bdc_field       USING 'RSTXT-TDSPRAS'
                                p_tlang.
  PERFORM bdc_dynpro      USING 'SAPLSTXX' '1100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSTXT-TXLINE(02)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=TXBA'.
  PERFORM bdc_dynpro      USING 'SAPMSSCE' '1100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSSCE-TDNAME'.
  PERFORM bdc_dynpro      USING 'SAPMSSCE' '1100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'RSSCE-TDSPRAS'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=TXBA'.
  PERFORM bdc_field       USING 'RSSCE-TDNAME'
                                stxh-tdname.
  PERFORM bdc_field       USING 'RSSCE-TDID'
                                stxh-tdid.
  PERFORM bdc_field       USING 'RSSCE-TDSPRAS'
                                stxh-tdspras.
  PERFORM bdc_transaction USING 'SO10'.
  REFRESH bdcdata.
ENDFORM.                                                    "so10
Kommentare

Entwicklung des gleitenden Durchschnittspreises (GLD) eines Materials / Artikels

Veröffentlicht am 4. Dezember 2017 von sapmandoo in MM

Nachfolgend ein Link von der Tricktresor-Seite, welcher zwei Reports vorstellt, die die Entwicklung des GLDs darstellen. Als MMler steht man oft vor der Frage, wie sich der GLD eines Materials bzw. Artikels im SAP Retail so (falsch) entwickeln konnte. Den "Übeltäter-Vorgang" zu entlarven ist nicht immer einfach - die beiden im Artikel genannten Reports können helfen, dem Spuk auf die Schliche zu kommen...

 

Kommentare