日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模板樣式

小心得:
1.添加抬頭條件時將BAPI表參數參數ORDER_CONDITIONS_IN中ITM_NUMBER設置為‘000000’即可。

REPORT ZSDC0004.
TABLES:VBPA,VBAK,MAKT,SSCRFIELDS.
*模板上傳結構 ZSDC0002_DRJG
TYPES:
BEGIN OF TY_S_ALV_PUBLIC,

  • selected TYPE c,
    SEL TYPE C, "選擇框
    ICON TYPE C LENGTH 4, "圖案
    MESSAGE TYPE STRING, "報錯
  • status TYPE status_alv,
  • locked TYPE c,
  • celltab TYPE lvc_t_styl,
  • colinfo TYPE lvc_t_scol,
  • err TYPE c,
  • msg TYPE string,
  • done TYPE c,
    END OF TY_S_ALV_PUBLIC.
    TYPES:BEGIN OF TY_DR,
    BS TYPE STRING, "標識相同的創一個銷售訂單
    AUART TYPE STRING,
    VKORG TYPE STRING,
    VTWEG TYPE STRING,
    SPART TYPE STRING,
    VKBUR TYPE STRING,
    VKGRP TYPE STRING,
    KUNNR TYPE STRING,
    BSTKD TYPE STRING,
    ERDAT TYPE STRING,
    MATNR TYPE STRING,
    KWMENG TYPE STRING,
    REQ_DATE TYPE STRING,
    BATCH TYPE STRING,
    LGORT TYPE STRING,
    KSCHL TYPE STRING,
    NETPR TYPE STRING,
    END OF TY_DR.
    TYPES: BEGIN OF TY_ALV.
    INCLUDE TYPE TY_S_ALV_PUBLIC.
    INCLUDE TYPE ZSDC0002_DRJG.
    TYPES END OF TY_ALV.

DATA: GT_DR TYPE TABLE OF TY_DR,
GS_DR TYPE TY_DR,
GT_ALV TYPE TABLE OF TY_ALV,
GS_ALV TYPE TY_ALV,
GT_ALVB TYPE TABLE OF ZSDC0002_JOB.
DATA: GT_EXCEL_TAB TYPE STANDARD TABLE OF ALSMEX_TABLINE "ALSMEX_TABLINE是系統預先已定義的一個結構,表示具有 Excel 數據的表行
.
DATA: WA_FIELDCATALOG TYPE LVC_S_FCAT, "顯示數據列內表工作區域
IT_FIELDCATALOG TYPE LVC_T_FCAT, "顯示數據列內表
GS_LAYOUT TYPE LVC_S_LAYO.
*======================================================================*

  • Constants *
    *======================================================================*
    CONSTANTS:
    C_SEPERATOR TYPE CHAR1 VALUE ‘/’.
    CONSTANTS:
    C_OK LIKE SY-SUBRC VALUE 0,
    C_NOT_OK LIKE SY-SUBRC VALUE 1,
    GC_MSG_AEX TYPE STRING VALUE ‘AEX’,
    C_MSG_ISW TYPE STRING VALUE ‘ISW’,
    GC_MSG_S TYPE CHAR1 VALUE ‘S’,
    GC_MSG_E TYPE CHAR1 VALUE ‘E’,
    GC_MSG_W TYPE CHAR1 VALUE ‘W’,
    GC_SEL_MODE TYPE CHAR1 VALUE ‘D’,
    GC_CELLTAB TYPE CHAR20 VALUE ‘CELLTAB’,
    GC_SAVE TYPE CHAR1 VALUE ‘A’,
    GC_WIDTH_OPT TYPE CHAR1 VALUE ‘A’,
    GC_CHAR_0 TYPE CHAR1 VALUE ‘0’,

GC_CHAR_M TYPE CHAR1 VALUE ‘M’,
GC_CHAR_K TYPE CHAR1 VALUE ‘K’,
GC_FDNAM_ERR TYPE CHAR30 VALUE ‘ERR’,
GC_FDNAM_STATUS TYPE CHAR30 VALUE ‘STATUS’,
GC_FDNAM_MATNR TYPE CHAR30 VALUE ‘MATNR’,
GC_FDNAM_IDNRK TYPE CHAR30 VALUE ‘IDNRK’,
GC_FCODE_UPD TYPE GUI_CODE VALUE ‘FC_UPD’,
GC_ALVSTATUS TYPE SLIS_FORMNAME VALUE ‘FRM_ALV_STATUS’,
GC_USERCOMMAND TYPE SLIS_FORMNAME VALUE ‘FRM_USER_COMMAND’.

