Text wird in STXL nicht angelegt mit SAVE_TEXT

Text wird in STXL nicht angelegt mit SAVE_TEXT

Postby Baran1684 » Wed Oct 03, 2012 4:52 pm

Hallo zusammen,

Ich habe ein Programm welches mit die Verpackungsvorschriften anlegt. Leider wird der Text bei Text Positionen nicht übernommen.

Habe deshalb im Anschluss an das Anlegen der Verpackungsvorschriften einen Aufruf geschrieben mit SAVE_TEXT um die Texte anzulegen.

Der Parameter Funktion gibt mir auch ein "I" zurück, was ja heisst wurde angelegt. Leider ist in der Tabelle STXL kein Eintrag vorhanden und dadurch natürlich auch nicht in der Packvorschrift.

Kann mir hier jemand helfen??

gruss

Gerhard


Der Code:
*&---------------------------------------------------------------------*
*& Report ZZPV_PAKVORSCHRIFT
*&
*&---------------------------------------------------------------------*
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(PIKP_IMP) LIKE PIKP STRUCTURE PIKP
*" VALUE(PROP_PIKP_IMP) LIKE PIKP STRUCTURE PIKP
*" VALUE(CMVHUPO_IMP) LIKE CMVHUPO STRUCTURE CMVHUPO
*" REFERENCE(COMMIT) TYPE C DEFAULT C_COMMIT
*" EXPORTING
*" VALUE(PIKP_EXP) LIKE PIKP STRUCTURE PIKP
*" VALUE(CMVHUPO_EXP) LIKE CMVHUPO STRUCTURE CMVHUPO
*" TABLES
*" PIPO_TAB STRUCTURE PIPO OPTIONAL
*" PACKKPS_TAB STRUCTURE PACKKPS OPTIONAL
*&---------------------------------------------------------------------*


REPORT ZZPV_PAKVORSCHRIFT.

TYPE-POOLS : truxs.

DATA: ls_pikp TYPE pikp,
ls_pikp_ext TYPE pikp,
ls_pikp_prop TYPE pikp,
ls_cmvhupo TYPE cmvhupo,
ls_position TYPE bapihupiposition,
lt_pipo TYPE TABLE OF pipo,
we_pipo TYPE pipo,
wa_pipo TYPE TABLE OF pipo,
ls_pipo TYPE pipo.
DATA: ls_return TYPE bapiret2.
DATA: ls_packkps TYPE packkps,
lt_packkps TYPE TABLE OF packkps.
DATA: header TYPE BAPIHUPIHEADER.
DATA: NEWHEADER TYPE THEAD.
DATA: return TYPE BAPIRET2 OCCURS 0.
DATA: POSITIONS TYPE BAPIHUPIPOSITION OCCURS 0.
DATA: i_pobjid TYPE packkp-pobjid.
DATA: LS_PACKPO TYPE PACKPO.
DATA: PACKPO TYPE PACKPO OCCURS 0.
DATA: LS_PACKKP TYPE PACKKP.
DATA: PACKKP TYPE PACKKP OCCURS 0.
DATA: T_HEADER TYPE THEAD.
DATA: T_LINES TYPE TLINE.
DATA: T_LS_LINES TYPE TLINE OCCURS 0.


TYPES :
BEGIN OF ty_tab,
eins TYPE char10,
zwei TYPE char10,
drei TYPE char10,
vier TYPE char10,
fuenf TYPE char10,
sechs TYPE char10,
sieben TYPE c,
END OF ty_tab.

DATA :
TAB TYPE STANDARD TABLE OF ty_tab,
DATEI TYPE FILENAME-FILEINTERN.

DATA :
BEGIN OF TAB_WA,
eins TYPE char10,
zwei TYPE char10,
drei TYPE char10,
vier TYPE char10,
fuenf TYPE char10,
sechs TYPE char10,
sieben TYPE c,
END OF TAB_WA.

DATA: BEGIN OF RET2 OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RET2.


DATA: BEGIN OF wa_pack OCCURS 0.
INCLUDE STRUCTURE pipo.
DATA: END OF wa_pack.

DATA: BEGIN OF wa_text OCCURS 0.
INCLUDE STRUCTURE pipo.
DATA: END OF wa_text.

CLEAR: return[].
CLEAR: wa_pack[].
CLEAR: wa_text[].

********** Hauptteil

