cancel
Showing results for 
Search instead for 
Did you mean: 

BDC to Upload VA01 - How To Make an excel sheet or File by vertical For each Sales Order

former_member626380
Participant
0 Kudos

HI all ,,,

How To Make an excel sheet or File by vertical For each Sales Order .

i created program bdc for sales order, the program work good but I have more line item and I want in my sheet put the item by vertical .

For Example


I want Make my sheet like this

below my code what can I do .

no standard page heading line-size 255.

* Include bdcrecx1_s:
* The call transaction using is called WITH AUTHORITY-CHECK!
* If you have own auth.-checks you can use include bdcrecx1 instead.

*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: E_GROUP_OPENED.
* message texts
TABLES: T100.

TYPES : BEGIN OF STR ,
AUART TYPE AUART ,
KUNNR TYPE KUNNR ,
KWMENG TYPE STRING ,
MABNR TYPE STRING ,
KWMENG1 TYPE STRING ,
MABNR1 TYPE STRING ,
END OF STR .

DATA : LT TYPE TABLE OF STR ,
WA TYPE STR.

PARAMETERS : P TYPE IBIPPARMS-PATH .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P
.
DATA : LV_F TYPE STRING .
LV_F = P .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = LV_F
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = LT

EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


start-of-selection.

LOOP AT LT INTO WA .

perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
WA-AUART.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'KUAGV-KUNNR'.
perform bdc_field using 'KUAGV-KUNNR'
WA-KUNNR.
perform bdc_field using 'RV45A-KETDAT'
'14.10.2020'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'14.10.2020'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KUAGV-KUNNR'
'1000219'.
perform bdc_field using 'KUWEV-KUNNR'
'1000219'.
perform bdc_field using 'RV45A-KETDAT'
'14.10.2020'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'14.10.2020'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
WA-MABNR.
perform bdc_field using 'RV45A-KWMENG(01)'
WA-KWMENG.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KUAGV-KUNNR'
'1000219'.
perform bdc_field using 'KUWEV-KUNNR'
'1000219'.
perform bdc_field using 'RV45A-KETDAT'
'14.10.2020'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'14.10.2020'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
WA-MABNR1.
perform bdc_field using 'RV45A-KWMENG(02)'
WA-KWMENG1.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'KUAGV-KUNNR'
'1000219'.
perform bdc_field using 'KUWEV-KUNNR'
'1000219'.
perform bdc_field using 'RV45A-KETDAT'
'14.10.2020'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'14.10.2020'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_dynpro using 'SAPLSPO2' '0101'.
perform bdc_field using 'BDC_OKCODE'
'=OPT1'.
perform bdc_transaction using 'VA01'.

ENDLOOP .
*perform close_group.



*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
DATA: lx_auth_check TYPE REF TO cx_root.
DATA: l_auth_check_text TYPE string.

REFRESH MESSTAB.
TRY.
CALL TRANSACTION TCODE WITH AUTHORITY-CHECK USING BDCDATA
MODE 'A'
UPDATE 'S'
MESSAGES INTO MESSTAB.
CATCH cx_sy_authorization_error INTO lx_auth_check.
* Authorization missing for user when executing transaction
l_auth_check_text = lx_auth_check->get_text( ).
SY-SUBRC = 99.
ENDTRY.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
IF L_SUBRC <> 99.
LOOP AT MESSTAB.
MESSAGE ID MESSTAB-MSGID
TYPE MESSTAB-MSGTYP
NUMBER MESSTAB-MSGNR
INTO L_MSTRING
WITH MESSTAB-MSGV1
MESSTAB-MSGV2
MESSTAB-MSGV3
MESSTAB-MSGV4.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ENDLOOP.
ELSE.
WRITE: / l_auth_check_text.
ENDIF.

REFRESH BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.

VeselinaPeykova
Active Contributor
0 Kudos

Why do you have to use a BDC for sales order creation? I am not a developer, but in your code I do not see any field that justifies the use of BDC over a BAPI.

Sandra_Rossi
Active Contributor
0 Kudos

Please use the CODE button to format your code so that it's shown in a more user-friendly format (colorized).

NB: unfortunately, it's too late to edit your question if someone has posted an answer. But you can still post a comment.

Sandra_Rossi
Active Contributor
0 Kudos

NB: you say "Excel sheet", but it's just a text file with tab-delimited fields (it's not important to say what application you use to edit it).

Accepted Solutions (1)

Accepted Solutions (1)

FredericGirod
Active Contributor
  perform bdc_transaction using 'VA01'.
ENDLOOP .

You need to change this.

Maybe create another table from WA. Containing the list of possible Sales Order.

loop at Sales_order ...  
  loop at wa ...   
    ...
  endloop.  
  perform bdc_transaction using 'VA01'.
endloop.

Answers (0)