DEFINE SET_RB01."創建宏(數據導入)

CLEAR wa_fieldcatalog.
wa_fieldcatalog-fieldname = &1.
wa_fieldcatalog-scrtext_m = &2.

IF wa_fieldcatalog-fieldname = ‘ICON’.
wa_fieldcatalog-icon = ‘X’.
ENDIF.
IF &1 EQ ‘SEL’.
wa_fieldcatalog-checkbox = ‘X’.
wa_fieldcatalog-edit = ‘X’.
ENDIF.

APPEND wa_fieldcatalog TO IT_FIELDCATALOG.
CLEAR wa_fieldcatalog.

END-OF-DEFINITION.
DEFINE SET_RB02."創建宏(數據查詢)

CLEAR wa_fieldcatalog.
wa_fieldcatalog-fieldname = &1.
wa_fieldcatalog-scrtext_m = &2.

APPEND wa_fieldcatalog TO IT_FIELDCATALOG.
CLEAR wa_fieldcatalog.

END-OF-DEFINITION.
*======================================================================*

  • Begin of S E L E C T I O N - S C R E E N *
    *======================================================================*

SELECTION-SCREEN BEGIN OF BLOCK BLK_SCR WITH FRAME TITLE TEXT-T01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 1(31) TEXT-T02 FOR FIELD P_FILE MODIF ID M01.
PARAMETERS:

P_FILE TYPE RLGRAP-FILENAME OBLIGATORY MODIF ID M01 DEFAULT '/D:'.

*SELECTION-SCREEN COMMENT (3) TEXT-t04 MODIF ID m01.
*SELECTION-SCREEN PUSHBUTTON (10) TEXT-t03 USER-COMMAND fc01 MODIF ID m01.
SELECTION-SCREEN END OF LINE.
*PARAMETERS:

  • P_BEROW TYPE INT4 OBLIGATORY DEFAULT 2 MODIF ID M01,
  • P_ENDROW TYPE INT4 OBLIGATORY DEFAULT 99999 MODIF ID M01.
  • SELECT-OPTIONS:
    ** s_aennr FOR gs_selscr-aennr MODIF ID m02 ,
  • S_KUNNR FOR VBPA-KUNNR MODIF ID M02,"售達方
  • S_ERDAT FOR VBAK-ERDAT MODIF ID M02 , "銷售訂單日期
  • S_MATNR FOR MAKT-MATNR MODIF ID M02 . "物料
    **SELECTION-SCREEN COMMENT /3(79) TEXT-s00 MODIF ID m02 .
    SELECTION-SCREEN END OF BLOCK BLK_SCR.
    *SELECTION-SCREEN BEGIN OF BLOCK BLK_01 WITH FRAME TITLE TEXT-B01.
  • PARAMETERS:
  • P_RB03 RADIOBUTTON GROUP RG2 DEFAULT ‘X’ USER-COMMAND RG2 MODIF ID M02,
  • P_RB04 RADIOBUTTON GROUP RG2 MODIF ID M02.
    *SELECTION-SCREEN END OF BLOCK BLK_01.

*SELECTION-SCREEN BEGIN OF BLOCK BLK_02 WITH FRAME TITLE TEXT-B02.

  • PARAMETERS:
  • P_RB01 RADIOBUTTON GROUP RG1 DEFAULT ‘X’ USER-COMMAND RG1,
  • P_RB02 RADIOBUTTON GROUP RG1.
    *SELECTION-SCREEN END OF BLOCK BLK_02.

DATA G_FUNCTION TYPE SMP_DYNTXT. "功能按鈕
CONSTANTS:
GC_TEMPLATE TYPE CHAR4 VALUE ‘模板下載’.
SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.

  • 工具欄添加下載模板按鈕
    CLEAR G_FUNCTION.
    G_FUNCTION-ICON_ID = ICON_POSITION.
    G_FUNCTION-ICON_TEXT = GC_TEMPLATE.
    G_FUNCTION-QUICKINFO = GC_TEMPLATE.
    SSCRFIELDS-FUNCTXT_01 = G_FUNCTION.
    *AT SELECTION-SCREEN.
  • 下載數據導入模板
  • CASE sscrfields-ucomm.
  • WHEN ‘FC01’.
  • MESSAGE '流批' TYPE 'I'.
  • sscrfields-ucomm = ''.
  • ENDCASE.

AT SELECTION-SCREEN OUTPUT.

*分組顯示屏幕

  • PERFORM FRM_EVENT_AT_SEL_SCREEN_OUT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