CALL FUNCTION 'VHUPO_REFRESH'. " Refresh Globales Memory

PERFORM EXCEL_LESEN. " Einlesen der Excel Tablle

PERFORM KOPFDATEN_FUELLEN. " Kopf der Packvorschrift

PERFORM POSITION_FUELLEN2. " Position der Packvorschrift

PERFORM TEXT_TABLE. " Erläuterungen Packvorschrift


*** Parameter füllen
ls_cmvhupo-nodia = 'X' . " Hintergrund
ls_cmvhupo-contxt = '1' .



ls_pikp_prop-CONTENT = 'Test'.
**** Aufruf BAPI für Packvorschrift

ls_pikp-CONTENT = 'Test'.
ls_pikp-CHECKPROF = '01'.


*** Aufruf Verpackungsvorschrift anlegen
CALL FUNCTION 'VHUPO_PACK_INSTRUCTION_CREATE'
EXPORTING
pikp_imp = ls_pikp
prop_pikp_imp = ls_pikp_prop
cmvhupo_imp = ls_cmvhupo
commit = '3' "external commit
IMPORTING
pikp_exp = ls_pikp_ext
* CMVHUPO_EXP =
TABLES
pipo_tab = lt_pipo
PACKKPS_TAB = lt_packkps "
EXCEPTIONS
locked = 1
not_found = 2
data_missed = 3
data_wrong = 4
quantity_wrong = 5
missed_pos_type = 6
no_new_number = 7
baseunit_wrong = 8
not_saved = 9
inconsistent = 10
marked_for_delete = 11
exsist = 12
material_unkown = 13
quantity_changed = 14
clint_unkown = 15
unit_needed = 16
unit_wrong = 17
spras_needed = 18
spras_exsist = 19
content_needed = 20
OTHERS = 99.

IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
EXIT.
ENDIF.


*** Commit absetzen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

******* Ende

WAIT UP TO 1 SECONDS.

wa_pack[] = lt_pipo[].


*** Erzeugte Packvorschrift holen
LOOP AT wa_pack.
SELECT SINGLE POBJID FROM packkp INTO i_pobjid WHERE packnr = wa_pack-packnr.
IF NOT SY-SUBRC = 0.
WAIT UP TO 2 SECONDS.
SELECT SINGLE POBJID FROM packkp INTO i_pobjid WHERE packnr = wa_pack-packnr.
ENDIF.
ENDLOOP.

CLEAR: LS_PACKPO,
PACKPO.


*** Die ID der Tabelle PACKPO (Position) Packvorschrift
SELECT * FROM PACKPO INTO CORRESPONDING FIELDS OF LS_PACKPO
WHERE PACKNR = wa_pack-packnr.

APPEND LS_PACKPO TO PACKPO.

ENDSELECT.


CLEAR: LS_PACKPO.


**** Was ist alles eine Text Position
LOOP AT PACKPO into LS_PACKPO WHERE PAITEMTYPE = 'T'.

LOOP AT LT_PIPO INTO WE_PIPO WHERE PACKITEM = LS_PACKPO-PACKITEM.

*** Texte übergeben fürs anlegen
t_lines-tdformat = '/'.
t_lines-tdline = WE_PIPO-CONTENT.
APPEND t_lines TO t_ls_lines.

ENDLOOP.

*** Header füllen für SAVE_TEXT
t_header-tdname = LS_PACKPO-PACKITEMID.
t_header-tdrefname = LS_PACKPO-PACKITEMID.
t_header-tdobject = 'PACKINSTR'.
t_header-tdid = '0001'.
t_header-tdspras = sy-langu.
t_header-tdospras = sy-langu.
t_header-tdlinesize = '72'.

PERFORM TEXT_ANLEGEN.

ENDLOOP.


**** Ausgabe Ergebniss
Skip 2.

WRITE: 20 'Verpackungsvorschrift'.
WRITE: 50 i_pobjid.
WRITE: 80 'wurde angelegt'.




*&---------------------------------------------------------------------*
*& Form EXCEL_LESEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM EXCEL_LESEN.

datei = 'C:\temp\test1.xlsx'.

CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
EXPORTING
i_filename = datei
i_servertyp = 'OLE2'
i_fileformat = 'XLS'
* I_FIELD_SEPERATOR =
i_line_header = 'X'
* IMPORTING
* E_BIN_FILELENGTH =
TABLES
i_tab_receiver = TAB
EXCEPTIONS
file_not_found = 1
close_failed = 2
authorization_failed = 3
open_failed = 4
conversion_failed = 5
OTHERS = 6
.
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. "EXCEL_LESEN



