1

I have a problem with my BAPI. I want to write a program to massively read out and change material long text in SAP, but somehow I cannot read out the table and change data.

As you see, I tried changing some data in and this works.

If I try to get the table MATERIALLONGTEXT I do get any data even, there is a long text saved.

Table of Data

Then I try to set some values in the table and get an error. It says:

{"TABLE [STRUCTURE BAPI_MLTX]: cannot set value (array storing element values is null)"}

Obviously clear, when there is nothing to set. Any ideas?

Dim BAPI_MATERIAL_SAVEDATA As IRfcFunction = _test.Repository.CreateFunction("BAPI_MATERIAL_SAVEDATA")
Dim oFuBa As IRfcFunction = _test.Repository.CreateFunction("RFC_READ_TABLE")

Dim HEADDATA As IRfcStructure = BAPI_MATERIAL_SAVEDATA.GetStructure("HEADDATA")
Dim MATNR As String = "000000000000561862"
HEADDATA.SetValue("MATERIAL", MATNR)
BAPI_MATERIAL_SAVEDATA.SetValue("HEADDATA", HEADDATA)

Dim CLIENTDATA As IRfcStructure = BAPI_MATERIAL_SAVEDATA.GetStructure("CLIENTDATA")
Dim CLIENTDATAX As IRfcStructure = BAPI_MATERIAL_SAVEDATA.GetStructure("CLIENTDATAX")
Dim PUR_STATUS As String = "20"
CLIENTDATA.SetValue("PUR_STATUS", PUR_STATUS)
CLIENTDATAX.SetValue("PUR_STATUS", "X")
BAPI_MATERIAL_SAVEDATA.SetValue("CLIENTDATA", CLIENTDATA)
BAPI_MATERIAL_SAVEDATA.SetValue("CLIENTDATAX", CLIENTDATAX)

Dim MATERIALLONGTEXT As IRfcTable = BAPI_MATERIAL_SAVEDATA.GetTable("MATERIALLONGTEXT")

Dim LANGU_ISO As String = "DE"
Dim TEXT_ID As String = "GRUN"

MATERIALLONGTEXT.SetValue("TEXT_NAME", MATNR)
MATERIALLONGTEXT.SetValue("APPLOBJECT", "MATERIAL")
MATERIALLONGTEXT.SetValue("FORMAT_COL", "*")
MATERIALLONGTEXT.SetValue("LANGU_ISO", LANGU_ISO)
MATERIALLONGTEXT.SetValue("TEXT_ID", TEXT_ID)
MATERIALLONGTEXT.SetValue("TEXT_LINE", "BLALBAFDFGS")

BAPI_MATERIAL_SAVEDATA.Invoke(_test)
Dim BAPI_RETURN As IRfcStructure = BAPI_MATERIAL_SAVEDATA.GetStructure("RETURN")
Suncatcher
  • 10,355
  • 10
  • 52
  • 90
mplnck
  • 31
  • 5

1 Answers1

1

Works fine, if I add MATERIALLONGTEXT.Insert() or .Append()

Insert() just need to be doen once, Append()after each row like:

MATERIALLONGTEXT.Insert()
MATERIALLONGTEXT.SetValue("TEXT_NAME", MATNR)
MATERIALLONGTEXT.SetValue("APPLOBJECT", "MATERIAL")
MATERIALLONGTEXT.SetValue("FORMAT_COL", "*")
MATERIALLONGTEXT.SetValue("LANGU_ISO", LANGU_ISO)
MATERIALLONGTEXT.SetValue("TEXT_ID", TEXT_ID)
MATERIALLONGTEXT.SetValue("TEXT_LINE", "BLALBAFDFGS")


BAPI_MATERIAL_SAVEDATA.Invoke(_test)
mplnck
  • 31
  • 5