"獲取文件路徑
PERFORM SUB_FILE_OPEN_DIALOG CHANGING P_FILE."打開文件瀏覽框

AT SELECTION-SCREEN.

CASE SSCRFIELDS-UCOMM.
WHEN ‘FC01’.
SSCRFIELDS-UCOMM = ‘’.
PERFORM TEMP_EXCEL_GET USING ‘ZSDC0002’.
ENDCASE.

START-OF-SELECTION.

*取數
PERFORM FRM_GET_DATA.

*ALV顯示
PERFORM FRM_OUTPUT_DATA.

END-OF-SELECTION.

*FORM FRM_EVENT_AT_SEL_SCREEN_OUT .

  • LOOP AT SCREEN.
  • CASE ABAP_TRUE.
  • WHEN P_RB01.
  • IF SCREEN-GROUP1 EQ 'M02'.
  • SCREEN-ACTIVE = 0.
  • ENDIF.

** MODIFY SCREEN.

  • WHEN P_RB02.
  • IF SCREEN-GROUP1 EQ 'M01'.
  • SCREEN-ACTIVE = 0.
  • ENDIF.

** MODIFY SCREEN.

  • WHEN OTHERS.
  • ENDCASE.
  • IF SCREEN-NAME = ‘S_ZZCMCC-LOW’ OR SCREEN-NAME = ‘S_MATNR-LOW’.
  • SCREEN-REQUIRED = '2'.
  • MODIFY SCREEN.
  • ENDIF.
    ** CASE SCREEN-NAME .
    ** WHEN ‘P_RB01’ .
    ** SCREEN-OUTPUT = 0 .
    ** WHEN ‘P_RB02’ .
    ** SCREEN-OUTPUT = 0 .
    ** ENDCASE.
  • MODIFY SCREEN.
  • ENDLOOP.
    *ENDFORM.
    &---------------------------------------------------------------------
    *& Form sub_file_open_dialog
    &---------------------------------------------------------------------
    *& text
    &---------------------------------------------------------------------
    *& <-- PR_UPATH
    &---------------------------------------------------------------------
    FORM SUB_FILE_OPEN_DIALOG CHANGING PR_UPATH.

DATA: LT_FILE TYPE STANDARD TABLE OF FILE_TABLE,
LW_FILE TYPE FILE_TABLE,
LV_FILTER TYPE STRING,
LV_RC TYPE I.

LV_FILTER = ‘Excel files(.xlsx)|.xlsx|Excel files(.xls)|.xls’.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING

  • window_title =
  • DEFAULT_EXTENSION =
  • DEFAULT_FILENAME = FILE_FILTER = LV_FILTER
  • initial_directory =
  • MULTISELECTION = CHANGING
    FILE_TABLE = LT_FILE
    RC = LV_RC
  • USER_ACTION = EXCEPTIONS
    FILE_OPEN_DIALOG_FAILED = 1
    CNTL_ERROR = 2
    ERROR_NO_GUI = 3
    OTHERS = 4.
    IF SY-SUBRC <> 0.
  • If open file with error
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ELSE.
  • If open file successfully
    READ TABLE LT_FILE INTO LW_FILE INDEX 1.
    IF SY-SUBRC = 0 .
  • If user chooses a file PR_UPATH = LW_FILE-FILENAME. ENDIF.
    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM FRM_GET_DATA.

  • CASE ABAP_TRUE.

  • WHEN P_RB01."導入創建
    PERFORM SUB_UPLOAD_FILE. "數據導入
    PERFORM SUB_PROCESS_DATA ."數據整理
    PERFORM FRM_CHECK_DATA ."數據檢測

  • WHEN P_RB02."查詢

  • PERFORM FRM_SELECT . "取數
  • ENDCASE.

ENDFORM.
FORM SUB_UPLOAD_FILE ."上傳數據
DATA LV_PATH TYPE RLGRAP-FILENAME.
LV_PATH = P_FILE.

REFRESH GT_EXCEL_TAB.

CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
FILENAME = LV_PATH
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 99
I_END_ROW = 59999
TABLES
INTERN = GT_EXCEL_TAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.

  • 讀取EXCEL文件出錯
    MESSAGE ‘讀取EXCEL文件出錯’ TYPE ‘S’ DISPLAY LIKE ‘E’.
    STOP.

  • MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  • WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
    ENDFORM.
    FORM SUB_PROCESS_DATA ."數據轉換

    DATA:LW_EXCEL_TAB TYPE ALSMEX_TABLINE,
    LV_FIELDNAME TYPE CHAR10.

  • LW_RECORD TYPE TY_RECORD.

    FIELD-SYMBOLS: <FS_FIELD> TYPE ANY.

  • 刪除第一個0001行數據(表頭)/ 0002行數據/0003行數據
    LOOP AT GT_EXCEL_TAB INTO LW_EXCEL_TAB.
    IF LW_EXCEL_TAB-ROW = ‘0001’ ."OR LW_EXCEL_TAB-ROW = ‘0002’ OR LW_EXCEL_TAB-ROW = ‘0003’ OR LW_EXCEL_TAB-ROW = ‘0004’.
    DELETE TABLE GT_EXCEL_TAB FROM LW_EXCEL_TAB.
    ELSE.
    EXIT.
    ENDIF.
    ENDLOOP.

    IF GT_EXCEL_TAB[] IS INITIAL.
    MESSAGE ‘上載文件為空,請檢查!’ TYPE ‘S’ DISPLAY LIKE ‘E’.
    ENDIF.

*----------------------------------------------------------------------

LOOP AT GT_EXCEL_TAB INTO LW_EXCEL_TAB.

ASSIGN COMPONENT LW_EXCEL_TAB-COL OF STRUCTURE GS_DR TO <FS_FIELD>. IF <FS_FIELD> IS ASSIGNED.<FS_FIELD> = LW_EXCEL_TAB-VALUE.UNASSIGN <FS_FIELD>. ENDIF. AT END OF ROW.APPEND GS_DR TO GT_DR.CLEAR GS_DR. ENDAT.

ENDLOOP.
MOVE-CORRESPONDING GT_DR TO GT_ALV .
WITH +DATA AS ( SELECT VKORG FROM @GT_ALV AS GT_ALV )
SELECT B~VKORG ,
B~WAERS
FROM TVKO AS B
INNER JOIN +DATA AS A ON A~VKORG = B~VKORG
INTO TABLE @DATA(GT_TVTO).
LOOP AT GT_ALV ASSIGNING FIELD-SYMBOL(<GS_ALV>) .
READ TABLE GT_TVTO ASSIGNING FIELD-SYMBOL(<GS_TVTO>) WITH KEY VKORG = <GS_ALV>-VKORG.
IF SY-SUBRC = 0 .
<GS_ALV>-WAERS = <GS_TVTO>-WAERS .
ELSE.
<GS_ALV>-MESSAGE = ‘銷售組織沒有維護對應的統計貨幣’ .
<GS_ALV>-ICON = ICON_LED_RED .
ENDIF.
ENDLOOP.
SORT GT_ALV BY BS .
*----------------------------------------------------------------------

ENDFORM.
FORM FRM_CHECK_DATA ."數據檢查

ENDFORM.
*FORM FRM_SELECT ."取數
*

  • SELECT * FROM ZSDC0002_JOB
  • WHERE KUNNR IN @S_KUNNR
  • AND ERDAT IN @S_ERDAT
  • AND MATNR IN @S_MATNR
  • INTO TABLE @GT_ALVB.

*ENDFORM.
FORM FRM_OUTPUT_DATA .
PERFORM SUB_SET_LAYOUT.
PERFORM SUB_SET_FIELDCAT.

*函數ALV的調用

  • CASE ABAP_TRUE .
  • WHEN P_RB01.
    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
    EXPORTING
    I_CALLBACK_PROGRAM = SY-REPID
  • it_sort_lvc = it_sort I_CALLBACK_PF_STATUS_SET = 'SUB_SET_STATUS'
  • I_CALLBACK_HTML_TOP_OF_PAGE = 'SUB_ALV_TOP_OF_PAGE' I_CALLBACK_USER_COMMAND = 'SUB_USER_COMMAND' IS_LAYOUT_LVC = GS_LAYOUT IT_FIELDCAT_LVC = IT_FIELDCATALOG
  • i_save = 'A'
  • i_default = 'X'
  • i_html_height_top = 18 "可根據表頭寬度適當調整大小 " IT_EVENTS = IT_EVENTS
    TABLES
    T_OUTTAB = GT_ALV.
  • WHEN P_RB02.
  • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  • EXPORTING
  • I_CALLBACK_PROGRAM = SY-REPID

** it_sort_lvc = it_sort
** I_CALLBACK_PF_STATUS_SET = ‘SUB_SET_STATUS’
** I_CALLBACK_HTML_TOP_OF_PAGE = ‘SUB_ALV_TOP_OF_PAGE’
** I_CALLBACK_USER_COMMAND = ‘SUB_USER_COMMAND’

  • IS_LAYOUT_LVC = GS_LAYOUT
  • IT_FIELDCAT_LVC = IT_FIELDCATALOG