*&---------------------------------------------------------------------*
*& Form KOPFDATEN_FUELLEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM KOPFDATEN_FUELLEN.

* §1: mapping ext -> int
CALL FUNCTION 'MAP2I_BAPIHUPIHEADER_TO_PIKP'
EXPORTING
bapihupiheader = header
CHANGING
pikp = ls_pikp
EXCEPTIONS
error_converting_iso_code = 1
OTHERS = 99.
IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
EXIT.
ENDIF.


ENDFORM. "KOPFDATEN_FUELLEN



*&---------------------------------------------------------------------*
*& Form TEXT_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM TEXT_TABLE.

DATA: ZMATTEXT TYPE MAKT-MAKTX.
CLEAR: lt_packkps[].
wa_text[] = lt_pipo[].

LOOP AT wa_text where DETAIL_ITEMTYPE = 'M'.

SELECT SINGLE MAKTX FROM MAKT INTO ZMATTEXT WHERE MATNR = WA_TEXT-MATNR.

* fill text table
ls_packkps-spras = sy-langu.
ls_packkps-content = ZMATTEXT.
APPEND ls_packkps TO lt_packkps.

ENDLOOP.

ENDFORM. "TEXT_TABLE

*&---------------------------------------------------------------------*
*& Form POSITION_FUELLEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM POSITION_FUELLEN.

*** --> Materialnummr Konvertierung einbauen

ls_position-ITEM_NUMBER = '10'. " Positions Nummer
ls_position-DETAIL_ITEMTYPE = 'P'. " Art der Position
ls_position-MATERIAL = '005000052'. " Material

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = ls_position-MATERIAL
IMPORTING
OUTPUT = ls_position-MATERIAL
* EXCEPTIONS
* LENGTH_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.




ls_position-SUB_PACKINSTRID = ' ' . " Identifikationsnummer
ls_position-TARGET_QTY = 1. " Soll Menge
ls_position-MINIMUM_QTY = ' '. " Minimal Menge
ls_position-ROUNDING_QTY = ' '. " Rundungsmenge
ls_position-UNIT_QTY = 'ST'. " BME
ls_position-UNIT_QTY_ISO = 'PCE'. " BME ISO Code
ls_position-MATERIAL_MIX_ALLOWED = ' '. " Materialmix erlaubt
ls_position-BATCH_MIX_ALLOWED = ' '. " Chargensplit erlaubt
ls_position-LOAD_CARRIER_INDICATOR = 'X'. " Ladungsträger KZ
ls_position-NOT_HU_RELEVANT = ' '. " nicht HU relevant Pos
ls_position-MATERIAL_EXTERNAL = ls_position-MATERIAL. " Materialnummer eines Packmittels
* ls_position-MATERIAL_GUID = ' '. " zukünftige Entwicklung PL_MATNR
* ls_position-MATERIAL_VERSION = ' '. " zukünftige Entwicklung PL_MATNR


* LOOP AT positions INTO ls_position.
CLEAR: ls_pipo.
CALL FUNCTION 'MAP2I_BAPIHUPIPOSITION_TO_PIPO' " erste Pos
EXPORTING
bapihupiposition = ls_position
CHANGING
pipo = ls_pipo
EXCEPTIONS
error_converting_iso_code = 1
OTHERS = 99.
IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
RETURN.
ENDIF.
ls_pipo-content = 'Schweissnaht'.
APPEND ls_pipo TO lt_pipo.
* ENDLOOP.

CLEAR: positions[].


ls_position-ITEM_NUMBER = '20'. " Positions Nummer
ls_position-DETAIL_ITEMTYPE = 'T'. " Art der Position
ls_position-MATERIAL = ' '. " Material
ls_position-SUB_PACKINSTRID = ' '. " Identifikationsnummer
ls_position-TARGET_QTY = ' '. " Soll Menge
ls_position-MINIMUM_QTY = ' '. " Minimal Menge
ls_position-ROUNDING_QTY = ' '. " Rundungsmenge
ls_position-UNIT_QTY = ' '. " BME
ls_position-UNIT_QTY_ISO = ' '. " BME ISO Code
ls_position-MATERIAL_MIX_ALLOWED = ' '. " Materialmix erlaubt
ls_position-BATCH_MIX_ALLOWED = ' '. " Chargensplit erlaubt
ls_position-LOAD_CARRIER_INDICATOR = ' '. " Ladungsträger KZ
ls_position-NOT_HU_RELEVANT = ' '. " nicht HU relevant Pos
ls_position-MATERIAL_EXTERNAL = 'Mit Schweissnaht' .
* ls_position-MATERIAL_GUID = ' '. " zukünftige Entwicklung PL_MATNR
* ls_position-MATERIAL_VERSION = ' '. " zukünftige Entwicklung PL_MATNR


