Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem regarding BAPI_SALESORDER_CREATEFROMDAT2

Former Member
0 Likes
943

Hi:

I'm using BAPI_SALESORDER_CREATEFROMDAT2 to generated invoices...but there's something wrong...

I got two companies and I must generate two invoices for each (one in PEN and other one in USD).

The problem is that for the first company, both invoices are generated in PEN and for the second company both are generated in USD....

Here's a piece of code...


  LOOP AT T_KUNNR_WONG ASSIGNING <KUNNR>.

    PERFORM BORRAR_TABLAS.

    LOOP AT T_FACT_WONG ASSIGNING <FACT>
    WHERE WAERS EQ 'PEN'
      AND KUNNR EQ <KUNNR>-KUNNR.
      W_POSICION = W_POSICION + 10.
      IF ORDER_HEADER_IN[] IS INITIAL.
        ORDER_HEADER_IN-DOC_TYPE = C_DOC_TYPE.
        ORDER_HEADER_IN-SALES_ORG = <FACT>-VKORG.
        ORDER_HEADER_IN-DISTR_CHAN = C_VTWEG.
        ORDER_HEADER_IN-DIVISION = C_SPART.
        ORDER_HEADER_IN-PURCH_DATE = SY-DATUM.
        ORDER_HEADER_IN-CURRENCY = <FACT>-WAERS.
        APPEND ORDER_HEADER_IN.
        ORDER_HEADER_INX-UPDATEFLAG = 'I'.
        ORDER_HEADER_INX-PURCH_DATE = 'X'.
        ORDER_HEADER_INX-DOC_TYPE = 'X'.
        ORDER_HEADER_INX-SALES_ORG = 'X'.
        ORDER_HEADER_INX-DISTR_CHAN = 'X'.
        ORDER_HEADER_INX-DIVISION = 'X'.
        APPEND ORDER_HEADER_INX.
      ENDIF.
      ORDER_ITEMS_IN-MATERIAL = T_CONSTANTS-LOW.
      ORDER_ITEMS_IN-PO_ITM_NO = W_POSICION.
      ORDER_ITEMS_IN-TARGET_VAL = <FACT>-ZVANETO.
      ORDER_ITEMS_IN-CURRENCY = <FACT>-WAERS.
      ORDER_ITEMS_IN-PLANT = <FACT>-VKBUR.
      APPEND ORDER_ITEMS_IN.
      ORDER_SCHEDULES_IN-ITM_NUMBER = W_POSICION.
      ORDER_SCHEDULES_IN-REQ_QTY = 1.
      ORDER_SCHEDULES_IN-REQ_DATE = SY-DATUM.
      ORDER_SCHEDULES_IN-DLV_DATE = SY-DATUM.
      APPEND ORDER_SCHEDULES_IN.
      ORDER_ITEMS_INX-UPDATEFLAG = 'I'.
      ORDER_ITEMS_INX-MATERIAL = 'X'.
      ORDER_ITEMS_INX-TARGET_VAL = 'X'.
      ORDER_ITEMS_INX-PLANT = 'X'.
      APPEND ORDER_ITEMS_INX.
      ORDER_PARTNERS-PARTN_ROLE = C_AG.
      ORDER_PARTNERS-PARTN_NUMB = <FACT>-KUNNR.
      APPEND ORDER_PARTNERS.
      ORDER_CONDITIONS_IN-COND_TYPE = C_ZPR1.
      ORDER_CONDITIONS_IN-ITM_NUMBER = W_POSICION.
      ORDER_CONDITIONS_IN-COND_VALUE = <FACT>-ZVANETO.
      ORDER_CONDITIONS_IN-CURRENCY = <FACT>-WAERS.
      APPEND ORDER_CONDITIONS_IN.
    ENDLOOP.

    IF NOT ORDER_ITEMS_IN[] IS INITIAL.
      PERFORM BAPI TABLES ORDER_HEADER_IN
                          ORDER_HEADER_INX
                          ORDER_ITEMS_IN
                          ORDER_ITEMS_INX
                          ORDER_PARTNERS
                          ORDER_SCHEDULES_IN
                          ORDER_CONDITIONS_IN.
    ENDIF.
ENDLOOP.

FORM BAPI TABLES T_ORDER_HEADER_IN STRUCTURE BAPISDHD1
                 T_ORDER_HEADER_INX STRUCTURE BAPISDHD1X
                 T_ORDER_ITEMS_IN STRUCTURE BAPISDITM
                 T_ORDER_ITEMS_INX STRUCTURE BAPISDITMX
                 T_ORDER_PARTNERS STRUCTURE BAPIPARNR
                 T_ORDER_SCHEDULES_IN STRUCTURE BAPISCHDL
                 T_ORDER_CONDITIONS_IN STRUCTURE BAPICOND.

  CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
       EXPORTING
            ORDER_HEADER_IN       = T_ORDER_HEADER_IN
            ORDER_HEADER_INX      = T_ORDER_HEADER_INX
            INT_NUMBER_ASSIGNMENT = 'X'
       TABLES
            RETURN                = RETURN
            ORDER_ITEMS_IN        = T_ORDER_ITEMS_IN
            ORDER_ITEMS_INX       = T_ORDER_ITEMS_INX
            ORDER_PARTNERS        = T_ORDER_PARTNERS
            ORDER_SCHEDULES_IN    = T_ORDER_SCHEDULES_IN
            ORDER_CONDITIONS_IN   = T_ORDER_CONDITIONS_IN.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

  PERFORM SLEEP.
ENDFORM.

I clean all tables before each BAPI call....Can you help me on this???

Greetings,

Blag.

Message was edited by:

Alvaro Tejada Galindo

6 REPLIES 6
Read only

Former Member
0 Likes
831

Hello,

Please check the following.

1. Clear the header record before the loop ..... endloop.

2. In debugging, check all the tables that have WAERS and what are the values populated before the BAPI call.

3. For the 1st Loop ...... there is no ENDLOOP.

Thanks,

Suresh Ganti

Read only

0 Likes
831

Hi Suresh:

Yeah...There wasn't an ENDLOOP, but it was just a typo error -:)

I'm cleaning the header for the other LOOPS...Also I'm using FIELD-SYMBOLS, so I don't think that's the real problem...

I have checked the DATA a lot of times, and even when CURRENCY is set to USD...The invoice generate a PEN one...

Greetings,

Blag.

Read only

0 Likes
831

Hi Alvaro ,

Could you check the account group of customer , may be currency is not defined for the customer master data .

I'm not sure this would be handy ...

Kind Regards.

Message was edited by:

Caglar Ozkor

Read only

0 Likes
831

Hi Alvaro,

Please check the currency in customer master data?

Thanks,

Suresh Ganti

Read only

0 Likes
831

Hi Caglar:

Currency is defined for both customers...As I said...BAPI should create something like this...


WONG PEN
WONG USD
METR PEN
METR USD

But it's creating


WONG PEN
WONG PEN
METR USD
METR USD

Greetings,

Blag.

Read only

0 Likes
831

I fixed -:D

This line was needed...


ORDER_HEADER_INX-CURRENCY = 'X'.

Greetings,

Blag.