** i_save = ‘A’
** i_default = ‘X’
** i_html_height_top = 18 "可根據表頭寬度適當調整大小

  • " IT_EVENTS = IT_EVENTS
  • TABLES
  • T_OUTTAB = GT_ALVB.
  • ENDCASE.
    ENDFORM.
    FORM SUB_SET_LAYOUT .
    GS_LAYOUT-ZEBRA = ‘X’.
    GS_LAYOUT-CWIDTH_OPT = ‘X’.
    ENDFORM.
    FORM SUB_SET_FIELDCAT .

  • CASE ABAP_TRUE .

  • WHEN P_RB01.
    SET_RB01: ‘SEL’ ‘選擇框’,
    ‘ICON’ ‘消息’,
    ‘MESSAGE’ ‘消息文本’,

  • 'BS' '''AUART' 'SAP訂單類型','VKORG' '銷售機構','VTWEG' '分銷渠道','SPART' '產品組','VKBUR' '銷售部門','VKGRP' 'SAP銷售組','KUNNR' 'SAP客戶號碼','BSTKD' '平臺銷售單號','ERDAT' '創建日期','MATNR' 'SAP物料編號','KWMENG' '銷售數量','REQ_DATE' '交貨日期','BATCH' '批次','LGORT' '存儲地點','KSCHL' '價格條件','NETPR' '凈價'.
  • WHEN P_RB02.

  • SET_RB02:
  • 'KUNNR' 'SAP客戶號碼',
  • 'MATNR' 'SAP物料編號',
  • 'KWMENG' '銷售數量',
  • 'VRKME' '銷售單位',
  • 'NETPR' '銷售價格',
  • 'KMEIN' '價格銷售單位',
  • 'NETWR' '此物料銷售金額',
  • 'BSTKD' '旺店通訂單號碼',
  • 'ERDAT' '銷售訂單日期時間',
  • 'VBELNA' '銷售訂單號碼',
  • 'POSNRA' '銷售訂單行項目號',
  • 'VBELNB' '交貨單號',
  • 'POSNRB' '交貨單行項目',
  • 'VBELNC' '系統發票',
  • 'POSNRC' '系統發票號碼',
  • 'ZISON' '標識是否完成系統發票',
  • 'ZMESS' '記錄系統執行錯誤信息',
  • 'ZDATE' '數據導入日期',
  • 'YDATE' '數據導入時間',
  • 'ZTIME' '數據導入日期',
  • 'YTIME' '數據導入時間 '.
  • .
  • ENDCASE.
    ENDFORM.
    FORM SUB_SET_STATUS USING PT_EXTAB TYPE SLIS_T_EXTAB.

*局部對象定義
DATA:LT_ECODE TYPE TABLE OF SY-UCOMM.

*gui status的定義
SET PF-STATUS ‘1000’ EXCLUDING LT_ECODE.

ENDFORM.
FORM SUB_USER_COMMAND USING PT_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA:LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA:LV_FLAG TYPE C .
DATA:LV_TABIX TYPE SYTABIX .
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
E_GRID = LO_GRID.
IF LO_GRID IS NOT INITIAL .
LO_GRID->CHECK_CHANGED_DATA( ).
ENDIF .

*功能代碼實現
CASE PT_UCOMM.
WHEN ‘QX’.

LOOP AT GT_ALV INTO GS_ALV.GS_ALV-SEL = 'X'.MODIFY GT_ALV FROM GS_ALV .ENDLOOP.
  • PERFORM SUB_DO_MARK USING 'X'.

    WHEN ‘BX’.
    LOOP AT GT_ALV INTO GS_ALV.
    GS_ALV-SEL = ‘’.
    MODIFY GT_ALV FROM GS_ALV .
    ENDLOOP.
    WHEN ‘&IC1’.
    WHEN ‘CREIT’ .

  • MESSAGE '嗯哼' TYPE 'S'. PERFORM FRM_CREIT.

    ENDCASE.

    RS_SELFIELD-REFRESH = ‘X’.
    RS_SELFIELD-COL_STABLE = ‘X’ .
    RS_SELFIELD-ROW_STABLE = ‘X’.
    ENDFORM.
    FORM SUB_DO_MARK USING PU_MARK.
    CLEAR:GS_ALV .

    GS_ALV-SEL = PU_MARK.
    MODIFY GT_ALV FROM GS_ALV TRANSPORTING SEL
    WHERE SEL NE PU_MARK.

ENDFORM.
FORM FRM_CREIT.
CLEAR:GS_ALV .
PERFORM FRM_XS.

  • PERFORM FRM_JH.
  • PERFORM FRM_FP.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_xs
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM FRM_XS .
DATA: LW_HEADER TYPE BAPISDHD1,
LW_HEADERX TYPE BAPISDHD1X,
LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
LT_ITEM TYPE TABLE OF BAPISDITM,
LW_ITEM TYPE BAPISDITM,
LT_ITEMX TYPE TABLE OF BAPISDITMX,
LW_ITEMX TYPE BAPISDITMX,
LT_PARNR TYPE TABLE OF BAPIPARNR,
LW_PARNR TYPE BAPIPARNR,
LT_SCHDL TYPE TABLE OF BAPISCHDL, "計劃行
LW_SCHDL TYPE BAPISCHDL,
LT_SCHDLX TYPE TABLE OF BAPISCHDLX,
LW_SCHDLX TYPE BAPISCHDLX,
LT_COND TYPE TABLE OF BAPICOND, "訂單條件
LS_COND TYPE BAPICOND,
LT_CONDX TYPE TABLE OF BAPICONDX,
LS_CONDX TYPE BAPICONDX.
DATA: L_POSNR TYPE VBAP-POSNR. "行項目號
DATA: LV_VBELN TYPE BAPIVBELN-VBELN. "行項目號
DATA:LV_MESSAGE TYPE STRING . "消息匯總
DATA :LV_SUMVERPR TYPE VERPR .
DATA LV_MATNR TYPE MATNR .

READ TABLE GT_ALV TRANSPORTING NO FIELDS WITH KEY SEL = ‘X’ .
IF SY-SUBRC NE 0.
MESSAGE ‘請選擇要創建銷售訂單的數據’ TYPE ‘E’.
ENDIF.
DATA(GT_ALVA) = GT_ALV .
DATA GT_ITEM TYPE TABLE OF TY_ALV .
CLEAR:GS_ALV.
LOOP AT GT_ALVA ASSIGNING FIELD-SYMBOL(<GS_SAP>)
GROUP BY ( BS = <GS_SAP>-BS ) "物料
ASCENDING REFERENCE INTO DATA(LS_SAP_GRP). "分組放入工作區
CLEAR :GT_ITEM[],LV_SUMVERPR.
GT_ITEM[] = VALUE #( BASE GT_ITEM
FOR WA IN GROUP LS_SAP_GRP ( WA ) ).
CLEAR: L_POSNR,LW_HEADER,LW_HEADERX,LW_PARNR,LT_PARNR,LW_ITEM ,
LT_ITEM,LS_COND , LT_COND,LW_SCHDLX ,LT_SCHDLX,LW_ITEMX ,
LT_ITEMX,LS_CONDX , LT_CONDX,LT_RETURN,LV_VBELN,LT_SCHDL.
LOOP AT GT_ITEM INTO GS_ALV WHERE SEL = ‘X’ .
DATA(LV_TABIX) = SY-TABIX .
*表頭數據
LW_HEADER-DOC_TYPE = GS_ALV-AUART. "銷售訂單類型
LW_HEADER-SALES_ORG = GS_ALV-VKORG. "銷售機構
LW_HEADER-DISTR_CHAN = GS_ALV-VTWEG. "分銷渠道
LW_HEADER-DIVISION = GS_ALV-SPART. "產品組
LW_HEADER-SALES_OFF = GS_ALV-VKBUR. "銷售部門
LW_HEADER-SALES_GRP = GS_ALV-VKGRP. "SAP銷售組
LW_HEADER-PURCH_NO_C = GS_ALV-BSTKD. "SAP客戶參考
IF GS_ALV-ERDAT IS NOT INITIAL.
LW_HEADER-REQ_DATE_H = GS_ALV-ERDAT . "銷售日期
ELSE.
LW_HEADER-REQ_DATE_H = SY-DATUM. "銷售日期
ENDIF.

*確認
LW_HEADERX-DOC_TYPE = ‘X’.
LW_HEADERX-SALES_ORG = ‘X’.
LW_HEADERX-DISTR_CHAN = ‘X’.
LW_HEADERX-DIVISION = ‘X’.
*合作伙伴數據
CLEAR LW_PARNR.
LW_PARNR-PARTN_ROLE = ‘AG’. "售達方
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
INPUT = GS_ALV-KUNNR
IMPORTING
OUTPUT = LW_PARNR-PARTN_NUMB.
APPEND LW_PARNR TO LT_PARNR.
CLEAR LW_PARNR.

  • LW_PARNR-PARTN_ROLE = ‘WE’."合作伙伴功能 送達方
  • CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
  • EXPORTING
  • INPUT =
  • IMPORTING
  • OUTPUT =
  • APPEND LW_PARNR TO LT_PARNR.
  • ‘RE’."合作伙伴功能 受票方
  • ‘RG’."合作伙伴功能 受票方
  • CLEAR L_POSNR.
    L_POSNR = L_POSNR + 10.

*行項目數據
CLEAR LW_ITEM.
LW_ITEM-ITM_NUMBER = L_POSNR. "項目編號
"物料
CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = GS_ALV-MATNR
IMPORTING
OUTPUT = LW_ITEM-MATERIAL
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
"數量
LW_ITEM-TARGET_QTY = GS_ALV-KWMENG."物料數量 .
LW_ITEM-PLANT = GS_ALV-VKORG."銷售機構與工廠是相同的,使用一下
LW_ITEM-STORE_LOC = GS_ALV-LGORT.
LW_ITEM-BATCH = GS_ALV-BATCH."批次
APPEND LW_ITEM TO LT_ITEM.
*確認
CLEAR: LW_ITEMX,LT_ITEMX…
LW_ITEMX-MATERIAL = ‘X’.
LW_ITEMX-TARGET_QU = ‘X’.
LW_ITEMX-PLANT = ‘X’.
LW_ITEMX-STORE_LOC = ‘X’.
LW_ITEMX-BATCH = ‘X’."批次
APPEND LW_ITEMX TO LT_ITEMX.
*數量
CLEAR: LW_SCHDL.
LW_SCHDL-REQ_QTY = GS_ALV-KWMENG.
LW_SCHDL-ITM_NUMBER = L_POSNR.
LW_SCHDL-REQ_DATE = GS_ALV-REQ_DATE ."交貨日期
APPEND LW_SCHDL TO LT_SCHDL.
CLEAR: LW_SCHDLX.
LW_SCHDLX-REQ_QTY = ‘X’.
LW_SCHDLX-ITM_NUMBER = L_POSNR.
LW_SCHDLX-REQ_DATE = ‘X’.
APPEND LW_SCHDLX TO LT_SCHDLX.

CLEAR:LS_COND,LS_CONDX.LS_COND-ITM_NUMBER = L_POSNR .LS_COND-COND_ST_NO = '010'.LS_COND-COND_COUNT = '01'.LS_COND-COND_TYPE = GS_ALV-KSCHL. "價格條件LS_COND-COND_VALUE = GS_ALV-NETPR. "銷售單價IF LS_COND-COND_VALUE IS INITIAL .CLEAR:LV_MATNR.CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGINPUT = GS_ALV-MATNRIMPORTINGOUTPUT = LV_MATNREXCEPTIONSLENGTH_ERROR = 1OTHERS = 2.BREAK-POINT.SELECT SINGLE VERPR FROM MBEW WHERE MATNR = @LV_MATNR AND VPRSV = 'V' INTO @DATA(LV_VERPR).LV_SUMVERPR = LV_VERPR + LV_SUMVERPR .DATA(LV_WAERS) = GS_ALV-WAERS .LS_COND-COND_VALUE = LV_VERPR. "銷售單價ENDIF.LS_COND-CURRENCY = GS_ALV-WAERS. "統計貨幣
  • LT_COND-CURRENCY =‘CNY’
    LS_CONDX-COND_ST_NO = ‘010’.
    LS_CONDX-COND_COUNT = ‘01’.
    LS_CONDX-COND_TYPE = ‘X’.
    LS_CONDX-COND_VALUE = ‘X’.
    LS_CONDX-CURRENCY = ‘X’.
  • LT_CONDX-CURRENCY =‘X’
    APPEND LS_COND TO LT_COND.
    APPEND LS_CONDX TO LT_CONDX.
    ENDLOOP.
    IF LV_SUMVERPR IS NOT INITIAL .
    LS_COND-ITM_NUMBER = ‘000000’ .
    LS_COND-COND_ST_NO = ‘000’.
    LS_COND-COND_COUNT = ‘00’.
    LS_COND-COND_TYPE = ‘ZR03’. "價格條件
    LS_COND-COND_VALUE = LV_SUMVERPR. "銷售單價
    LS_COND-CURRENCY = LV_WAERS. "統計貨幣
  • LT_COND-CURRENCY =‘CNY’
    LS_COND-ITM_NUMBER = ‘000000’ .
    LS_COND-COND_ST_NO = ‘000’.
    LS_COND-COND_COUNT = ‘00’.
    LS_CONDX-COND_TYPE = ‘X’.
    LS_CONDX-COND_VALUE = ‘X’.
    LS_CONDX-CURRENCY = ‘X’.
  • LT_CONDX-CURRENCY =‘X’
    APPEND LS_COND TO LT_COND.
    APPEND LS_CONDX TO LT_CONDX.
    ENDIF.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'EXPORTINGORDER_HEADER_IN = LW_HEADERORDER_HEADER_INX = LW_HEADERXIMPORTINGSALESDOCUMENT = LV_VBELNTABLESRETURN = LT_RETURNORDER_ITEMS_IN = LT_ITEMORDER_ITEMS_INX = LT_ITEMXORDER_PARTNERS = LT_PARNRORDER_SCHEDULES_IN = LT_SCHDLORDER_SCHEDULES_INX = LT_SCHDLXORDER_CONDITIONS_IN = LT_CONDORDER_CONDITIONS_INX = LT_CONDX. "判斷是否返回有錯誤消息 CLEAR:LV_MESSAGE. LOOP AT LT_RETURN .IF LT_RETURN-TYPE CA 'EAW'.LV_MESSAGE = LV_MESSAGE && LT_RETURN-MESSAGE .DATA(LV_ICON) = ICON_LED_RED .ENDIF. ENDLOOP. IF LV_ICON IS INITIAL .LV_MESSAGE = '創建成功:' && LV_VBELN .LV_ICON = ICON_LED_GREEN . ENDIF. GS_ALV-MESSAGE = LV_MESSAGE . GS_ALV-ICON = LV_ICON . MODIFY GT_ALV FROM GS_ALV TRANSPORTING MESSAGE ICON WHERE BS = GS_ALV-BS AND SEL IS NOT INITIAL .
  • BREAK-POINT.
    CLEAR:GS_ALV,LV_ICON ,LV_MESSAGE.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
    WAIT = ‘X’.
    ENDLOOP.

ENDFORM.
&---------------------------------------------------------------------
*& Form temp_excel_get
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> P_
&---------------------------------------------------------------------
FORM TEMP_EXCEL_GET USING P_OBJID TYPE WWWDATA-OBJID.
DATA:L_OBJDATA LIKE WWWDATATAB,
L_RC LIKE SY-SUBRC.

DATA: L_FULLPATH TYPE STRING,
L_EXTENSION TYPE STRING,
L_FNAME LIKE RLGRAP-FILENAME.

L_EXTENSION = P_OBJID.

PERFORM GET_FILE_NAME USING ‘.xlsx’
‘Excel|*.xlsx;’
CHANGING L_FULLPATH.
IF L_FULLPATH = SPACE.
MESSAGE ‘請選擇下載文件名’ TYPE ‘E’.
ELSE.
L_FNAME = L_FULLPATH.
SELECT SINGLE RELID OBJID
FROM WWWDATA
INTO CORRESPONDING FIELDS OF L_OBJDATA
WHERE RELID = ‘MI’
AND OBJID = P_OBJID .

IF SY-SUBRC NE 0 OR L_OBJDATA-OBJID = SPACE.MESSAGE E001(00) WITH '文件不存在!'. ELSE.CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY = L_OBJDATADESTINATION = L_FNAMEIMPORTINGRC = L_RCCHANGINGTEMP = L_FNAME.IF L_RC NE 0.MESSAGE E001(00) WITH '文件下載失敗!'.ENDIF. ENDIF.

ENDIF.

ENDFORM. "TEMP_EXCEL_GET
&---------------------------------------------------------------------
*& Form get_file_name
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> P_
*& --> P_
*& <-- L_FULLPATH
&---------------------------------------------------------------------
FORM GET_FILE_NAME USING P_EXTENSION
P_FILE_FILTER
CHANGING P_FULLPATH.
DATA: L_FILENAME TYPE STRING,
L_PATH TYPE STRING,
L_FULLPATH TYPE STRING,
L_TITILE TYPE STRING,
L_INIT_DIR TYPE STRING.

CLEAR P_FULLPATH.

L_TITILE = TEXT-T04.
L_INIT_DIR = TEXT-T03.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = L_TITILE
DEFAULT_EXTENSION = ‘.xls’
INITIAL_DIRECTORY = L_INIT_DIR
PROMPT_ON_OVERWRITE = ‘X’
FILE_FILTER = P_FILE_FILTER
CHANGING
FILENAME = L_FILENAME
PATH = L_PATH
FULLPATH = L_FULLPATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

P_FULLPATH = L_FULLPATH.
ENDFORM.

總結

以上是生活随笔為你收集整理的SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。