* LOOP AT positions INTO ls_position.
CLEAR: ls_pipo.
CALL FUNCTION 'MAP2I_BAPIHUPIPOSITION_TO_PIPO' " zweite Pos
EXPORTING
bapihupiposition = ls_position
CHANGING
pipo = ls_pipo
EXCEPTIONS
error_converting_iso_code = 1
OTHERS = 99.
IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
RETURN.
ENDIF.
ls_pipo-content = 'Mit Schweissnaht'.
APPEND ls_pipo TO lt_pipo.
* ENDLOOP.

CLEAR: positions[].


ls_position-ITEM_NUMBER = '30'. " Positions Nummer
ls_position-DETAIL_ITEMTYPE = 'M'. " Art der Position
ls_position-MATERIAL = '1000005'. " Material


CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = ls_position-MATERIAL
IMPORTING
OUTPUT = ls_position-MATERIAL
* EXCEPTIONS
* LENGTH_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.


ls_position-SUB_PACKINSTRID = ' '. " Identifikationsnummer
ls_position-TARGET_QTY = '390'. " Soll Menge
ls_position-MINIMUM_QTY = '100'. " Minimal Menge
ls_position-ROUNDING_QTY = '10'. " Rundungsmenge
ls_position-UNIT_QTY = 'ST'. " BME
ls_position-UNIT_QTY_ISO = 'PCE'. " BME ISO Code
ls_position-MATERIAL_MIX_ALLOWED = 'X'. " Materialmix erlaubt
ls_position-BATCH_MIX_ALLOWED = ' '. " Chargensplit erlaubt
ls_position-LOAD_CARRIER_INDICATOR = ' '. " Ladungsträger KZ
ls_position-NOT_HU_RELEVANT = ' '. " nicht HU relevant Pos
ls_position-MATERIAL_EXTERNAL = ' '.
* ls_position-MATERIAL_GUID = ' '. " zukünftige Entwicklung PL_MATNR
* ls_position-MATERIAL_VERSION = ' '. " zukünftige Entwicklung PL_MATNR


* LOOP AT positions INTO ls_position.
CLEAR: ls_pipo.
CALL FUNCTION 'MAP2I_BAPIHUPIPOSITION_TO_PIPO' " haupt Pos
EXPORTING
bapihupiposition = ls_position
CHANGING
pipo = ls_pipo
EXCEPTIONS
error_converting_iso_code = 1
OTHERS = 99.
IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
RETURN.
ENDIF.
APPEND ls_pipo TO lt_pipo.
* ENDLOOP.

CLEAR: positions[].

ENDFORM. "POSITION_FUELLEN


*&---------------------------------------------------------------------*
*& Form fill_return
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_RETURN text
*----------------------------------------------------------------------*
FORM fill_return TABLES p_return STRUCTURE bapiret2.

MOVE sy-msgty TO p_return-type.
MOVE sy-msgid TO p_return-id.
MOVE sy-msgno TO p_return-number.
MOVE sy-msgv1 TO p_return-message_v1.
MOVE sy-msgv2 TO p_return-message_v2.
MOVE sy-msgv3 TO p_return-message_v3.
MOVE sy-msgv4 TO p_return-message_v4.
MESSAGE ID sy-msgid
TYPE 'I'
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
INTO p_return-message.

APPEND p_return.

WRITE: 10 SY-MSGTY.
WRITE: 80 SY-msgid.
WRITE: /10 SY-MSGNO.
WRITE: 80 sy-msgv1.
WRITE: /10 sy-msgv2.
WRITE: 80 sy-msgv3.
WRITE: /10 sy-msgv4.
WRITE: /10 p_return-message.

ENDFORM. " FILL_RETURN

*&---------------------------------------------------------------------*
*& Form POSITION_FUELLEN2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM POSITION_FUELLEN2 .

DATA: ZAEHLER TYPE I.
ZAEHLER = 10.

LOOP AT TAB INTO TAB_WA.

ls_position-ITEM_NUMBER = ZAEHLER. " Positions Nummer
ls_position-DETAIL_ITEMTYPE = TAB_WA-eins. " Art der Position

IF ls_position-DETAIL_ITEMTYPE = 'T'.
ls_position-MATERIAL_EXTERNAL = TAB_WA-zwei.
ls_position-MATERIAL = ' '. " Material
ELSE.
ls_position-MATERIAL = TAB_WA-zwei. " Material

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = ls_position-MATERIAL
IMPORTING
OUTPUT = ls_position-MATERIAL
* EXCEPTIONS
* LENGTH_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.

ENDIF.

ls_position-SUB_PACKINSTRID = ' '. " Identifikationsnummer
ls_position-TARGET_QTY = TAB_WA-fuenf. " Soll Menge
ls_position-MINIMUM_QTY = ' '. " Minimal Menge
ls_position-ROUNDING_QTY = ' '. " Rundungsmenge
ls_position-UNIT_QTY = 'ST'. " BME
ls_position-UNIT_QTY_ISO = 'PCE'. " BME ISO Code
ls_position-MATERIAL_MIX_ALLOWED = ' '. " Materialmix erlaubt
ls_position-BATCH_MIX_ALLOWED = ' '. " Chargensplit erlaubt
ls_position-LOAD_CARRIER_INDICATOR = TAB_WA-sieben. " Ladungsträger KZ
ls_position-NOT_HU_RELEVANT = ' '. " nicht HU relevant Pos
ls_position-MATERIAL_EXTERNAL = ' '.


* LOOP AT positions INTO ls_position.
CLEAR: ls_pipo.
CALL FUNCTION 'MAP2I_BAPIHUPIPOSITION_TO_PIPO' " haupt Pos
EXPORTING
bapihupiposition = ls_position
CHANGING
pipo = ls_pipo
EXCEPTIONS
error_converting_iso_code = 1
OTHERS = 99.
IF sy-subrc <> 0.
PERFORM fill_return TABLES return.
RETURN.
ENDIF.

IF ls_position-DETAIL_ITEMTYPE = 'T'.
ls_pipo-content = TAB_WA-zwei.
ls_pipo-UNITQTY = ' '.
* ls_pipo-UNIT_QTY_ISO = ' '.
ls_pipo-INDNOHU = 'X'.

ls_packkps-spras = sy-langu.
ls_packkps-PACKNR = ls_pipo-SUBPOBJID.
ls_packkps-HDCOUNT = zaehler.
ls_packkps-content = TAB_WA-zwei.
APPEND ls_packkps TO lt_packkps.

ENDIF.

APPEND ls_pipo TO lt_pipo.



* ENDLOOP.

CLEAR: positions[].

ZAEHLER = ZAEHLER + 10.

ENDLOOP.

ENDFORM. " POSITION_FUELLEN2




*&---------------------------------------------------------------------*
*& Form TEXT_ANLEGEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TEXT_ANLEGEN.

DATA: FUNK TYPE C.

CALL FUNCTION 'SAVE_TEXT'
EXPORTING
HEADER = T_HEADER
INSERT = ' '
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = FUNK
NEWHEADER = NEWHEADER
TABLES
LINES = T_LS_LINES.
IF SY-SUBRC <> 0.
*
ENDIF.


CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
object = t_header-tdobject
name = t_header-tdname
id = t_header-tdid
language = SY-LANGU
savemode_direct = 'X'.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

ENDFORM. " TEXT_ANLEGEN
Baran1684
..
..
 
Posts: 35
Joined: Mon Aug 20, 2012 2:37 pm

Re: Text wird in STXL nicht angelegt mit SAVE_TEXT

Postby Baran1684 » Wed Jan 16, 2013 9:01 am

Ist auch gelöst. Das anlegen der Texte wird durch ein eigenes Programm, gerufen am Ende mit übergabe der Texte durchgeführt. So hat es dann funktioniert.
Baran1684
..
..
 
Posts: 35
Joined: Mon Aug 20, 2012 2:37 pm


Return to Sonstige Module BW, SRM, Berechtigung etc.

Who is online

Users browsing this forum: No registered users and 2 guests